<?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>150613</bug_id>
          
          <creation_ts>2015-10-27 17:08:37 -0700</creation_ts>
          <short_desc>Rename JSDOMWrapper.impl to JSDOMWrapper.wrapped</short_desc>
          <delta_ts>2015-11-02 03:45:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136992</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-27 17:08:37 -0700</bug_when>
    <thetext>Following on JSDOMWrapper renaming, we may want to rename impl() and m_impl to wrapped()/m_wrapped, in JSDOMWrapper and related classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136995</commentid>
    <comment_count>1</comment_count>
      <attachid>264177</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-27 17:15:26 -0700</bug_when>
    <thetext>Created attachment 264177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136997</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-27 17:16:33 -0700</bug_when>
    <thetext>This is a follow-up of bug 150120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137004</commentid>
    <comment_count>3</comment_count>
      <attachid>264181</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-27 17:24:55 -0700</bug_when>
    <thetext>Created attachment 264181
Updating mm files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137014</commentid>
    <comment_count>4</comment_count>
      <attachid>264184</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-27 17:41:23 -0700</bug_when>
    <thetext>Created attachment 264184
Updating mm files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137470</commentid>
    <comment_count>5</comment_count>
      <attachid>264304</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-28 23:21:31 -0700</bug_when>
    <thetext>Created attachment 264304
Fixing win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137472</commentid>
    <comment_count>6</comment_count>
      <attachid>264305</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-28 23:52:35 -0700</bug_when>
    <thetext>Created attachment 264305
Fixing IDB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138493</commentid>
    <comment_count>7</comment_count>
      <attachid>264567</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-02 01:38:14 -0800</bug_when>
    <thetext>Created attachment 264567
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138501</commentid>
    <comment_count>8</comment_count>
      <attachid>264571</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-02 02:15:48 -0800</bug_when>
    <thetext>Created attachment 264571
Fixing IDBObjectStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138509</commentid>
    <comment_count>9</comment_count>
      <attachid>264571</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 02:50:59 -0800</bug_when>
    <thetext>Comment on attachment 264571
Fixing IDBObjectStore

Rejecting attachment 264571 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
 -c /Volumes/Data/EWS/WebKit/Source/WebCore/bindings/js/JSImageConstructor.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/JSImageConstructor.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/JSIDBObjectStoreCustom.o bindings/js/JSIDBObjectStoreCustom.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/371271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138510</commentid>
    <comment_count>10</comment_count>
      <attachid>264572</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-02 02:54:04 -0800</bug_when>
    <thetext>Created attachment 264572
Fixing IDBObjectStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138517</commentid>
    <comment_count>11</comment_count>
      <attachid>264572</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 03:45:12 -0800</bug_when>
    <thetext>Comment on attachment 264572
Fixing IDBObjectStore

Clearing flags on attachment: 264572

Committed r191887: &lt;http://trac.webkit.org/changeset/191887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138518</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 03:45:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264177</attachid>
            <date>2015-10-27 17:15:26 -0700</date>
            <delta_ts>2015-10-27 17:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150613-20151028011425.patch</filename>
            <type>text/plain</type>
            <size>413727</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1NGIxNDgyYWUxNWJh
ZjBhNzlhZjI3ZjliNTcwYWFmYjE2NGQ2My4uYjJhZTE2NTA1MTBkZWQzNDUwZGIxYjUxZGYzOTQ2
ZWRlZGU2YTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3MyBAQAorMjAxNS0xMC0yNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFw
cGVkIGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBdHRyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXR0cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZm
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xp
c3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
cXVhZEZpbHRlck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCaXF1YWRGaWx0
ZXJOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9wZXJ0eVZhbHVlRmFsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NTU1ZhbHVlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSFRNTENhbnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRMaW5lRGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0V2Via2l0TGluZURh
c2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRh
dGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjphZnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6ZGF0YWJhc2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0Nv
bW1hbmRMaW5lQVBJSG9zdDo6c3RvcmFnZUlkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0bzo6Z2V0UmFuZG9tVmFs
dWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleTo6YWxnb3JpdGhtKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG9LZXlQYWlyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUV2
ZW50OjpkZXRhaWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29r
dXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
YWN0aXZlRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0RE9NV2luZG93KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSFRNTEZvcm1FbGVtZW50T3JOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
Rm9ybURhdGE6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFy
cmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTWltZVR5cGVBcnJheTo6bmFt
ZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6
bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVBsdWdpbkFycmF5OjpuYW1lR2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVBsdWdpbjo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5n
TGlzdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93
blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFsbG93
QWNjZXNzRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2lu
ZG93QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnByaW50RXJyb3JN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9m
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1JpY2hT
b3VyY2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50
ZXJydXB0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJFdmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2lu
ZG93V2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93SW5kZXhlZERCKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvdzo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0RW51bWVyYWJs
ZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJv
cGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
dzo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6d3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjp3cmFwcGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6SlNET01XcmFwcGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNEYXRhQ3VlOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFDdWU6OnNldFZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RhdGFUcmFuc2Zlcjo6dHlwZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6cm90YXRpb25SYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2FtbWEpOgorICAgICAgICAo
V2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBh
c3NBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6
OmFic29sdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6cHJlcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjphcHBlbmQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50RnJhZ21lbnQ6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVu
dEZyYWdtZW50OjphcHBlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRUeXBlOjpiZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6OmFmdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6YmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6YWZ0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNFbGVtZW50OjpyZXBsYWNlV2l0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6
OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNF
dmVudDo6Y2xpcGJvYXJkRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0ZpbGVSZWFkZXI6OnJlc3VsdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJy
ZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3Np
dGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNh
bGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0
aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBw
b3J0c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6dG9E
YXRhVVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTERvY3VtZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENhbGxpbmdEb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgIChX
ZWJDb3JlOjpkb2N1bWVudFdyaXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEVsZW1lbnQ6OnB1c2hFdmVu
dEhhbmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEZyYW1lRWxlbWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hU
TUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0
RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRF
bGVtZW50OjpzZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNI
VE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TE1lZGlhRWxlbWVudDo6c2V0Q29udHJvbGxlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbjo6aW5kZXhTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTZWxlY3RF
bGVtZW50OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MU2VsZWN0RWxlbWVudDo6
aW5kZXhTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNv
bnRlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rv
cnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpzdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RT
dG9yZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNo
b3dDb250ZXh0TWVudSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
ZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6
OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8p
OgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjp2b2x1bWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTWVzc2FnZUV2ZW50OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUluaXRNZXNz
YWdlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY2lzaW9u
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6ZGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbk9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6Omlu
c2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlcGxhY2VDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvTm9kZU9yU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3Nj
aWxsYXRvck5vZGU6OnNldFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFubmVyTm9k
ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdN
b2RlbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cGx1Z2luU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBsdWdpbkVsZW1lbnRHZXRDYWxsRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUG9wU3RhdGVFdmVudDo6
c3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JUQ1N0YXRzUmVzcG9uc2U6Om5hbWVHZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTVkdMZW5ndGhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1N0b3JhZ2U6Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTU3R5bGVTaGVldDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86
OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmRlY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTdWJ0bGVDcnlwdG86OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNy
eXB0bzo6d3JhcEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dW53cmFw
S2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFja0N1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFja0N1ZTo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFjazo6c2V0S2luZCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1RleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFj
a0xpc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVHJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1RyYWNrRXZlbnQ6OnRyYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VmlkZW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2s6OnNl
dExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliM2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyOjpwb3N0TWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1dvcmtlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OndyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
WE1MSHR0cFJlcXVlc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2Up
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hT
TFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhl
Y3V0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb21XaW5kb3dG
cm9tRXhlY1N0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbik6
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKE5hdGl2ZVRvSlNW
YWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNp
dGluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25Bbm90aGVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVj
dG9yT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXQ6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXRPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFeGNl
cHRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5h
bGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
Mik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZU93bmVyOjpm
aW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25l
cjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWlu
aXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRl
YWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQnl0ZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNp
Z25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0T2JqQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZs
ZWN0ZWRTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZElu
dGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29s
ZWFuQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0
ZTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11
dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialN0cmljdEZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5
dGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9uZ0xvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
U2VxdWVuY2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1
bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVt
b3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0
YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRp
b25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
Myk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
MCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGhPcHRpb25hbFBhcmFtZXRlcjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21T
dHJpbmdMaXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51
bGxhYmxlU2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uR2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RG
dW5jdGlvbldpdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
blByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE9iak93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPYmo6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZUZ1bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ2FjaGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNo
ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdM
b25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVm
c0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVBcnJheUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
QXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzT3du
ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjp0b1dyYXBw
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc2F0dHJpYnV0ZVJlYWRvbmx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTYXR0cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0
cmlidXRlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHlPd25lcjo6ZmluYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6dG9XcmFwcGVkKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1l
dGhvZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2Ny
aXB0U3RhdGUpOgorCiAyMDE1LTEwLTI1ICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtUZXhNYXBdIEZpeCBhIG1pc3VzZWQgZmxhZyBmb3IgR3N0R0wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAxZWYzNzExMWM3MjNhZmU2NWRhOGZhYWI5NzIzNWMwNzc4MTMwYTZiLi4wYWU5
ZTNjYjI4ZTk5MWRkY2QwYTYzODY2MjU4NDhmOWQxMTdkMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTUtMTAtMjcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KKworICAgICAgICBSZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8gSlNET01XcmFw
cGVyLndyYXBwZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmZyYW1lRm9yQ29udGV4dCk6IFJlbmFtaW5nIGltcGwoKSB0byB3cmFwcGVkKCku
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb3VudGVyVmFsdWUpOiBEaXR0by4KKwogMjAx
NS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSysgYnVpbGQgYWZ0ZXIgcjE5MTU0My4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCmluZGV4IDQyZjEyZjBlZDJkMTNj
NGU3NWUwNjRhMzM2YmI3M2MwYWQ1MzVkMzUuLmQ0NWNmNmQyYzhhOGVlMmFkN2MzN2FkYmRlNzA4
ZjRkZGU0YTViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0
ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9t
LmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNBdHRy
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLm93bmVyRWxlbWVudCgpKQorICAgIGlm
IChFbGVtZW50KiBlbGVtZW50ID0gd3JhcHBlZCgpLm93bmVyRWxlbWVudCgpKQogICAgICAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3Vz
dG9tLmNwcAppbmRleCAxYzljMzI4YjEyMTI1ZDliYmUzOTJjZTMxZTI2MzgxNmUyZjEzNGVkLi4z
M2Y3NjhlM2M4MzQ1M2RhZTk3NTAyZjUzNDgzY2QzZGQyOWJlODdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVD
dXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnNldEJ1ZmZlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGlmICghaW1wbCgpLnNldEJ1ZmZlcihidWZmZXIpKQorICAg
IGlmICghd3JhcHBlZCgpLnNldEJ1ZmZlcihidWZmZXIpKQogICAgICAgICBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIkF1ZGlvQnVmZmVy
IHVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKaW5kZXggMzZmMzFkOWQ2
MmVjZDc4ZmQxYWFmMTkxYzIyYjlhNTUwMDIyNzczZC4uMTUzMTgxNWFjNjM3NWQ5NjBmZWIyMzc1
ZjVmYzNlMTU3YzZhOWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBKU0F1ZGlvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkp
KTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIHZv
aWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmco
JnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0S2luZChzdHJpbmcpOworICAgIHdyYXBwZWQo
KS5zZXRLaW5kKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBKU0F1ZGlvVHJhY2s6
OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYg
c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFu
Z3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9t
LmNwcAppbmRleCA4MzFlNDI1Yzg2NWQ0Yjg1N2QzYWM0MGE4ZWU5N2FmYmFhZDI1YzNhLi42ZmQx
YTUwNDAyNTBlN2Q0Nzc2YzZlOThmNTQ2MmU5ODNiMTU4ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNBdWRpb1RyYWNrTGlzdDo6
dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKaW5kZXggZjZmYTg2ZjVjMzc0ZmViYmMwYjgxYmZm
Y2FmYzVlZWRjYTQxYjMxZS4uOTIxYmFlZjNiZGUyOTNkOGExN2MyMzZmMjY0ZTIxMWI5OGJjNjBh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJO
b2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZp
bHRlck5vZGVDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgSlNCaXF1YWRGaWx0ZXJO
b2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAjaWYgRU5BQkxF
KExFR0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAg
dWludDMyX3QgdHlwZSA9IHZhbHVlLnRvVUludDMyKCZzdGF0ZSk7Ci0gICAgICAgIGlmICghaW1w
bCgpLnNldFR5cGUodHlwZSkpCisgICAgICAgIGlmICghd3JhcHBlZCgpLnNldFR5cGUodHlwZSkp
CiAgICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlw
ZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEpTQmlxdWFkRmlsdGVyTm9k
ZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmICh2YWx1
ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdmFsdWUudG9TdHJpbmcoJnN0
YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICAgICAgaWYgKHR5cGUgPT0gImxvd3Bhc3MiIHx8IHR5
cGUgPT0gImhpZ2hwYXNzIiB8fCB0eXBlID09ICJiYW5kcGFzcyIgfHwgdHlwZSA9PSAibG93c2hl
bGYiIHx8IHR5cGUgPT0gImhpZ2hzaGVsZiIgfHwgdHlwZSA9PSAicGVha2luZyIgfHwgdHlwZSA9
PSAibm90Y2giIHx8IHR5cGUgPT0gImFsbHBhc3MiKSB7Ci0gICAgICAgICAgICBpbXBsKCkuc2V0
VHlwZSh0eXBlKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5zZXRUeXBlKHR5cGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggZmYyNjMwNzg4MzFmM2M5NzExOWM3YTA5
OWE0NGQwMjJjZjNiOWFlMi4uMGQzMzc3Nzk2OTMxMTBmY2E5N2JjYTFjYzMxZTY5ODIxZDgxZDYz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NTU1J1bGU6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDU1NSdWxlKiBydWxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcAppbmRleCA4
OWU5OTIxNTA2ZmY1MGU4MWUwYzhiOGI4MzlmMmU5ODZiZGE5M2I0Li4wMjg0NDRmZTNkZDkxOGJj
MGQwODA1MGU5ZGJjMjg2MjkyN2E1ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcApAQCAtNDEsOSArNDEsOSBAQCBib29sIEpT
Q1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYQogICAgIEpTQ1NTUnVsZUxpc3QqIGpzQ1NTUnVsZUxpc3QgPSBqc0Nh
c3Q8SlNDU1NSdWxlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBpZiAoIWpz
Q1NTUnVsZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0ganNDU1NSdWxlTGlzdC0+aW1w
bCgpLnN0eWxlU2hlZXQoKSkKKyAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGpz
Q1NTUnVsZUxpc3QtPndyYXBwZWQoKS5zdHlsZVNoZWV0KCkpCiAgICAgICAgIHJldHVybiB2aXNp
dG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0eWxlU2hlZXQpKTsKLSAgICBpZiAoQ1NTUnVs
ZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QtPmltcGwoKS5pdGVtKDApKQorICAgIGlmIChDU1NS
dWxlKiBjc3NSdWxlID0ganNDU1NSdWxlTGlzdC0+d3JhcHBlZCgpLml0ZW0oMCkpCiAgICAgICAg
IHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGNzc1J1bGUpKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCBkZTJmOTA3MzQ1YTc2OGY1
Y2VmMzY4ODQ5NjI3Y2I0MmQ1ZTQ1MWVjLi45MWJhMzEyMjk5MDlkNjQ4ZmM5MGE3ZGY0MmYzYTVl
NjkyM2NlOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3QoJmltcGwoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZ3
cmFwcGVkKCkpKTsKIH0KIAogY2xhc3MgQ1NTUHJvcGVydHlJbmZvIHsKQEAgLTI3OCw3ICsyNzgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgZ2V0UHJvcGVydHlWYWx1ZUZhbGxiYWNrKEV4ZWNT
dGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcgogewogICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBp
cyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLAogICAgIC8vIGl0IGNh
biBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFsdWUuCi0gICAgcmV0dXJuIGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaW5kZXgpKSk7CisgICAgcmV0dXJuIGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPndyYXBwZWQoKS5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaW5kZXgpKSk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0
YXRlKiBleGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmosIHVuc2lnbmVkIHByb3Bl
cnR5SUQpCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3Bl
cnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3QKICAgICAv
LyBwb3NUb3AgcmV0dXJucyAiQ1NTIHRvcCIgYXMgbnVtYmVyIHZhbHVlIGluIHVuaXQgcGl4ZWxz
IF9pZl8gaXRzIGEKICAgICAvLyBwb3NpdGlvbmVkIGVsZW1lbnQuIGlmIGl0IGlzIG5vdCBhIHBv
c2l0aW9uZWQgZWxlbWVudCwgcmV0dXJuIDAKICAgICAvLyBmcm9tIE1TSUUgZG9jdW1lbnRhdGlv
biBGSVhNRTogSU1QTEVNRU5UIFRIQVQgKERpcmspCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0g
dGhpc09iai0+aW1wbCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhp
c09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CiAgICAgaWYgKHYpIHsKICAgICAgICAgaWYgKHYt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNf
cG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2KS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3RhdGUqIGV4ZWMs
IEpTQ1NTU3QKIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNpZ25lZCBwcm9w
ZXJ0eUlEKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPmltcGwoKS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVy
dHlJRCkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPndyYXBwZWQoKS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVy
dHlJRCkpOwogICAgIGlmICh2KQogICAgICAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywg
di0+Y3NzVGV4dCgpKTsKIApAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xh
cmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8ucHJvcGVydHlJ
RCk7Ci0gICAgaW1wbCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgcHJvcFZhbHVl
LCBpbXBvcnRhbnQsIGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9w
ZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1MywxMSArMzUzLDExIEBAIEpTVmFs
dWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBpbXBsKCkuZ2V0
UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3Nz
VmFsdWUgPSB3cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOwogICAg
IGlmICghY3NzVmFsdWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIGdsb2JhbE9i
amVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5hZGQoY3NzVmFsdWUuZ2V0KCksIHJvb3Qo
JmltcGwoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKCkuCisg
ICAgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkubV9jc3NWYWx1ZVJvb3RzLmFkZChjc3NWYWx1ZS5n
ZXQoKSwgcm9vdCgmd3JhcHBlZCgpKSk7IC8vIEJhbGFuY2VkIGJ5IEpTQ1NTVmFsdWVPd25lcjo6
ZmluYWxpemUoKS4KICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGUKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0
aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09i
amVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
VmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1
c3RvbS5jcHAKaW5kZXggZWQ1MTI1MzNlZDMzYTM5MjI1MmJmNjQ1MmMyMWViYzlhZWE5YTE3Ni4u
ZDhmNDcwNWFlYmQyYWM0ZjcyYWNiMDliMDI4YmQ1MzczMjEwMmVhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgYm9vbCBKU0NTU1ZhbHVlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKICAgICBpZiAoIWpzQ1NTVmFsdWUtPmhhc0N1c3Rv
bVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIERPTVdyYXBwZXJXb3Js
ZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB2
b2lkKiByb290ID0gd29ybGQtPm1fY3NzVmFsdWVSb290cy5nZXQoJmpzQ1NTVmFsdWUtPmltcGwo
KSk7CisgICAgdm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nzc1ZhbHVlUm9vdHMuZ2V0KCZqc0NTU1Zh
bHVlLT53cmFwcGVkKCkpOwogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKQEAgLTYwLDggKzYw
LDggQEAgdm9pZCBKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTQ1NTVmFsdWUqIGpzQ1NTVmFs
dWUgPSBqc0Nhc3Q8SlNDU1NWYWx1ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBE
T01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNv
bnRleHQpOwotICAgIHdvcmxkLm1fY3NzVmFsdWVSb290cy5yZW1vdmUoJmpzQ1NTVmFsdWUtPmlt
cGwoKSk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLT5pbXBsKCksIGpz
Q1NTVmFsdWUpOworICAgIHdvcmxkLm1fY3NzVmFsdWVSb290cy5yZW1vdmUoJmpzQ1NTVmFsdWUt
PndyYXBwZWQoKSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLT53cmFw
cGVkKCksIGpzQ1NTVmFsdWUpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUqIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCmluZGV4IGI5OTNiZGMyNDJiNDJjNzkzYzIxZTlkMDQ3MjE5NDZiMzkw
Y2U3YjcuLmRhNzU4MDJlZGZmYTE2NzAyOGVkOGUwYjEyNGFjYTFjNDg0MzIzZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgc3RhdGljIENhbnZhc1N0
eWxlIHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFsdWUpCiAgICAgICAg
IHJldHVybiBDYW52YXNTdHlsZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2
YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNDYW52YXNHcmFkaWVudDo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNHcmFkaWVudCo+
KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpT
Q2FudmFzR3JhZGllbnQqPihvYmplY3QpLT53cmFwcGVkKCkpOwogICAgIGlmIChvYmplY3QtPmlu
aGVyaXRzKEpTQ2FudmFzUGF0dGVybjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1N0
eWxlKCZqc0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2JqZWN0KS0+aW1wbCgpKTsKKyAgICAgICAg
cmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2JqZWN0KS0+d3Jh
cHBlZCgpKTsKICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKIH0KIApAQCAtNjcsMTIgKzY3LDEy
IEBAIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbW1pdChFeGVjU3RhdGUm
KQogCiBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZShFeGVj
U3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KCksIGltcGwoKS5zdHJva2VTdHlsZSgpKTsKKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuc3Ryb2tlU3R5bGUoKSk7CiB9CiAKIHZvaWQgSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJiBjb250ZXh0ID0g
aW1wbCgpOworICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9IHdyYXBwZWQo
KTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTgyLDEyICs4MiwxMiBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
dHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuZmls
bFN0eWxlKCkpOworICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBw
ZWQoKS5maWxsU3R5bGUoKSk7CiB9CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldEZpbGxTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9IGltcGwoKTsKKyAgICBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKHZhbHVlLmlzU3Ry
aW5nKCkpIHsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYXNTdHJpbmcodmFsdWUpLT52
YWx1ZSgmc3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2Vi
a2l0TGluZURhc2goRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiBkYXNoID0gaW1wbCgpLmdldExpbmVEYXNoKCk7CisgICAgY29uc3QgVmVjdG9yPGZs
b2F0PiYgZGFzaCA9IHdyYXBwZWQoKS5nZXRMaW5lRGFzaCgpOwogCiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgbGlzdDsKICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBk
YXNoLmVuZCgpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFdlYmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsCiAg
ICAgICAgIGRhc2guYXBwZW5kKGVsZW0pOwogICAgIH0KIAotICAgIGltcGwoKS5zZXRXZWJraXRM
aW5lRGFzaChkYXNoKTsKKyAgICB3cmFwcGVkKCkuc2V0V2Via2l0TGluZURhc2goZGFzaCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4
IGU1ZGQ2ZTg4MTI3NmM4NTYwYWZiZDVkOTUxM2IyMDdmMjIyZGRkZmQuLjdmNTA0MzVmNWE2M2Qy
NThkMmMwM2ZjY2EwZjM3ODVkNmI5ZjRiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApA
QCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkuY2FudmFzKCkpKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuY2FudmFzKCkpKTsKIH0K
IAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBvYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAppbmRl
eCBjYjgzMWQwNGNmYjhlZjg1Njg0NzZiZDhmZGUzZjhmODJlOWE3YzkxLi42MDE3ZjFmNjA5ZmM2
ZGYzZWJkOTUzZTQ4NTAzMzhhYmQzZDkxYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmJlZm9yZShFeGVj
U3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5i
ZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLmJl
Zm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTQ1LDcgKzQ1
LDcgQEAgSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQog
SlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBKU0NoYXJhY3Rl
ckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6
cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpbXBsKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBl
Yyk7CisgICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRl
KSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCmluZGV4IGIwNjVkNWNmZjFjZjFiNTA2NDc0
NTk2MmJkY2Q4ZDYxZGY3NjdmNTIuLjU1Yzc5MjEyYTEyNDBmMmZiYmI4MGZiNmZlMGY1NGNjZGRl
MmI3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExp
bmVBUElIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nv
bW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0ZWRPYmplY3Qo
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxl
T2JqZWN0KiBvYmplY3QgPSBpbXBsKCkuaW5zcGVjdGVkT2JqZWN0KCk7CisgICAgQ29tbWFuZExp
bmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0ID0gd3JhcHBlZCgpLmluc3BlY3Rl
ZE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6Omdl
dEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCiAgICAgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiBsaXN0ZW5lcnNBcnJheTsK
LSAgICBpbXBsKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3RlbmVyc0FycmF5KTsK
KyAgICB3cmFwcGVkKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3RlbmVyc0FycmF5
KTsKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdGVuZXJzQXJyYXkuc2l6ZSgpOyArK2kp
IHsKQEAgLTEyOSw3ICsxMjksNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNw
ZWN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA+PSAy
KSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG9iamVjdChzdGF0ZS52bSgpLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGhpbnRzKHN0YXRlLnZtKCksIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKLSAgICAg
ICAgaW1wbCgpLmluc3BlY3RJbXBsKG9iamVjdC50b0luc3BlY3RvclZhbHVlKCZzdGF0ZSksIGhp
bnRzLnRvSW5zcGVjdG9yVmFsdWUoJnN0YXRlKSk7CisgICAgICAgIHdyYXBwZWQoKS5pbnNwZWN0
SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpLCBoaW50cy50b0luc3BlY3RvclZh
bHVlKCZzdGF0ZSkpOwogICAgIH0KIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6OmRhdGFiYXNlSWQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIAogICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IEpTRGF0YWJhc2U6OnRv
V3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKGRhdGFiYXNlKQot
ICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbXBsKCkuZGF0YWJhc2VJ
ZEltcGwoZGF0YWJhc2UpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0
ZSwgd3JhcHBlZCgpLmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7CiAKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVB
UElIb3N0OjpzdG9yYWdlSWQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIFN0b3JhZ2UqIHN0b3Jh
Z2UgPSBKU1N0b3JhZ2U6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUs
IGltcGwoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKCZzdGF0ZSwgd3JhcHBlZCgpLnN0b3JhZ2VJZEltcGwoc3RvcmFnZSkpOwogCiAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0N1c3RvbS5jcHAKaW5kZXggZDA3YmVhY2ExNWE1NDcyYjQ2OTBhYWM0NWMxYWQ3
NTRjZjVkOWEzOS4uNjg3ZWNkMWI1YjU3M2ZiYmIyYjUwOTlkYzdlYjFmNDU4Nzg5NmE3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuZ2V0UmFuZG9tVmFsdWVzKGFycmF5QnVmZmVy
Vmlldy5nZXQoKSwgZWMpOworICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1ZXMoYXJyYXlCdWZm
ZXJWaWV3LmdldCgpLCBlYyk7CiAKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9LZXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9LZXlDdXN0b20uY3BwCmluZGV4IGFkODFlNGQ0NWIxZTYxZWFlMTg3MGFhZWM3M2RlM2FlNWRi
Yzg5ZjUuLjU4NTk0YmVmMmRiMjlhMmYwOTc1ZWM5OWZmY2FmODQwNTFkYjlkNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0NyeXB0b0tleTo6YWxn
b3JpdGhtKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBKU0NyeXB0b0FsZ29y
aXRobUJ1aWxkZXIgYnVpbGRlcigmc3RhdGUpOwotICAgIGltcGwoKS5idWlsZEFsZ29yaXRobURl
c2NyaXB0aW9uKGJ1aWxkZXIpOworICAgIHdyYXBwZWQoKS5idWlsZEFsZ29yaXRobURlc2NyaXB0
aW9uKGJ1aWxkZXIpOwogICAgIHJldHVybiBidWlsZGVyLnJlc3VsdCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcApp
bmRleCA5ZmRiODliYzI3ZjY4YTIyYTMyZDljOTk0YmVmMjhkYzEyMzI5NzlmLi5iNGFkMDQ2MjJj
ZmZkZjI4ODI1MDNkNTYyODk1MzBjYTE5M2M1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAKQEAgLTM0LDggKzM0LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ3J5cHRvS2V5UGFpcjo6dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QoaW1wbCgpLnB1YmxpY0tleSgpKTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QoaW1wbCgpLnByaXZhdGVLZXkoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHdy
YXBwZWQoKS5wdWJsaWNLZXkoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHdyYXBwZWQo
KS5wcml2YXRlS2V5KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCmluZGV4IGFm
MTQ5ZGFhZjA1NDI1MTIzZmU4ODY5NDk5ZDViN2JlZjU4MDNlNWEuLmM1NTZjOWUyZTUwMGE1NzU3
YjcyYzMwYmRhZjVjNjBiNTFiMGUwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIEpTVmFsdWUgSlNDdXN0b21FdmVudDo6ZGV0YWlsKEV4ZWNTdGF0
ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgQ3VzdG9tRXZlbnQmIGV2ZW50ID0gaW1wbCgpOworICAg
IEN1c3RvbUV2ZW50JiBldmVudCA9IHdyYXBwZWQoKTsKICAgICAKICAgICBpZiAoZXZlbnQuZGV0
YWlsKCkuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAK
aW5kZXggYjI4N2M2Yjg5OTYyN2I0MTgwODk5OGIyNjc2YTkxZTViNzgxMjUyYS4uNjBjNTdmOGQz
YTE5M2Q4MmRjM2M2MTE0NTFkNDhlNjI3MjMzYmQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtODEsNyAr
ODEsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVS
SShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICAgICAgY2FsbFR5cGUgPSBtX2N1c3RvbVJlc29s
dmVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtX2N1c3RvbVJlc29sdmVyLmdldCgpLCBj
YWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTQzMTI+IEpTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkgQ29uc29sZSBNZXNzYWdlIHNob3VsZCBp
bmNsdWRlIExpbmUsIENvbHVtbiwgYW5kIFNvdXJjZVVSTAotICAgICAgICAgICAgaWYgKFBhZ2VD
b25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxPYmplY3QtPmltcGwoKS5jb25zb2xlKCkp
CisgICAgICAgICAgICBpZiAoUGFnZUNvbnNvbGVDbGllbnQqIGNvbnNvbGUgPSBtX2dsb2JhbE9i
amVjdC0+d3JhcHBlZCgpLmNvbnNvbGUoKSkKICAgICAgICAgICAgICAgICBjb25zb2xlLT5hZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVy
YWwoIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZlIGEgbG9va3VwTmFtZXNwYWNlVVJJIG1l
dGhvZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDMwMmM3YTlhMDY3
NGEwZjhlMGRhMWMxY2VjMDM3YTU0ZDYyNDkzODAuLjIwZWY2MDkxMzE5MDZlMzhmM2QyMzdlNzJl
YzlhMjdmNDM1ZDMxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogY2FjaGVkCiAKICAg
ICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoSlNET01XaW5kb3cq
IHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpKSB7Ci0g
ICAgICAgIGlmICghd2luZG93LT5pbXBsKCkuaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkp
CisgICAgICAgIGlmICghd2luZG93LT53cmFwcGVkKCkuaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZy
YW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTUsMTIgKzUxNSwxMiBA
QCB1aW50NjRfdCB0b1VJbnQ2NChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogCiBET01XaW5kb3cmIGFjdGl2ZURPTVdpbmRvdyhF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOworICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKTsKIH0KIAogRE9NV2luZG93JiBmaXJz
dERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3co
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOworICAgIHJldHVybiBhc0pTRE9N
V2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
RG9jdW1lbnQqIHRhcmdldERvY3VtZW50LCBTZWN1cml0eVJlcG9ydGluZ09wdGlvbiByZXBvcnRp
bmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcAppbmRleCAxM2ZkYjUyZDZjMjUzMTlj
MTkzOGE3NDI5MjI0MjIwNmFjZmVjNjc4Li5iMDQ4YWY5MTNkMmZiOTY3MTZkNTE1YWYzMDVlYmI5
NDZiNjY3NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZv
cm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZv
cm1EYXRhQ3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHRvSFRNTEZvcm1FbGVtZW50T3JOdWxsKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoSlNIVE1MRm9ybUVsZW1l
bnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3QodmFsdWUp
KS0+aW1wbCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoSlNIVE1MRm9y
bUVsZW1lbnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3Qo
dmFsdWUpKS0+d3JhcHBlZCgpIDogbnVsbHB0cjsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU0RPTUZvcm1EYXRhKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTY0LDkg
KzY0LDkgQEAgSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZTsKICAgICAgICAgICAgIGlmIChzdGF0ZS5hcmd1
bWVudENvdW50KCkgPj0gMyAmJiAhc3RhdGUuYXJndW1lbnQoMikuaXNVbmRlZmluZWRPck51bGwo
KSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN0YXRlLmFyZ3VtZW50KDIpLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgICAgICAgICBpbXBsKCkuYXBwZW5kKG5hbWUs
IEpTQmxvYjo6dG9XcmFwcGVkKHZhbHVlKSwgZmlsZW5hbWUpOworICAgICAgICAgICAgd3JhcHBl
ZCgpLmFwcGVuZChuYW1lLCBKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSksIGZpbGVuYW1lKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpbXBsKCkuYXBwZW5kKG5hbWUsIHZhbHVlLnRvU3Ry
aW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgICAgICAgICAgd3JhcHBlZCgpLmFwcGVu
ZChuYW1lLCB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKICAgICB9CiAK
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCmluZGV4IDQzMTJhZTI3Njk1
ZTI4NmY3NzkyYjQwZTNkZDVjNzg2ZTgzNjljMDIuLjc1OGNiNThkMmIwZmM2ZDA1YWZhYjViMTk2
YmJjNmE5NzNlYmRiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NTWltZVR5cGVBcnJheTo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQog
ewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0
ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAKaW5k
ZXggMGRkNTQ1MTIxN2RjODA4ZGQzZTlmNTJhYmQyYjRmZmNkNjRmOGIzZi4uNGZmMTI2MjkyN2Nk
Y2FkYzJhYTJhOWViYjA2YTQxZDQzMDgzMDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNET01OYW1l
ZEZsb3dDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byBpdGVtID0gaW1wbCgp
Lm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAg
ICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJy
YXlDdXN0b20uY3BwCmluZGV4IDI2NjlkODM3ZGYyOTM0NjUyMzVhODk0MjUxNDJlZjZjMTc0OTgz
MDYuLjUzYjRiNDU3MzI3M2U1MjM0ZGIzNjhkMGIwNmI1OTVjYjI5ZGM0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3Bw
CkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNET01QbHVn
aW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBp
dGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCmluZGV4
IDFhNzU4NmRiZmZjMDMyM2I4MTFiNTU3ZTM5ZjU1OGI3MGJjZjAzZTcuLmNjZmNhMzQ5ZjJmZGY4
NzQ0ZWRhODgzYTA5MjlhZGVhYzViMjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTVBsdWdpbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1
dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKaW5kZXggZmQ0MDFiMjkwNWY2OTFmNmRmZmZkYjVk
ODVkZDQyNTM0YWRmMjg5Yi4uNWJkMzNjYjJlNTAzODNjYjczZWZhN2IyMWVlNWM2MWI3YjZlYWEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBKU0RPTVN0cmluZ0xpc3Q6OnRvV3JhcHBlZChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTRE9NU3RyaW5n
TGlzdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01TdHJpbmdMaXN0Kj4o
YXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVN0
cmluZ0xpc3QqPihhc09iamVjdCh2YWx1ZSkpLT53cmFwcGVkKCk7CiAKICAgICBpZiAoIWlzSlNB
cnJheSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4IDlhZjg0NWMx
ODIwYjZhNDQ5MTg5MzRlZTMxMDIxNWU2OGQ3NGQzNTUuLjIyNzFmZDlhYjlhN2NhZDBlM2EzYjU4
YzliOTBlMzg3ZjA4MDk3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBKU0RPTVN0
cmluZ01hcDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHIKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBib29sIG5hbWVJc1ZhbGlkOwotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaXRlbSA9IGltcGwoKS5pdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSks
IG5hbWVJc1ZhbGlkKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGl0ZW0gPSB3cmFwcGVkKCku
aXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lSXNWYWxpZCk7CiAg
ICAgaWYgKG5hbWVJc1ZhbGlkKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgUmVhZE9u
bHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0
ZW0pKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgSlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwotICAg
IHRoaXNPYmplY3QtPmltcGwoKS5nZXROYW1lcyhuYW1lcyk7CisgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZXNbaV0pKTsKQEAg
LTY1LDcgKzY1LDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIEpTRE9NU3RyaW5nTWFw
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oY2VsbCk7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gdGhpc09iamVj
dC0+aW1wbCgpLmRlbGV0ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7
CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPndyYXBwZWQoKS5kZWxldGVJdGVtKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCiBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGluZGV4KQpAQCAtODMsNyArODMsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCku
c2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwg
ZWMpOworICAgIHdyYXBwZWQoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
ICAgICByZXR1cm4gIWVjOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCmluZGV4IGJkZDQ4Nzc4NDllY2E3Y2NjOTFiYjZkYTVi
YzQzZDE2NjI4ZGRkY2UuLjU0Zjc1ZDBhMTllNjRlNzI1ZDU0YjA5NDMxMDdmNjA5ZTI1M2JkMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgSlNWYWx1ZSBKU0RPTVRva2VuTGlzdDo6dG9nZ2xl
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgT3B0aW9uYWw8Ym9vbD4gZm9yY2UgPSBzdGF0ZS5hcmd1
bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gTnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+KHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUuaGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsKCkudG9nZ2xlKHRva2VuLCBmb3JjZSwg
ZWMpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih3cmFwcGVkKCkudG9nZ2xlKHRv
a2VuLCBmb3JjZSwgZWMpKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKaW5kZXggYmRkYzIwY2ZlNjI3NmQ1NmJjY2NkOTk3MWM0NmI1ZmQyOTU4Nzhl
ZS4uZjE3NjRlMTcwNDdiZjM4YzM5ZTAzNjY5ODc3MDU4OTZiYTYyZTk4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC02MCw3ICs2MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NG
cm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhleGVjLCBhc0pTRE9NV2luZG93KHRoaXNPYmplY3QpLT5pbXBsKCkpOworICAgIHJldHVybiBC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgYXNKU0RP
TVdpbmRvdyh0aGlzT2JqZWN0KS0+d3JhcHBlZCgpKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpT
RE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0Ojpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dCYXNlKSB9OwpAQCAtNzAs
NyArNzAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6
OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaAogSlNET01XaW5kb3dCYXNlOjpKU0RP
TVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01X
aW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBKU0RPTUdsb2Jh
bE9iamVjdCh2bSwgc3RydWN0dXJlLCAmc2hlbGwtPndvcmxkKCksICZzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKQogICAgICwgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzKCh3aW5kb3cgJiYgd2lu
ZG93LT5mcmFtZSgpKSA/IElzV2F0Y2hlZCA6IElzSW52YWxpZGF0ZWQpCi0gICAgLCBtX2ltcGwo
d2luZG93KQorICAgICwgbV93cmFwcGVkKHdpbmRvdykKICAgICAsIG1fc2hlbGwoc2hlbGwpCiAg
ICAgLCBtX3ByaXZhdGVGdW5jdGlvbnModm0pCiB7CkBAIC0xMzEsMjUgKzEzMSwyNSBAQCB2b2lk
IEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIHZvaWQgSlNET01XaW5k
b3dCYXNlOjp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAgQVNTRVJUKG1faW1wbC0+ZG9jdW1lbnQo
KSk7CisgICAgQVNTRVJUKG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSk7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gZ2xvYmFsRXhlYygpOwotICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3Vj
aFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1
bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX2ltcGwtPmRvY3VtZW50KCkpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOworICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9p
bnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1bWVudCwgdG9K
UyhleGVjLCB0aGlzLCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ltcGwtPmRvY3VtZW50
KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKTsKIH0KIAogdm9pZCBKU0RPTVdp
bmRvd0Jhc2U6OnByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3QK
IHsKLSAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKGltcGwoKS5mcmFtZSgpLCBtZXNzYWdl
KTsKKyAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHdyYXBwZWQoKS5mcmFtZSgpLCBtZXNz
YWdlKTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dCYXNlKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2JqZWN0KTsK
LSAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIEpTRE9N
V2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVj
dCkKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dCYXNlKiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2JqZWN0KTsKLSAg
ICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5MiwxNiArMTkyLDE2IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldo
ZW5DbG9zaW5nUGFnCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dC
YXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2Jq
ZWN0KTsKLSAgICBBU1NFUlQodGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpOwotICAgIFBhZ2Uq
IHBhZ2UgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+cGFnZSgpOworICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSk7CisgICAgUGFnZSogcGFnZSA9IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpLT5wYWdlKCk7CiAgICAgcmV0dXJuIHNob3VsZEludGVycnVw
dFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJzaW9uV2hlbkNsb3NpbmdQYWdlKHBhZ2UpOwog
fQogCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGlt
ZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2lu
ZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+
KG9iamVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKTsKLSAgICBQ
YWdlKiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnBhZ2UoKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpOworICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgpOwogCiAgICAgaWYgKHNob3VsZEludGVy
cnVwdFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJzaW9uV2hlbkNsb3NpbmdQYWdlKHBhZ2Up
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBib29sIEpTRE9NV2lu
ZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25zdCBKU0dsb2Jh
bE9iamVjdCogbwogUnVudGltZUZsYWdzIEpTRE9NV2luZG93QmFzZTo6amF2YVNjcmlwdFJ1bnRp
bWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9N
V2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFz
ZSo+KG9iamVjdCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFJ1bnRpbWVGbGFncygpOwogICAgIHJldHVy
biBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CkBAIC0zMjUsNyAr
MzI1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50
c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpT
RE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFt
ZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIEpTRE9NV2luZG93QmFz
ZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBs
KCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1v
ZHVsZUxvYWRlcigpLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlTmFtZSwgaW1w
b3J0ZXJNb2R1bGVLZXkpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVm
ZXJyZWQgPSBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGpzVW5kZWZpbmVk
KCkpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2lu
ZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0CiBKU0M6OkpT
SW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSBtb2R1bGVLZXkpCiB7CiAgICAgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoUmVm
UHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS5kb2N1bWVudCgpKQor
ICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgp
LmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBkb2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPmZl
dGNoKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlS2V5KTsKICAgICBKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVj
dChleGVjLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTM0Myw3ICszNDMsNyBAQCBKU0M6OkpTSW50ZXJu
YWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9i
YWxPYmplY3QqCiBKU0M6OkpTVmFsdWUgSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJFdmFs
dWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkKQog
ewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2lu
ZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1l
bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5ldmFsdWF0ZShnbG9iYWxPYmplY3Qs
IGV4ZWMsIG1vZHVsZUtleSwgbW9kdWxlUmVjb3JkKTsKICAgICByZXR1cm4gSlNDOjpqc1VuZGVm
aW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAppbmRleCAxMDc2NDBjMTc2OGZiN2Q4MmU3OTRiMTA2ZjAyM2IyOTE0Mzg5ZjlmLi5kNjk5YTVh
ZTU3YjdmNzIyZWFiYTQ4ODI3MDZjMWE0ZTEwMWYzY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAK
LSAgICAgICAgRE9NV2luZG93JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQorICAg
ICAgICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFwcGVkOyB9CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKIAogICAgICAgICAvLyBDYWxsZWQganVzdCBiZWZvcmUgcmVtb3ZpbmcgdGhpcyB3aW5k
b3cgZnJvbSB0aGUgSlNET01XaW5kb3dTaGVsbC4KQEAgLTg0LDcgKzg0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9kdWxl
TG9hZGVyRmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlKTsKICAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtb2R1bGVMb2FkZXJFdmFsdWF0
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6SlNWYWx1ZSk7CiAKLSAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9pbXBsOworICAgICAg
ICBSZWZQdHI8RE9NV2luZG93PiBtX3dyYXBwZWQ7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwq
IG1fc2hlbGw7CiAKICAgICAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMgbV9wcml2YXRl
RnVuY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCmluZGV4IDBiYzMzNzU0YWExZmJjNWEzNjkzMTczNGY3ZDE1OWU0MjQ5MDQ0NmUu
LjAwZTYyYTQyYjY0OWJmNzg1NjNkNjA4OGVhMzhkZjgxMDU5NjIzOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYyLDIxICs2
MiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgp
LmZyYW1lKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmcmFtZSk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDYXN0PEpTRE9N
V2luZG93Kj4oc2xvdEJhc2UpLT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0Nhc3Q8
SlNET01XaW5kb3cqPihzbG90QmFzZSktPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVk
Q2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSktPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBuYW1lZEl0ZW1H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhp
c09iaiA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHNsb3RCYXNlKTsKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSB0aGlzT2JqLT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSB0aGlzT2JqLT53cmFwcGVkKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKIAot
ICAgIEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
ZXhlYywgdGhpc09iai0+aW1wbCgpKSk7CisgICAgQVNTRVJUKEJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqLT53cmFwcGVkKCkpKTsKICAg
ICBBU1NFUlQoaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCkpOwogCiAgICAgQXRvbWljU3RyaW5n
SW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKQEAg
LTk2LDkgKzk2LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBqc0RPTVdpbmRvd1dlYktpdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01XaW5kb3cqIGNh
c3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0
ZWRUaGlzLT5pbXBsKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGNhc3RlZFRoaXMt
PndyYXBwZWQoKS53ZWJraXROYW1lc3BhY2UoKSkpOwogfQogI2VuZGlmCiAKQEAgLTExMSw5ICsx
MTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dJbmRleGVkREIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgYXV0byogY2FzdGVkVGhpcyA9IHRv
SlNET01XaW5kb3coSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbmRleGVkREJFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVk
VGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6aW5kZXhlZERCKCZpbXBs
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEyOSw3ICsx
MjksNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIFdlIGRvbid0IHdhbnQgYW55
IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBhIGZyYW1lbGVz
cyB3aW5kb3cgKGkuZS4gb25lIHdob3NlIHBhZ2UgZ290IGNsb3NlZCwKICAgICAvLyBvciB3aG9z
ZSBpZnJhbWUgZ290IHJlbW92ZWQpLgogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgZnVsbHkg
bWF0Y2ggRmlyZWZveCwgd2hpY2ggYWxsb3dzIGF0IGxlYXN0IHRvU3RyaW5nIGluIGFkZGl0aW9u
IHRvIHRob3NlLgotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpIHsKKyAgICBp
ZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAgIC8vIFRoZSBmb2xs
b3dpbmcgY29kZSBpcyBzYWZlIGZvciBjcm9zcy1kb21haW4gYW5kIHNhbWUgZG9tYWluIHVzZS4K
ICAgICAgICAgLy8gSXQgaWdub3JlcyBhbnkgY3VzdG9tIHByb3BlcnRpZXMgdGhhdCBtaWdodCBi
ZSBzZXQgb24gdGhlIERPTVdpbmRvdyAoaW5jbHVkaW5nIGEgY3VzdG9tIHByb3RvdHlwZSkuCiAg
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsb3NlZCkg
ewpAQCAtMTQ1LDE0ICsxNDUsMTUgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAgICAg
Ly8gbm90IGFsbG93ZWQuIAogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2xvdC5zZXRXYXRjaHBvaW50U2V0KHRo
aXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyk7CisgICAgfQorCisgICAgc2xvdC5z
ZXRXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyk7CiAK
ICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBjcm9zcy1kb21haW4gYWNjZXNzIGhlcmUgd2l0
aG91dCBwcmludGluZyB0aGUgZ2VuZXJpYyB3YXJuaW5nIG1lc3NhZ2UKICAgICAvLyBiZWNhdXNl
IHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8gc29tZSBmdW5jdGlvbiwganVzdCBkaWZmZXJlbnQg
b25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nlc3MKICAgICAvLyBpcyBhbGxvd2VkLgogICAgIFN0
cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSwgZXJyb3JNZXNzYWdlKTsK
KyAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpOwogICAgIAogICAgIC8vIExv
b2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3VyIG93biBwcm9wZXJ0
aWVzLCBidXQgaWdub3JlIG92ZXJyaWRlcyBjb21wbGV0ZWx5CiAgICAgLy8gaWYgdGhpcyBpcyBj
cm9zcy1kb21haW4gYWNjZXNzLgpAQCAtMTc2LDcgKzE3Nyw3IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtLCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXI8anNET01X
aW5kb3dQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlLCAyPik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5zaG93TW9kYWxEaWFsb2cpIHsKLSAgICAgICAgaWYgKCFET01XaW5kb3c6OmNhblNob3dNb2Rh
bERpYWxvZyh0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpIHsKKyAgICAgICAgaWYgKCFET01X
aW5kb3c6OmNhblNob3dNb2RhbERpYWxvZyh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkp
IHsKICAgICAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMjA3LDcgKzIwOCw3IEBAIGJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5CiAgICAgfQogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLSAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS53ZWJraXQgJiYgdGhpc09iamVj
dC0+aW1wbCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53
b3JsZCgpKSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LndlYmtpdCAmJiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2hvdWxkSGF2ZVdlYktpdE5hbWVzcGFj
ZUZvcldvcmxkKHRoaXNPYmplY3QtPndvcmxkKCkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q2FjaGVh
YmxlQ3VzdG9tKHRoaXNPYmplY3QsIGFsbG93c0FjY2VzcyA/IERvbnREZWxldGUgfCBSZWFkT25s
eSA6IFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBqc0RPTVdpbmRvd1dlYktpdCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIzNyw3ICsyMzgsNyBAQCBib29sIEpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxp
Y3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1veiBidXQgbm90
IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KICAgICAvLyBp
dCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUo
KS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkg
eworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENo
aWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MjQ3LDkgKzI0OCw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAKICAgICAvLyBhbGxvdyB3
aW5kb3dbMV0gb3IgcGFyZW50WzFdIGV0Yy4gKCM1Njk4MykKICAgICBPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGluZGV4ICYmIGlu
ZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENo
aWxkQ291bnQoKSkgeworICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgdGhpc09iamVj
dC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkpIHsKICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSwKLSAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkt
PnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1ZSgpKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCkpKTsKKyAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1ZSgpKS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNjAsNyArMjYxLDcg
QEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICB9CiAKICAgICAvLyBBbGxvdyBzaG9ydGN1
dHMgbGlrZSAnSW1hZ2UxJyBpbnN0ZWFkIG9mIGRvY3VtZW50LmltYWdlcy5JbWFnZTEKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQo
KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUo
KS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTERvY3VtZW50PigqZG9jdW1lbnQpKSB7CiAg
ICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCk7CiAgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgZG93bmNh
c3Q8SFRNTERvY3VtZW50PigqZG9jdW1lbnQpLmhhc1dpbmRvd05hbWVkSXRlbSgqYXRvbWljUHJv
cGVydHlOYW1lKSkgewpAQCAtMjc2LDcgKzI3Nyw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1
CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihv
YmplY3QpOwogICAgIAotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpIHsKKyAg
ICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgaGF2ZSBhIG1lc3NhZ2UgaGVyZSB0aGF0IGV4cGxhaW5zIHdoeSB0aGUgcHJv
cGVydHkgYWNjZXNzL2Z1bmN0aW9uIGNhbGwgd2FzCiAgICAgICAgIC8vIG5vdCBhbGxvd2VkLiAK
ICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKQEAgLTI4Nyw3ICsyODgsNyBAQCBib29sIEpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIGJlY2F1c2Ugd2UgYWx3YXlzIGFsbG93IGFjY2VzcyB0
byBzb21lIGZ1bmN0aW9uLCBqdXN0IGRpZmZlcmVudCBvbmVzIGRlcGVuZGluZyB3aGV0aGVyIGFj
Y2VzcwogICAgIC8vIGlzIGFsbG93ZWQuCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBi
b29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhp
c09iamVjdC0+aW1wbCgpLCBlcnJvck1lc3NhZ2UpOworICAgIGJvb2wgYWxsb3dzQWNjZXNzID0g
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCks
IGVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxvb2tp
bmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcywgYnV0IGlnbm9yZSBvdmVycmlkZXMgY29t
cGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMgY3Jvc3MtZG9tYWluIGFjY2Vzcy4KQEAgLTMwMSw3
ICszMDIsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIG5hbWluZyBmcmFtZXMg
dGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8g
YXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhh
dmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1w
bCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUo
KS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzIzLDkgKzMyNCw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1
CiAgICAgLy8gV2UgbmVlZCB0byB0ZXN0IHRoZSBjb3JyZWN0IHByaW9yaXR5IG9yZGVyLgogCiAg
ICAgLy8gYWxsb3cgd2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMpCi0gICAgaWYg
KGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZENv
dW50KCkpIHsKKyAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+
dHJlZSgpLnNjb3BlZENoaWxkQ291bnQoKSkgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLAotICAgICAgICAgICAgdG9K
UyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKGlu
ZGV4KS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsKKyAgICAgICAgICAgIHRvSlMoZXhlYywg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleCkt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMzM2LDcgKzMzNyw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgfQogCiAg
ICAgLy8gQWxsb3cgc2hvcnRjdXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBkb2N1bWVudC5p
bWFnZXMuSW1hZ2UxCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgp
LmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVj
dC0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxEb2N1bWVu
dD4oKmRvY3VtZW50KSkgewogICAgICAgICAvLyBUaGlzIHByb3BlcnR5TmFtZSBpcyBnZW5lcmF0
ZWQgYnkgSWRlbnRpZmllcjo6ZnJvbS4KICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBnZW5lcmF0
ZXMgSWRlbnRpZmllciBmcm9tIFN0cmluZyBhbmQgYWx3YXlzIHJldHVybnMgdGhlIG5vbi1zeW1i
b2wgSWRlbnRpZmllci4KQEAgLTM1NCwxMiArMzU1LDEyIEBAIGJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCB1CiB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGNlbGwpOwotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpCisgICAg
aWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gT3B0aW1pemF0aW9uOiBhY2Nlc3MgSmF2YVNjcmlwdCBnbG9iYWwgdmFyaWFibGVzIGRp
cmVjdGx5IGJlZm9yZSBpbnZvbHZpbmcgdGhlIERPTS4KICAgICBpZiAodGhpc09iamVjdC0+SlNH
bG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoZXhlYywgcHJvcGVydHlOYW1lKSkg
ewotICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgICAgIGlmIChCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBl
ZCgpKSkKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
NjcsMjYgKzM2OCwyNiBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAgICAgaWYgKGxvb2t1cFB1
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1By
b3BIYXNoVGFibGUsIHNsb3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmlt
cGwoKSkpCisgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNE
T01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTRE9N
V2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7Ci0gICAgaWYg
KCF0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBw
ZWQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KTsKIAogICAgIC8vIE9wdGlt
aXphdGlvbjogYWNjZXNzIEphdmFTY3JpcHQgZ2xvYmFsIHZhcmlhYmxlcyBkaXJlY3RseSBiZWZv
cmUgaW52b2x2aW5nIHRoZSBET00uCiAgICAgaWYgKHRoaXNPYmplY3QtPkpTR2xvYmFsT2JqZWN0
OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKGV4ZWMsIHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAg
aWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0
aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRl
eCwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAg
ICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwogfQogCkBAIC0zOTQsNyArMzk1LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm8K
IHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNl
bGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4g
dGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVj
dC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtNDAz
LDcgKzQwNCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKIHsKICAgICBKU0RPTVdpbmRvdyog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxs
b3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTQxMiw3ICs0MTMsNyBAQCB1
aW50MzJfdCBKU0RPTVdpbmRvdzo6Z2V0RW51bWVyYWJsZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0
byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVj
dC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gQmFzZTo6Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0
KTsKIH0KQEAgLTQyMSw3ICs0MjIsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUAogewogICAg
IEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsK
ICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4g
dGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVj
dC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFN0cnVjdHVyZVBy
b3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBA
IC00MzAsNyArNDMxLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm8KIHsKICAgICBKU0RPTVdp
bmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8g
T25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1l
IG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAgLTQzOSw3ICs0
NDAsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogewogICAgIEpTRE9NV2luZG93KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93
IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgot
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4
ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00NDgsNyArNDQ5LDcgQEAgdm9pZCBKU0RP
TVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnQKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVu
dW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAg
ICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQpAQCAtNDU3LDcgKzQ1OCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlZmlu
ZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihv
YmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBpbiB0aGlzIHdh
eSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0dGVycyB0byBi
ZSBpbnRyb2R1Y2VkLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+
d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cg
c2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCkBAIC00NzYsNyAr
NDc3LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICAvLyBhIHByb3BlcnR5IG5hbWVkICJsb2NhdGlvbiIgaW5zdGVh
ZCBvZiBwZXJmb3JtaW5nIGEgbmF2aWdhdGlvbiAoPHJkYXI6Ly9wcm9ibGVtLzU2ODgwMzk+KS4K
ICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlRE9NV2luZG93KCZzdGF0ZSkuZnJh
bWUoKSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkudXNlc0Rhc2hib2Fy
ZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS5wYXJl
bnQoKSkgewotICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdygmc3RhdGUsIGltcGwoKSkpCisgICAgICAgICAgICBpZiAoQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCZzdGF0ZSwgd3JhcHBlZCgpKSkK
ICAgICAgICAgICAgICAgICBwdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmc3RhdGUsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTQ4Nyw3ICs0ODgsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9
IGltcGwoKS5sb2NhdGlvbigpKQorICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSB3cmFwcGVk
KCkubG9jYXRpb24oKSkKICAgICAgICAgbG9jYXRpb24tPnNldEhyZWYoYWN0aXZlRE9NV2luZG93
KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSksIGxvY2F0aW9uU3RyaW5nKTsKIH0KIApA
QCAtNTMwLDcgKzUzMSw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6Om9wZW4oRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPERPTVdpbmRvdz4gb3BlbmVkV2luZG93ID0gaW1wbCgp
Lm9wZW4odXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVE
T01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSk7CisgICAgUmVmUHRyPERP
TVdpbmRvdz4gb3BlbmVkV2luZG93ID0gd3JhcHBlZCgpLm9wZW4odXJsU3RyaW5nLCBmcmFtZU5h
bWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RE
T01XaW5kb3coJnN0YXRlKSk7CiAgICAgaWYgKCFvcGVuZWRXaW5kb3cpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgb3BlbmVkV2luZG93Lmdl
dCgpKTsKQEAgLTU4NSw3ICs1ODYsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxE
aWFsb2coRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIERpYWxvZ0hhbmRsZXIgaGFuZGxlcihzdGF0
ZSk7CiAKLSAgICBpbXBsKCkuc2hvd01vZGFsRGlhbG9nKHVybFN0cmluZywgZGlhbG9nRmVhdHVy
ZXNTdHJpbmcsIGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLCBmaXJzdERPTVdpbmRvdygmc3RhdGUp
LCBbJmhhbmRsZXJdKERPTVdpbmRvdyYgZGlhbG9nKSB7CisgICAgd3JhcHBlZCgpLnNob3dNb2Rh
bERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3co
JnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSwgWyZoYW5kbGVyXShET01XaW5kb3cmIGRp
YWxvZykgewogICAgICAgICBoYW5kbGVyLmRpYWxvZ0NyZWF0ZWQoZGlhbG9nKTsKICAgICB9KTsK
IApAQCAtNjM1LDEyICs2MzYsMTIgQEAgc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2Uo
RE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpTRE9NV2luZG93
Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0
TWVzc2FnZShpbXBsKCksIHN0YXRlKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uod3Jh
cHBlZCgpLCBzdGF0ZSk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1
cml0eVBvbGljeSA9IGltcGwoKS5kb2N1bWVudCgpID8gaW1wbCgpLmRvY3VtZW50KCktPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kq
IGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1bWVudCgpID8gd3JhcHBlZCgp
LmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNy
ZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50U2VjdXJpdHlQb2xp
Y3kpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CkBAIC02NTEsNyArNjUyLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGlt
ZW91dChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGludCBkZWxheSA9IHN0YXRlLmFyZ3VtZW50KDEp
LnRvSW50MzIoJnN0YXRlKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCBy
ZXN1bHQgPSBpbXBsKCkuc2V0VGltZW91dChXVEY6Om1vdmUoYWN0aW9uKSwgZGVsYXksIGVjKTsK
KyAgICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiks
IGRlbGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0
dXJuIGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NTksNyArNjYwLDcgQEAgSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpTRE9NV2luZG93
OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gaW1wbCgpLmRvY3VtZW50KCkgPyBpbXBsKCku
ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOworICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBlZCgpLmRvY3Vt
ZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBu
dWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNj
aGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIGNv
bnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTY2OSw3ICs2NzAsNyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4g
anNOdW1iZXIoMCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQgcmVzdWx0
ID0gaW1wbCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSwgZWMpOworICAg
IGludCByZXN1bHQgPSB3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRl
bGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJu
IGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NzcsNyArNjc4LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEZyYW1lKiBmcmFtZSA9
IGltcGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC02ODUs
MTMgKzY4NiwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS5hZGRFdmVudExpc3RlbmVyKHN0YXRlLmFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2Jh
bE9iamVjdCgpLT53b3JsZCgpKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkp
OworICAgIHdyYXBwZWQoKS5hZGRFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50KDApLnRvU3Ry
aW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLmZyYW1l
KCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTY5OSw3ICs3MDAsNyBAQCBK
U1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIGltcGwoKS5yZW1vdmVFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50KDAp
LnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVjdCgp
LT53b3JsZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkpOwor
ICAgIHdyYXBwZWQoKS5yZW1vdmVFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50KDApLnRvU3Ry
aW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkpOwogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC03MDksOSArNzEwLDkgQEAgRE9NV2luZG93KiBK
U0RPTVdpbmRvdzo6dG9XcmFwcGVkKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+
aW5oZXJpdHMoSlNET01XaW5kb3c6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpT
RE9NV2luZG93Kj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RP
TVdpbmRvdyo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhK
U0RPTVdpbmRvd1NoZWxsOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVdp
bmRvd1NoZWxsKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RP
TVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIHJldHVybiAwOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4
IDU0Y2I1ZTU0MDQyMDE1MDVkNWRhN2VhNDdlNzRmYTBjMmVmMGUwNjQuLjExMjA2Njg1MjIyMjlm
N2QxNmRlZjg2OWRmOTE3OTY3ZjUxY2E3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgSlNET01X
aW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiB7
CiAgICAgLy8gUmVwbGFjaW5nIEpTRE9NV2luZG93IHZpYSB0ZWxsaW5nIEpTRE9NV2luZG93U2hl
bGwgdG8gdXNlIHRoZSBzYW1lIERPTVdpbmRvdyBpdCBhbHJlYWR5IHVzZXMgbWFrZXMgbm8gc2Vu
c2UsCiAgICAgLy8gc28gd2UnZCBiZXR0ZXIgbmV2ZXIgdHJ5IHRvLgotICAgIEFTU0VSVCghd2lu
ZG93KCkgfHwgZG9tV2luZG93LmdldCgpICE9ICZ3aW5kb3coKS0+aW1wbCgpKTsKKyAgICBBU1NF
UlQoIXdpbmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAhPSAmd2luZG93KCktPndyYXBwZWQoKSk7
CiAgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBl
IHNvIGl0IGlzbid0IGNvbGxlY3RlZAogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2Jh
bCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3Ry
dWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKQEAgLTk0LDkgKzk0LDkgQEAg
dm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRv
bVdpbmRvdykKIC8vIEpTRE9NV2luZG93IG1ldGhvZHMKIC8vIC0tLS0KIAotRE9NV2luZG93JiBK
U0RPTVdpbmRvd1NoZWxsOjppbXBsKCkgY29uc3QKK0RPTVdpbmRvdyYgSlNET01XaW5kb3dTaGVs
bDo6d3JhcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpbmRvdygpLT5pbXBsKCk7CisgICAg
cmV0dXJuIHdpbmRvdygpLT53cmFwcGVkKCk7CiB9CiAKIC8vIC0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBjZWRiNTljNzM1MmFjZGYx
MGEzMTc2YTA3YjIxODNhZTc1MmM2OGE4Li4wMWYwNDhkNjdhNGY1YjhkMGYxZWU5NjlkNWQyNzU0
NWYxMjc0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICAgICAgRE9NV2luZG93JiBpbXBsKCkgY29uc3Q7CisgICAgICAg
IERPTVdpbmRvdyYgd3JhcHBlZCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU0RPTVdpbmRv
d1NoZWxsKiBjcmVhdGUoSlNDOjpWTSYgdm0sIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3cs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggZTQ5
NDE1ZTJiYzQyNDU4MGMyYmM5MDBiZDMyM2Y2N2IwODA5NTIzNS4uMjYyNmY1OGFlZWE5MDI0NTEw
MGJkMmRiOWFlMTA3ZGUwYzMzZGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmgKQEAgLTUyLDE2ICs1MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsZW1l
bnRhdGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNET01PYmplY3Qgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3QgQmFzZTsKIAotICAgIEltcGxlbWVudGF0
aW9uQ2xhc3MmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgfkpTRE9NV3Jh
cHBlcigpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9CisgICAg
SW1wbGVtZW50YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
SW1wbGVtZW50YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KIAogcHJvdGVjdGVkOgog
ICAgIEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxJbXBsZW1lbnRhdGlvbkNsYXNzPiYmIGltcGwpCiAg
ICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAgICAgLCBtX2ltcGwo
JmltcGwubGVha1JlZigpKSB7IH0KKyAgICAgICAgLCBtX3dyYXBwZWQoV1RGOjptb3ZlKGltcGwp
KSB7IH0KIAogcHJpdmF0ZToKLSAgICBJbXBsZW1lbnRhdGlvbkNsYXNzKiBtX2ltcGw7CisgICAg
UmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+IG1fd3JhcHBlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20u
Y3BwCmluZGV4IDdhYjMyNDVkMGJiYzJiZDdkZjU3ZjJiNzU5YjM0YjA0ODBmMzM1YTEuLmJlNTNl
YmVkOTUxNDFiZjY4NTYxOTc1YzQxNjdhZTUyYzAxZTJlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKIEpTVmFsdWUgSlNE
YXRhQ3VlOjp2YWx1ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiBpbXBs
KCkudmFsdWUoJnN0YXRlKTsKKyAgICByZXR1cm4gd3JhcHBlZCgpLnZhbHVlKCZzdGF0ZSk7CiB9
CiAKIHZvaWQgSlNEYXRhQ3VlOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogewotICAgIGltcGwoKS5zZXRWYWx1ZSgmc3RhdGUsIHZhbHVlKTsKKyAgICB3cmFwcGVk
KCkuc2V0VmFsdWUoJnN0YXRlLCB2YWx1ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwCmluZGV4IDBiMGZh
OTA3NjAxNjU2NzEzMWNiOGQ3MDMzYzljODYxOGMwYTFkZTguLmRmYzhkNDRjZjY2ZDVkZTJlZDky
ZDJlY2RiYTFmMzY1NjYyOGU3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTRGF0YVRyYW5zZmVyOjp0eXBlcyhFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogewotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gaW1wbCgpLnR5cGVzKCk7
CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSB3cmFwcGVkKCkudHlwZXMoKTsKICAgICByZXR1
cm4gdHlwZXMuaXNFbXB0eSgpID8ganNOdWxsKCkgOiBqc0FycmF5KCZzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KCksIHR5cGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRl
eCA4Mzg5ZDYxZTU4MzEzODU0ZjU1NjMzYzJjOTNkNTExNzMwYzNlYTBlLi4wZTliOTc2N2ZjMzI5
Y2Q5ZWM1NjNiZDliZTRjMWZlZmYxNjg1OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3Vz
dG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTQzo6SlNW
YWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmaW1w
bCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZ3cmFwcGVkKCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IDdkODBmNmYx
YjhmZWExZDBhNzdlZGY4ODg2YjNlZDMzMGY2NmJmMDAuLjczNzYyY2FhMTNjNTRmZTVjZmI5NjM3
ODA5MTkwZjQ4YzY2ODllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAg
c3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QoY29uc3QgRGV2aWNlTW90
aW9uRGF0YTo6Um90YXRpb25SYXRlKgogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFj
Y2VsZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIERldmljZU1vdGlvbkV2
ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQo
KTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmFjY2VsZXJhdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUFjY2VsZXJhdGlvbk9iamVj
dChpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVyYXRpb24oKSwgc3RhdGUpOwpAQCAtMTQ0
LDcgKzE0NCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6YWNj
ZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAg
IERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9uRXZlbnQm
IGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmFjY2Vs
ZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAg
IHJldHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmplY3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+
YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSgpLCBzdGF0ZSk7CkBAIC0xNTIsNyArMTUyLDcg
QEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2
aXR5KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnMKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50
Ojpyb3RhdGlvblJhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBEZXZpY2VNb3Rp
b25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5yb3RhdGlvblJhdGUoKSkK
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBjcmVhdGVSb3RhdGlvblJhdGVP
YmplY3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+cm90YXRpb25SYXRlKCksIHN0YXRlKTsKQEAg
LTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OnJvdGF0aW9uUmF0
ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6
OmludGVydmFsKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlTW90aW9uRXZlbnQmIGlt
cCA9IGltcGwoKTsKKyAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+Y2FuUHJvdmlkZUludGVydmFsKCkpCiAgICAg
ICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLmRldmljZU1vdGlv
bkRhdGEoKS0+aW50ZXJ2YWwoKSk7CkBAIC0xODksNyArMTg5LDcgQEAgSlNWYWx1ZSBKU0Rldmlj
ZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnQoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICBib29sIGludGVydmFsUHJvdmlkZWQgPSAhc3RhdGUuYXJndW1lbnQoNikuaXNVbmRlZmluZWRP
ck51bGwoKTsKICAgICBkb3VibGUgaW50ZXJ2YWwgPSBzdGF0ZS5hcmd1bWVudCg2KS50b051bWJl
cigmc3RhdGUpOwogICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBkZXZpY2VNb3Rpb25EYXRh
ID0gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKGFjY2VsZXJhdGlvbiwgYWNjZWxlcmF0aW9uSW5j
bHVkaW5nR3Jhdml0eSwgcm90YXRpb25SYXRlLCBpbnRlcnZhbFByb3ZpZGVkLCBpbnRlcnZhbCk7
Ci0gICAgaW1wbCgpLmluaXREZXZpY2VNb3Rpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxh
YmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdldCgpKTsKKyAgICB3cmFwcGVkKCkuaW5pdERldmljZU1v
dGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRldmljZU1vdGlvbkRhdGEuZ2V0
KCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcAppbmRleCAxMTI3MDUyYmM2MDVlN2FjZGY2ZDVkYTY2ZGM0MjhmOGE4YmY4ZWM2Li41NmFi
ZDliMjQxODAyMmUxNmUzOTg0ZGMzNzUwY2I1NTIyNmY3MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVl
IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAg
ICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlT3JpZW50
YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCkt
PmNhblByb3ZpZGVBbHBoYSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJu
IGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5hbHBoYSgpKTsKQEAgLTQ4LDcgKzQ4LDcgQEAg
SlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKEV4ZWNTdGF0ZSYpIGNvbnN0
CiAKIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhKEV4ZWNTdGF0ZSYpIGNv
bnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERl
dmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmll
bnRhdGlvbigpLT5jYW5Qcm92aWRlQmV0YSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAg
ICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5iZXRhKCkpOwpAQCAtNTYsNyAr
NTYsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YShFeGVjU3RhdGUm
KSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2FtbWEoRXhlY1N0
YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7
CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAgIGlmICgh
aW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVHYW1tYSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5nYW1tYSgpKTsK
QEAgLTY1LDcgKzY1LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmdhbW1h
KEV4ZWNTdGF0ZSYpIGNvbnN0CiAjaWYgUExBVEZPUk0oSU9TKQogSlNWYWx1ZSBKU0RldmljZU9y
aWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NIZWFkaW5nKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7
Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU9y
aWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlv
bigpLT5jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Y29tcGFzc0hlYWRpbmco
KSk7CkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3
ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0FjY3VyYWN5KEV4ZWNTdGF0ZSYpIGNvbnN0
CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmlj
ZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRh
dGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KCkpCiAgICAgICAgIHJldHVybiBqc051
bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9yaWVudGF0aW9uKCktPmNvbXBhc3NBY2N1
cmFjeSgpKTsKQEAgLTgzLDcgKzgzLDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZl
bnQ6OndlYmtpdENvbXBhc3NBY2N1cmFjeShFeGVjU3RhdGUmKSBjb25zdAogI2lmICFQTEFURk9S
TShJT1MpCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1dGUoRXhlY1N0
YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7
CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAgIGlmICgh
aW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVBYnNvbHV0ZSgpKQogICAgICAgICByZXR1cm4g
anNOdWxsKCk7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihpbXAub3JpZW50YXRpb24oKS0+YWJzb2x1
dGUoKSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZl
bnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgYm9v
bCBhYnNvbHV0ZSA9IHN0YXRlLmFyZ3VtZW50KDYpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIFJl
ZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRp
b25EYXRhOjpjcmVhdGUoYWxwaGFQcm92aWRlZCwgYWxwaGEsIGJldGFQcm92aWRlZCwgYmV0YSwg
Z2FtbWFQcm92aWRlZCwgZ2FtbWEsIGFic29sdXRlUHJvdmlkZWQsIGFic29sdXRlKTsKICNlbmRp
ZgotICAgIGltcGwoKS5pbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCh0eXBlLCBidWJibGVzLCBj
YW5jZWxhYmxlLCBvcmllbnRhdGlvbi5nZXQoKSk7CisgICAgd3JhcHBlZCgpLmluaXREZXZpY2VP
cmllbnRhdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIG9yaWVudGF0aW9uLmdl
dCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBlYzBiOWMyYmEzMGU4NjBm
NmUyYmE5ODAxNzBkOGY3MDJiNDQ1MmQ3Li4wOTRjZTNlMzIyZGIwZDcwYjIwYThkYmEzMGU0YjEy
MzU5Yzk4NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50
Q3VzdG9tLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBEb2N1CiBK
U1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucHJlcGVuZCh0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBKU1ZhbHVlIEpTRG9jdW1l
bnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVudDo6YXBwZW5k
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1w
bCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVk
KCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHAKaW5kZXggYzM1MmQ1ZGI5N2JiY2RlMGM2Y2ZjOTYxZGJhZWE0ODFjYjcyMTVjNS4uN2Rh
Mzg0N2MxNzZmMDY3MGM3Y2NkNTkxMmYzNjkwMmZkOWMwNDg5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNEb2N1bWVudEZy
YWdtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBl
Yyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CkBAIC00Niw3ICs0Niw3IEBAIEpTVmFsdWUgSlNEb2N1bWVudEZyYWdtZW50Ojpw
cmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6YXBw
ZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
aW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFw
cGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3Bw
CmluZGV4IDgzMzM4NzIwMWJiZjYwMmI1NTUzNjA4YmViNTUxMDYyOWNlY2I5NWEuLmE5M2Q2NzE3
M2Q5NDI1NTZiMGYyMjYyY2I0MDgxOTIyMGIzZmU5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YmVmb3JlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCku
YmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNDUsNyAr
NDUsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkK
IEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50
VHlwZTo6YWZ0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OnJl
cGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSks
IGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0
b20uY3BwCmluZGV4IGZlZmRlMzU3YTdkY2I2ZWI3YzVkNmY2NjFlN2I1N2Y1YzAwZTk0MzEuLjFk
NjUyNDJmMTYxYThiZTY2MmJmNzM2ZmY4MmQ1ZjhhNjZlMTk4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCBK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRWxlbWVudCogZQogSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3Rh
dGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5iZWZv
cmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLmJlZm9y
ZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTc5LDcgKzc5LDcg
QEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBK
U0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsK
ICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucmVwbGFjZVdpdGgo
dG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnJlcGxhY2VX
aXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtOTcsNyArOTcs
NyBAQCBKU1ZhbHVlIEpTRWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKIEpT
VmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6
OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNFbGVtZW50OjphcHBlbmQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCku
YXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5h
cHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCmluZGV4IDUxZTlmMGQ5MzBmNmM5
ZjY5OGZkMjBhY2E5YjgwMWE2ODdhZjg3ZTAuLjYwOTk1NDE2OTU2ZmJkZTE1MThhNTlhZGRjMGE1
ZjQwNjY5NWY1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0
b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBK
U0V2ZW50OjpjbGlwYm9hcmREYXRhKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGltcGwoKS5pc0NsaXBib2FyZEV2ZW50KCkgPyB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIGltcGwoKS5jbGlwYm9hcmREYXRhKCkpIDoganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4g
d3JhcHBlZCgpLmlzQ2xpcGJvYXJkRXZlbnQoKSA/IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3Qo
KSwgd3JhcHBlZCgpLmNsaXBib2FyZERhdGEoKSkgOiBqc1VuZGVmaW5lZCgpOwogfQogCiAjZGVm
aW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDI4MGNhMTJk
ZWJkMGYwMGY4NWVhYjMwYzk4Y2RiMzc4ZWRmMzcwY2IuLjgzZWNhOTRhNDA3ZTNhMTI5OWNhYmY3
Mjk4ODI2NDdjZWY2ODVmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIHZvaWQgSlNFdmVudExpc3RlbmVy
OjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAg
ICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxP
YmplY3QpOwotICAgICAgICBpZiAoIXdpbmRvdy0+aW1wbCgpLmlzQ3VycmVudGx5RGlzcGxheWVk
SW5GcmFtZSgpKQorICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBGSVhNRTog
SXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPwotICAgICAgICBTY3JpcHRD
b250cm9sbGVyJiBzY3JpcHQgPSB3aW5kb3ctPmltcGwoKS5mcmFtZSgpLT5zY3JpcHQoKTsKKyAg
ICAgICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0ID0gd2luZG93LT53cmFwcGVkKCkuZnJhbWUo
KS0+c2NyaXB0KCk7CiAgICAgICAgIGlmICghc2NyaXB0LmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0
VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uY3BwCmluZGV4IGM3Yzc0NTA1YTZhMWZhZWYwY2M3ZGE5YjJjNjY1MzI0ZTJkNGY3
OWMuLmU4ZWFkMWMxZDQyZjBkZGZmZWU5NjZlMTgyMGVkMDI1MDg4MmY0YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCkBAIC01
Niw3ICs1Niw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAKICNkZWZpbmUgVFJZX1RPX1VO
V1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCiAgICAgaWYgKHZhbHVlLmluaGVy
aXRzKEpTIyNpbnRlcmZhY2VOYW1lOjppbmZvKCkpKSAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHJldHVybiAmanNDYXN0PEpTIyNpbnRlcmZhY2VOYW1lKj4oYXNPYmplY3QodmFsdWUp
KS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKUyMjaW50ZXJmYWNlTmFtZSo+KGFz
T2JqZWN0KHZhbHVlKSktPndyYXBwZWQoKTsKIAogRXZlbnRUYXJnZXQqIEpTRXZlbnRUYXJnZXQ6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcAppbmRleCA1MWZiZjRmYTE4MmY0YzNi
YzQ2YmE1OGZiZGUwN2M1ZWY1OGYxMDY5Li5hM2MwOWIxODMwNDExOWE4ZWU4ZGQ3N2I0ZDdkZmY1
NDgyZDNiMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVS
ZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJl
YWRlckN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBK
U1ZhbHVlIEpTRmlsZVJlYWRlcjo6cmVzdWx0KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0g
ICAgRmlsZVJlYWRlciYgaW1wID0gaW1wbCgpOworICAgIEZpbGVSZWFkZXImIGltcCA9IHdyYXBw
ZWQoKTsKICAgICBpZiAoaW1wLnJlYWRUeXBlKCkgPT0gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFz
QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCks
IFdURjo6Z2V0UHRyKGltcC5hcnJheUJ1ZmZlclJlc3VsdCgpKSk7CiAgICAgcmV0dXJuIGpzT3du
ZWRTdHJpbmdPck51bGwoJnN0YXRlLCBpbXAuc3RyaW5nUmVzdWx0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBlYmM1
YmE3YWI2MzBjZmE1M2QwMTViMmM2ZDM0MjM4OTQ1MjgwOTE3Li5iMDFiZTdkYmQwZjAzZWNhODBj
NmQwOTVmMGFlYzhjNzc2ZTg1MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIEpTVmFsdWUg
SlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbk9wdGlvbnMpOwog
Ci0gICAgaW1wbCgpLmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2Uo
KSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVh
c2UoKSk7CisgICAgd3JhcHBlZCgpLmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNr
LnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRp
b25zLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTEzNiw3
ICsxMzYsNyBAQCBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0
aW9uT3B0aW9ucyk7CiAKLSAgICBpbnQgd2F0Y2hJRCA9IGltcGwoKS53YXRjaFBvc2l0aW9uKHBv
c2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgp
LCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAgICBpbnQgd2F0Y2hJRCA9IHdyYXBwZWQo
KS53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9y
Q2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKICAgICByZXR1
cm4ganNOdW1iZXIod2F0Y2hJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggMjU5MmY0Njcy
ZThhMjE3MGViZmZlYTIyZDgzMzU1ODEzMzlmMjFmOS4uOTRiYzMyNGFlZGUzODBmMGFkOTI5Yzg0
MzRjNWI5ZGFhOTliMGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxl
Y3Rpb24tPmltcGwoKS5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xsZWN0
aW9uLT53cmFwcGVkKCkubmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAK
ICAgICAvLyBEbyBub3QgdXNlIHRoaXNPYmogaGVyZS4gSXQgY2FuIGJlIHRoZSBKU0hUTUxEb2N1
bWVudCwgaW4gdGhlIGRvY3VtZW50LmZvcm1zKGkpIGNhc2UuCiAgICAgSlNIVE1MQWxsQ29sbGVj
dGlvbioganNDb2xsZWN0aW9uID0ganNDYXN0PEpTSFRNTEFsbENvbGxlY3Rpb24qPihleGVjLT5j
YWxsZWUoKSk7Ci0gICAgSFRNTEFsbENvbGxlY3Rpb24mIGNvbGxlY3Rpb24gPSBqc0NvbGxlY3Rp
b24tPmltcGwoKTsKKyAgICBIVE1MQWxsQ29sbGVjdGlvbiYgY29sbGVjdGlvbiA9IGpzQ29sbGVj
dGlvbi0+d3JhcHBlZCgpOwogCiAgICAgLy8gQWxzbywgZG8gd2UgbmVlZCB0aGUgVHlwZUVycm9y
IHRlc3QgaGVyZSA/CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIEpTSFRNTEFsbENvbGxlY3Rp
b246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZQogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKnN0YXRlLmFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkuaW1wbCgpKSkKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLml0ZW0oaW5kZXgu
dmFsdWUoKSkpOworICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3
cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAgICAgcmV0dXJuIG5hbWVkSXRlbXMoc3Rh
dGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgw
KS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggZTZlYzhkYzNjZWFmNGZhZjEzM2U0OGU5NDU5Yjk4YTYyODhkYzY4MS4uMTRhZDk1YmIx
NzYzNTI4OTc4NjAzMTdjODIwMjgxZjA4ZGZkMGI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250ZXh0QXR0cmlidXRlcyhFeGVjU3RhdGUm
IHN0YXRlLCBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJpYnUKIAogSlNWYWx1ZSBKU0hUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTENhbnZh
c0VsZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFz
ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gc3RhdGUuYXJndW1l
bnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICAKICAgICBSZWZQdHI8
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJzOwpAQCAtODgsNyArODgsNyBAQCBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNW
YWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojpwcm9iYWJseVN1cHBvcnRzQ29udGV4dChFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSBpbXBsKCk7Cisg
ICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQoKTsKICAgICBpZiAoIXN0YXRl
LmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7CiAgICAg
Y29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIEpTVmFsdWUg
SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkwoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gaW1wbCgpOworICAg
IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAKICAgICBjb25zdCBTdHJpbmcmIHR5cGUgPSB2YWx1ZVRvU3RyaW5nV2l0aFVu
ZGVmaW5lZE9yTnVsbENoZWNrKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApp
bmRleCA3Mjc5YTk0NTBhMTcxMzQwNTNmNjgzMDI1YzNjMTA4N2RhNTA3OTBiLi44ODk3MDVhZmUw
ZDgzNmZjNmViNWI5MTgyOWY5ODAwODMxMmE2YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNDIsMTAgKzQy
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSYgdmFsdWUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbXBsKCkudHlwZSgpICE9IEZv
cm1Db250cm9scywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoaW1wbCgpLnR5cGUoKSAhPSBTZWxlY3RPcHRpb25zLCAiU2hv
dWxkIGNhbGwgdGhlIHN1YmNsYXNzJyBuYW1lR2V0dGVyIik7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSh3cmFwcGVkKCkudHlwZSgpICE9IEZvcm1Db250cm9scywgIlNob3VsZCBjYWxsIHRoZSBz
dWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uod3JhcHBlZCgp
LnR5cGUoKSAhPSBTZWxlY3RPcHRpb25zLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNsYXNzJyBuYW1l
R2V0dGVyIik7CiAKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAg
ICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA0MzE3NDI4
NTQ2OGFlYWY3MTg3MWUwOTY0ZjQyNjExMmVjNWE2MDA5Li4xOTEyYzBiNmJlM2I4OTYyNDRjNjJi
ZTE2ZmUxNTE5OTY0ZmUwMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgSlNIVE1M
RG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlCiAKIGJvb2wgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAg
ICBhdXRvJiBkb2N1bWVudCA9IGltcGwoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IHdyYXBwZWQo
KTsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFhdG9taWNQcm9wZXJ0eU5hbWUgfHwgIWRvY3Vt
ZW50Lmhhc0RvY3VtZW50TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5hbWUpKQpAQCAtMTE1LDcg
KzExNSw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAogICAgIGlmICh2KQogICAgICAgICByZXR1cm4gdjsKIAotICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5hbGwoKSk7CisgICAgcmV0dXJuIHRvSlMoJnN0
YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmFsbCgpKTsKIH0KIAogdm9pZCBKU0hUTUxE
b2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0xMzIs
NyArMTMyLDcgQEAgc3RhdGljIERvY3VtZW50KiBmaW5kQ2FsbGluZ0RvY3VtZW50KEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgaWYgKCFjYWxsZXJGcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhmdW5jdG9yLmNhbGxlckZyYW1lKCktPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS5kb2N1bWVudCgpOworICAgIHJldHVybiBhc0pTRE9N
V2luZG93KGZ1bmN0b3IuY2FsbGVyRnJhbWUoKS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d3Jh
cHBlZCgpLmRvY3VtZW50KCk7CiB9CiAKIC8vIEN1c3RvbSBmdW5jdGlvbnMKQEAgLTE0MSw3ICsx
NDEsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93c2VycywgcGFzcyBvcGVu
IGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUgd2luZG93LgogICAgIGlm
IChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUg
PSBpbXBsKCkuZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgp
LmZyYW1lKCkpIHsKICAgICAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdyYXBwZXIgPSB0b0pT
RE9NV2luZG93U2hlbGwoZnJhbWUsIGN1cnJlbnRXb3JsZCgmc3RhdGUpKTsKICAgICAgICAgICAg
IGlmICh3cmFwcGVyKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBw
ZXItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAib3BlbiIpKTsK
QEAgLTE1NywxMCArMTU3LDEwIEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0
YXRlJiBzdGF0ZSkKIAogICAgIC8vIGRvY3VtZW50Lm9wZW4gY2xvYmJlcnMgdGhlIHNlY3VyaXR5
IGNvbnRleHQgb2YgdGhlIGRvY3VtZW50IGFuZAogICAgIC8vIGFsaWFzZXMgaXQgd2l0aCB0aGUg
YWN0aXZlIHNlY3VyaXR5IGNvbnRleHQuCi0gICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0g
YXNKU0RPTVdpbmRvdyhzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCkuZG9jdW1l
bnQoKTsKKyAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBhc0pTRE9NV2luZG93KHN0YXRl
LmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKS5kb2N1bWVudCgpOwogCiAgICAgLy8g
SW4gdGhlIGNhc2Ugb2YgdHdvIHBhcmFtZXRlcnMgb3IgZmV3ZXIsIGRvIGEgbm9ybWFsIGRvY3Vt
ZW50IG9wZW4uCi0gICAgaW1wbCgpLm9wZW4oYWN0aXZlRG9jdW1lbnQpOworICAgIHdyYXBwZWQo
KS5vcGVuKGFjdGl2ZURvY3VtZW50KTsKICAgICByZXR1cm4gdGhpczsKIH0KIApAQCAtMTY4LDcg
KzE2OCw3IEBAIGVudW0gTmV3bGluZVJlcXVpcmVtZW50IHsgRG9Ob3RBZGROZXdsaW5lLCBEb0Fk
ZE5ld2xpbmUgfTsKIAogc3RhdGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNIVE1MRG9jdW1lbnQqIHRoaXNEb2N1bWVudCwgTmV3bGluZVJlcXVpcmVtZW50
IGFkZE5ld2xpbmUpCiB7Ci0gICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9ICZ0aGlzRG9jdW1l
bnQtPmltcGwoKTsKKyAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gJnRoaXNEb2N1bWVudC0+
d3JhcHBlZCgpOwogICAgIC8vIERPTSBvbmx5IHNwZWNpZmllcyBzaW5nbGUgc3RyaW5nIGFyZ3Vt
ZW50LCBidXQgYnJvd3NlcnMgYWxsb3cgbXVsdGlwbGUgb3Igbm8gYXJndW1lbnRzLgogCiAgICAg
c2l6ZV90IHNpemUgPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDNkNDhkZjA0NDYw
OTMzZWNjZjQ1NTM0YmI3Y2NhMTdjM2Q2YzU2ZjUuLjU4MzZhMTA3NGJlMjk1NjdlMTZjYjg2ZTU1
NDJkM2NjMjIwZDgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIEpTU2NvcGUqIEpTSFRNTEVsZW1lbnQ6OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50JiBl
bGVtZW50ID0gaW1wbCgpOworICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gd3JhcHBlZCgpOwog
CiAgICAgLy8gVGhlIGRvY3VtZW50IGlzIHB1dCBvbiBmaXJzdCwgZmFsbCBiYWNrIHRvIHNlYXJj
aGluZyBpdCBvbmx5IGFmdGVyIHRoZSBlbGVtZW50IGFuZCBmb3JtLgogICAgIHNjb3BlID0gSlNX
aXRoU2NvcGU6OmNyZWF0ZShleGVjLCBhc09iamVjdCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCAmZWxlbWVudC5kb2N1bWVudCgpKSksIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1
c3RvbS5jcHAKaW5kZXggOGI1NWZhN2RlMzZlNWM2MDc4ODljOWIxZTlhNTFjM2VjOGE2OGI3Ni4u
M2FmYjMyNjA3MjZkZGY1ZjM1ODBkMmY0MmI2ZjlhYmVkZjA2ZjViNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0
ZW1zID0gY29sbGVjdGlvbi0+aW1wbCgpLm5hbWVkSXRlbXMobmFtZSk7CisgICAgVmVjdG9yPFJl
ZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rpb24tPndyYXBwZWQoKS5uYW1lZEl0ZW1z
KG5hbWUpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAg
cmV0dXJuIHRvSlMoJnN0YXRlLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVt
c1swXS5wdHIoKSk7CiAKLSAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1wbCgpLnR5cGUoKSA9PSBG
b3JtQ29udHJvbHMpOwotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFs
T2JqZWN0KCksIGNvbGxlY3Rpb24tPmltcGwoKS5vd25lck5vZGUoKS5yYWRpb05vZGVMaXN0KG5h
bWUpLmdldCgpKTsKKyAgICBBU1NFUlQoY29sbGVjdGlvbi0+d3JhcHBlZCgpLnR5cGUoKSA9PSBG
b3JtQ29udHJvbHMpOworICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFs
T2JqZWN0KCksIGNvbGxlY3Rpb24tPndyYXBwZWQoKS5vd25lck5vZGUoKS5yYWRpb05vZGVMaXN0
KG5hbWUpLmdldCgpKTsKIH0KIAogYm9vbCBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGUzNGMwMzU0NmRkZWE2Y2FkZWQxYTNjYWM5
ZjdiZjdmMzM4OGJiYTQuLjNhZWQ3MDUyZjQ2MTVlZjBhYzkzNTllNzFhOTE1ODc4MGIzYmQ1N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxl
bWVudEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBi
b29sIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgVmVjdG9yPFJlZjxF
bGVtZW50Pj4gbmFtZWRJdGVtcyA9IGltcGwoKS5uYW1lZEVsZW1lbnRzKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5h
bWVkSXRlbXMgPSB3cmFwcGVkKCkubmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGFiMDAwZjcxMzAxOWU5
YjhhMGJmNThlMjM1ZDc0MTNhOWFjYjk1NDIuLjZmZDVhOTdiMjU3YzYwODU4Zjg5MjliMmU5YTI5
OTFiNTdkZjFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVSTChFeGVjU3RhdGUmIHN0YXRlLCBIVE1M
RnJhbWVFbGVtZW50KgogCiB2b2lkIEpTSFRNTEZyYW1lRWxlbWVudDo6c2V0TG9jYXRpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBIVE1MRnJhbWVFbGVtZW50JiBp
bXAgPSBpbXBsKCk7CisgICAgSFRNTEZyYW1lRWxlbWVudCYgaW1wID0gd3JhcHBlZCgpOwogICAg
IFN0cmluZyBsb2NhdGlvblZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soJnN0YXRl
LCB2YWx1ZSk7CiAKICAgICBpZiAoIWFsbG93U2V0dGluZ0phdmFzY3JpcHRVUkwoc3RhdGUsICZp
bXAsIGxvY2F0aW9uVmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNzA4NTZlNTUzYzRm
ZDZjN2QwMjBmYjk3MzU4OTg2YTI2NTI1MzU2YS4uMTI1YWVmN2VjMWQ3MzFmMjJlMTE2NDBlODBm
MzJiYjcwYWFlZWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2
YWx1ZSkKIHsKLSAgICBhdXRvKiBmcmFtZUVsZW1lbnQgPSBpbXBsKCkuY2hpbGRyZW4oKS0+bmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1
dG8qIGZyYW1lRWxlbWVudCA9IHdyYXBwZWQoKS5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpczxIVE1MRnJh
bWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwCmluZGV4IDhmNDJkYmVmNTI0ZmQ2ZmQ4Y2UzZGFhMTExOWRkZmRiM2I5YjAxNTUuLjM3
MmYzNDI5ODE0Y2E4NTJmYTM1YTcyOGRhZGNmZTBiYTM2NDVmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNIVE1MSW5w
dXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAg
IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQm
IGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIApAQCAtNDQsNyArNDQsNyBA
QCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRNTElucHV0RWxlbWVu
dCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKU0hUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAK
IEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwoKTsKKyAgICBI
VE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhh
dmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAK
QEAgLTYyLDcgKzYyLDcgQEAgSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVu
ZChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0
U2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRN
TElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0hU
TUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQg
PSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAg
aWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUpOwogCkBAIC04MCw3ICs4MCw3IEBAIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBK
U0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgp
OworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5w
dXQuY2FuSGF2ZVNlbGVjdGlvbigpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU0hUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwoKTsKKyAg
ICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNh
bkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IDQ0MDA5NzYxZDEzOWQxMzE4NjQ2YjVjOGU1MWUyNWJhZDBl
YjE0MDMuLjJmNDFjZmU1ZTI0YmY5ODgxYjYwM2UwNWY1ZDJlM2E5NzlhMGU1MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCB2b2lkIEpTSFRNTE1lZGlhRWxlbWVudDo6c2V0Q29u
dHJvbGxlcihFeGVjU3RhdGUmLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIC8vIDQuOC4xMC4xMS4y
IE1lZGlhIGNvbnRyb2xsZXJzOiBjb250cm9sbGVyIGF0dHJpYnV0ZS4KICAgICAvLyBPbiBzZXR0
aW5nLCBpdCBtdXN0IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3JvdXAgYXR0cmli
dXRlLCBpZiBhbnksIAotICAgIGltcGwoKS5zZXRNZWRpYUdyb3VwKFN0cmluZygpKTsKKyAgICB3
cmFwcGVkKCkuc2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CiAgICAgLy8gYW5kIHRoZW4gc2V0IHRo
ZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgotICAgIGltcGwo
KS5zZXRDb250cm9sbGVyKEpTTWVkaWFDb250cm9sbGVyOjp0b1dyYXBwZWQodmFsdWUpKTsKKyAg
ICB3cmFwcGVkKCkuc2V0Q29udHJvbGxlcihKU01lZGlhQ29udHJvbGxlcjo6dG9XcmFwcGVkKHZh
bHVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA5MTVlMDI4N2M3OGNk
YzA5NWRiMWFkZTMzNWQ3NjBjZDNiNTgzZTdkLi45MjM0NWU2YjU3ZmNjNTAzMzg2YTkwYzNhMTc3
OTRjNGMxMzE2ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
ICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjEsMTMgKzYxLDEz
IEBAIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgbmV3TGVuZ3RoID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGxlbmd0aFZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFlYykKLSAgICAgICAgaW1w
bCgpLnNldExlbmd0aChuZXdMZW5ndGgsIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNldExlbmd0
aChuZXdMZW5ndGgsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiB9CiAK
IHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4U2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc2VsZWN0SW5kZXhTZXR0
ZXIoJmltcGwoKS5zZWxlY3RFbGVtZW50KCksIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CisgICAgc2Vs
ZWN0SW5kZXhTZXR0ZXIoJndyYXBwZWQoKS5zZWxlY3RFbGVtZW50KCksIGV4ZWMsIGluZGV4LCB2
YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZShFeGVj
U3RhdGUmIHN0YXRlKQpAQCAtNzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAvLyBUaGUgYXJndW1lbnQgY2Fu
IGJlIGFuIEhUTUxPcHRpb25FbGVtZW50IG9yIGFuIGluZGV4LgogICAgIEpTVmFsdWUgYXJndW1l
bnQgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBpZiAoSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlv
biA9IEpTSFRNTE9wdGlvbkVsZW1lbnQ6OnRvV3JhcHBlZChhcmd1bWVudCkpCi0gICAgICAgIGlt
cGwoKS5yZW1vdmUob3B0aW9uKTsKKyAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShvcHRpb24pOwog
ICAgIGVsc2UKLSAgICAgICAgaW1wbCgpLnJlbW92ZShhcmd1bWVudC50b0ludDMyKCZzdGF0ZSkp
OworICAgICAgICB3cmFwcGVkKCkucmVtb3ZlKGFyZ3VtZW50LnRvSW50MzIoJnN0YXRlKSk7CiAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYjNkZjEz
ZjcyZWFhOGZiYWEwNzg2MDVmNDc2MzM5MjdlYmUwMmNjNi4uMzBlM2ViYmI4OWE0ZWYyM2E1OTY5
NGMzYWJlZTU3YTgwYTYyMzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50
OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2Vs
ZWN0ID0gaW1wbCgpOworICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QgPSB3cmFwcGVkKCk7
CiAKICAgICBpZiAoIXN0YXRlLmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICAvLyBXaGVuIGNh
bGxlZCB3aXRoIG5vIGFyZ3VtZW50LCB3ZSBzaG91bGQgY2FsbCBFbGVtZW50OjpyZW1vdmUoKSB0
byBkZXRhY2guCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgc2VsZWN0SW5kZXhTZXR0ZXIoSFRNTFNl
bGVjdEVsZW1lbnQqIHNlbGVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiAKIHZv
aWQgSlNIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc2VsZWN0SW5kZXhT
ZXR0ZXIoJmltcGwoKSwgZXhlYywgaW5kZXgsIHZhbHVlKTsKKyAgICBzZWxlY3RJbmRleFNldHRl
cigmd3JhcHBlZCgpLCBleGVjLCBpbmRleCwgdmFsdWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9t
LmNwcAppbmRleCAxYmI4NmRmODhjOWRlZWFiMDliYTA2ZjMyNWRlN2JkZjY2ZDQ0OGFmLi45N2Fi
ZTc3YzBiMDNhYjE2NWRiNmQ0NzZkOGVhMTk4ZDE4N2JjMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3RvbS5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNvbnRl
bnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jaygmc3Rh
dGUpOwogCi0gICAgRG9jdW1lbnRGcmFnbWVudCogY29udGVudCA9IGltcGwoKS5jb250ZW50KCk7
CisgICAgRG9jdW1lbnRGcmFnbWVudCogY29udGVudCA9IHdyYXBwZWQoKS5jb250ZW50KCk7CiAK
ICAgICBKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0KCkt
PndvcmxkKCksIGNvbnRlbnQpOwogICAgIGlmICh3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggYTJjNjllYmVlM2RhODhhMzli
NzRlODcyZGJlNGM5MmQ3NWY1YTlkMi4uMmJkMmY2ZDhlMzg0N2IzMDRmZTk1OGM0MjgyZjIwMTk3
YTIzOWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0
b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNs
b3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0CiAgICAgLy8g
T3VyIGN1c3RvbSBjb2RlIGlzIG9ubHkgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUgV2luZG93IGNy
b3NzLWRvbWFpbiBzY2hlbWUsIHNvIGlmIGFjY2VzcyBpcwogICAgIC8vIGFsbG93ZWQsIHJldHVy
biBmYWxzZSBzbyB0aGUgbm9ybWFsIGxvb2t1cCB3aWxsIHRha2UgcGxhY2UuCiAgICAgU3RyaW5n
IG1lc3NhZ2U7Ci0gICAgaWYgKHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCku
ZnJhbWUoKSwgbWVzc2FnZSkpCisgICAgaWYgKHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCB3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93LCBldmVuIHdo
ZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KQEAgLTY5LDE0ICs2OSwxNCBAQCBib29sIEpTSGlzdG9y
eTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBwcmludEVycm9y
TWVzc2FnZUZvckZyYW1lKGltcGwoKS5mcmFtZSgpLCBtZXNzYWdlKTsKKyAgICBwcmludEVycm9y
TWVzc2FnZUZvckZyYW1lKHdyYXBwZWQoKS5mcmFtZSgpLCBtZXNzYWdlKTsKICAgICBzbG90LnNl
dFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEpTSGlzdG9yeTo6cHV0
RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgaW1w
bCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHdy
YXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtODQsNyArODQsNyBAQCBib29sIEpTSGlzdG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5UwogYm9vbCBKU0hp
c3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgSlNI
aXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlCiBib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSGlzdG9yeSo+KGNlbGwpOwotICAg
IGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5m
cmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiB9CkBAIC0xMDAsMTQgKzEwMCwxNCBAQCBib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcgog
dm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSGlz
dG9yeSo+KG9iamVjdCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywg
dGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogewotICAgIEhpc3RvcnkmIGhpc3RvcnkgPSBpbXBsKCk7CisgICAg
SGlzdG9yeSYgaGlzdG9yeSA9IHdyYXBwZWQoKTsKIAogICAgIEpTVmFsdWUgY2FjaGVkVmFsdWUg
PSBtX3N0YXRlLmdldCgpOwogICAgIGlmICghY2FjaGVkVmFsdWUuaXNFbXB0eSgpICYmICFoaXN0
b3J5LnN0YXRlQ2hhbmdlZCgpKQpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5
OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVz
aFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1Rv
RnJhbWUoJnN0YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0
YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVu
dCgwKSwgMCwgMCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hT
dGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRp
dGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UHVzaCwgZWMpOworICAgIHdyYXBw
ZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmws
IEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UHVzaCwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3RhdGUuY2xlYXIoKTsKQEAgLTE1MCw3ICsxNTAsNyBA
QCBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFs
dWUgSlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAo
IXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIGltcGwoKS5mcmFtZSgpKSkKKyAgICBp
ZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIHdyYXBwZWQoKS5mcmFtZSgpKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgm
c3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCAwLCAwKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBKU1Zh
bHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlz
dG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBl
OjpSZXBsYWNlLCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0
YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpSZXBs
YWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgbV9zdGF0
ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFi
YXNlQ3VzdG9tLmNwcAppbmRleCBlNTM1MDhmMWI2NWQzYWFhYzg2Y2MzZTU0OTBjMGE5M2U4M2E0
MGViLi5jZGViNjg5MjRmM2U0NzEyMjgzNzFmZGU0NmIxYWJlYzcyZjg4MTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAt
NzYsNyArNzYsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5jcmVh
dGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBlYykuZ2V0KCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVk
KCkuY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgZWMpLmdl
dCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0
U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RT
dG9yZUN1c3RvbS5jcHAKaW5kZXggMDEyODhjNmVhY2FmNzU3ODQzNGM0MTIxODVkMDU0ZDU2ODI4
YjlkYS4uMThmMDI0ZmYyMWNhZjNiNGY3YzA0OGFkZjk0MTU5ZDRjMzIyOTg5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRl
eChFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCku
Y3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBl
YykuZ2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCgpLCB3cmFwcGVkKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwgdW5pcXVl
LCBtdWx0aUVudHJ5LCBlYykuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVj
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4IGUy
NmJiZTc4ZDlmYmJjNDkyMGNlMWVmY2I0YzM1MGZkN2ExMzI0YjguLjllNjllMWJmZDY2NGI2NmE4
YzNkYWRmMTcyNWZhNDg4Njk5Mzg4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4
dE1lbnUoRXhlY1N0YXRlJiBzdGF0ZSkKICNlbHNlCiAgICAgVmVjdG9yPENvbnRleHRNZW51SXRl
bT4gaXRlbXMgPSBtZW51Lml0ZW1zKCk7CiAjZW5kaWYKLSAgICBpbXBsKCkuc2hvd0NvbnRleHRN
ZW51KGV2ZW50LCBpdGVtcyk7CisgICAgd3JhcHBlZCgpLnNob3dDb250ZXh0TWVudShldmVudCwg
aXRlbXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDEzMWUy
ODcwYmRiNTlkNjA1MzZhOTEwYTc3MWRkNTA3NzJjMDZlNDkuLjAwODNlMGNmMTU5Y2MxZjg5MDBj
ZmExOGRkN2I0MjU1ZTA5MzQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUg
PSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIHNsb3Quc2V0
VW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzMsNyArNzMsNyBAQCBib29s
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcgogCiBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFtZSgp
OworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBKU0xvY2F0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3AKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9j
YXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0
aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywg
dGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgSlNMb2NhdGlv
bjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwCiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0
aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhl
IHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRo
aXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9G
cmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
TG9jYXRpb24qPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIGxvY2F0aW9uIG9iamVj
dCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkp
KQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC0x
MzQsMTEgKzEzNCwxMSBAQCBib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiBKU1ZhbHVlIEpTTG9j
YXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBGcmFtZSog
ZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRl
LCBmcmFtZSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIGpz
U3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLnRvU3RyaW5nKCkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS50b1N0cmluZygpKTsKIH0KIAogYm9v
bCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0
b20uY3BwCmluZGV4IDgwMThiMjYzM2I3OGU5Y2UxZGUyOTEzM2Q5ZDk0ZTY3MDJlYTM1MWUuLjc1
ZTljYWJiYzM4OTdlMTYwMWVkNmM2NTNjNDVmOWNiNWYyNTI3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3Bw
CkBAIC0zNyw1NCArMzcsNTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTTWVk
aWFTb3VyY2VTdGF0ZXM6OndpZHRoKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBs
KCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBqc051bWJlcihp
bXBsKCkud2lkdGgoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS53aWR0aCgpKTsK
IH0KIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0YXRlJikgY29u
c3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlmICghd3JhcHBl
ZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuaGVpZ2h0KCkpOworICAgIHJldHVybiBqc051
bWJlcih3cmFwcGVkKCkuaGVpZ2h0KCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0
ZXM6OmZyYW1lUmF0ZShFeGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmICghaW1wbCgpLmhhc1Zp
ZGVvU291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAgcmV0dXJuIGpzTnVtYmVyKGltcGwo
KS5mcmFtZVJhdGUoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5mcmFtZVJhdGUo
KSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8oRXhlY1N0
YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlm
ICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuYXNwZWN0UmF0aW8oKSk7Cisg
ICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5hc3BlY3RSYXRpbygpKTsKIH0KIAogSlNWYWx1
ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0
CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQo
KS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IGltcGwoKS5mYWNpbmdNb2RlKCk7CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBtb2RlID0gd3JhcHBlZCgpLmZhY2luZ01vZGUoKTsKICAgICBpZiAo
bW9kZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIAotICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwoKS5mYWNpbmdNb2RlKCkpOwor
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5mYWNpbmdNb2Rl
KCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVjU3RhdGUm
KSBjb25zdAogewotICAgIGlmIChpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAod3Jh
cHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkudm9sdW1lKCkpOworICAgIHJldHVybiBq
c051bWJlcih3cmFwcGVkKCkudm9sdW1lKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxD
dXN0b20uY3BwCmluZGV4IDAxOTY1ZTRiNDI3MjY2ZmZkMjc4OWM4YjliMjg0OGE5YWUyZGE4N2Eu
LjM3NWRkNGI1ZjAzNjM5M2ZhYmVmYzMzODg3N2E2N2JlZTI3ZmJiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBA
IC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTWVzc2FnZUNo
YW5uZWw6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgpLnBvcnQxKCkpCisgICAgaWYg
KE1lc3NhZ2VQb3J0KiBwb3J0ID0gd3JhcHBlZCgpLnBvcnQxKCkpCiAgICAgICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IGltcGwo
KS5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHdyYXBwZWQoKS5wb3J0Migp
KQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA0
NGQ5NTQ3ZjY3NmU5ODU2ZTlkNWE0MWI0NzQyNTIzZDRjNzIxNTMzLi5iNTVkYzRlYTI1MjQ0MDJl
NWJlNGE4MmQyMjU2NjEwMGY2MjMxYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBAIEpTVmFs
dWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgTWVzc2FnZUV2ZW50JiBldmVudCA9
IGltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAgIGNhc2UgTWVz
c2FnZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7CkBAIC03OCw3ICs3OCw3IEBAIEpTVmFs
dWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogICAgIGNh
c2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZToKICAgICAgICAg
aWYgKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IGV2ZW50
LmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBNZXNzYWdlUG9y
dEFycmF5IHBvcnRzID0gaW1wbCgpLnBvcnRzKCk7CisgICAgICAgICAgICBNZXNzYWdlUG9ydEFy
cmF5IHBvcnRzID0gd3JhcHBlZCgpLnBvcnRzKCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2h5
IGRvZXMgdGhpcyBzdXBwcmVzcyBleGNlcHRpb25zPwogICAgICAgICAgICAgcmVzdWx0ID0gc2Vy
aWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCAmcG9ydHMs
IE5vblRocm93aW5nKTsKICAgICAgICAgfSBlbHNlCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50KiBqc0V2
ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZUV2ZW50JiBldmVudCA9IGpzRXZl
bnQtPmltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0ganNFdmVudC0+d3JhcHBlZCgp
OwogICAgIGV2ZW50LmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5j
ZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcs
IFdURjo6bW92ZShtZXNzYWdlUG9ydHMpKTsKICAgICBqc0V2ZW50LT5tX2RhdGEuc2V0KHN0YXRl
LnZtKCksIGpzRXZlbnQsIGRhdGFBcmcuanNWYWx1ZSgpKTsKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBv
cnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAKaW5kZXggMjM5ZjQ3YWZkNmRhNWViZTUxOTBlN2NiYjU5M2UzM2JlYmY5MWUxZi4u
NmIyMTI0NDk4NzVlNzhlOGNiYmRkNzJmYzIzZDBmNjliODM5NjkwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTQ4LDEz
ICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIEpTTWVzc2FnZVBvcnQ6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIC8vIElmIHdl
IGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBwb3J0LCB3ZSBjYW4gZGlyZWN0bHkgbWFyayBpdCBh
cyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJlIHJlbW90ZWx5IGVudGFuZ2xlZCBhcmUgbWFya2Vk
IGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoKS4KLSAgICBpZiAoTWVzc2Fn
ZVBvcnQqIHBvcnQgPSBpbXBsKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAgICBpZiAoTWVz
c2FnZVBvcnQqIHBvcnQgPSB3cmFwcGVkKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNNZXNz
YWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmltcGwoKSk7CisgICAgcmV0dXJuIGhhbmRsZVBv
c3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsKIH0KIAogdm9pZCBmaWxsTWVzc2FnZVBvcnRB
cnJheShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgTWVzc2FnZVBv
cnRBcnJheSYgcG9ydEFycmF5LCBBcnJheUJ1ZmZlckFycmF5JiBhcnJheUJ1ZmZlcnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAppbmRleCBjNDY4YWFkNmE2MTRlNDlmMmE3ZmM5OTIy
ZWMyYmFkMjQyNDJlYzVkLi5kZWFiYzU0MWRiMDZmMTA5ZTRkMGJmYzZjNzE5NDA5YjUxODliOWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNp
bmcgRGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9p
bnQ7CiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lvblBvaW50
KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50ID0g
aW1wbCgpLmRlY2lzaW9uUG9pbnQoKTsKKyAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQg
PSB3cmFwcGVkKCkuZGVjaXNpb25Qb2ludCgpOwogICAgIHN3aXRjaCAoZGVjaXNpb25Qb2ludCkg
ewogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3Q6CiAgICAgY2Fz
ZSBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0OgpAQCAtNjksNyArNjksNyBAQCB2b2lkIEpT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbAogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhOgog
ICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGE6CiAgICAgY2Fz
ZSBEZWNpc2lvblBvaW50OjpOZXZlcjoKLSAgICAgICAgaW1wbCgpLnNldERlY2lzaW9uUG9pbnQo
ZGVjaXNpb25Qb2ludCk7CisgICAgICAgIHdyYXBwZWQoKS5zZXREZWNpc2lvblBvaW50KGRlY2lz
aW9uUG9pbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcsNyArMTA3LDcgQEAg
c3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lv
bihFeGVjU3RhdGUmKSBjb25zdAogewotICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgpLmRlY2lz
aW9uKCkpOworICAgIHJldHVybiB0b0pTVmFsdWUod3JhcHBlZCgpLmRlY2lzaW9uKCkpOwogfQog
CiB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZvaWQgSlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaW1wbCgpLnNldERlY2lzaW9uKGRlY2lzaW9uKTsKKyAgICB3cmFwcGVkKCkuc2V0
RGVjaXNpb24oZGVjaXNpb24pOwogfQogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAogewotICAgIHJl
dHVybiB0b0pTVmFsdWUoaW1wbCgpLnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSk7CisgICAgcmV0
dXJuIHRvSlNWYWx1ZSh3cmFwcGVkKCkudW5ibG9ja1JlcXVlc3REZWNpc2lvbigpKTsKIH0KIAog
dm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2
b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bihFeGVjU3RhdGUmIHN0YXRlLCBKUwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24odW5i
bG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgd3JhcHBlZCgpLnNldFVuYmxvY2tSZXF1ZXN0RGVj
aXNpb24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CiB9CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2Jz
ZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcAppbmRleCAzODA1NTcyNDcyMDI2YjJhNDhkNDIzMzZhNmNiMDlkNDhi
ZGE2Yjg1Li5jNmM1NzI0MDNhZTZiNzgzMjQ2MmUwNjFiNmMzMjYxMzI0NDMyN2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlKiBleGVjKQogCiBib29sIEpTTXV0
YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZl
cio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+aW1wbCgpOworICAgIE11dGF0aW9uT2JzZXJ2
ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlcio+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKS0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JzZXJ2ZWROb2RlcyA9IG9ic2VydmVy
LmdldE9ic2VydmVkTm9kZXMoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBvYnNlcnZlZE5vZGVzLmJl
Z2luKCksIGVuZCA9IG9ic2VydmVkTm9kZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBpZiAodmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCgqaXQpKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAppbmRl
eCA4NDZjZjhmYWE4YzUxMWVmODIxNTE3MDFiNGEwMDhiYWZhMWJmY2QxLi5hMzFlNDZhODQzMjE4
Yzk4NmE4NDEyYTQ4MDc2ZjA5ODliYjg0NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQog
ewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLmdldE5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBp
ZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDNkNWZlMTI0ODY0ODYzNGE2
NGExZDg5NzVjNGFjMWJjM2QxYmQ5YjguLmYyNGMwNTVmYzg5YjlkZTdiOWE1NWM0ZTYwZTQ5MDcy
Y2FkOTU2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdh
dG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRv
ckN1c3RvbS5jcHAKQEAgLTY4LDEzICs2OCwxMyBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJr
aXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgfQogCi0gICAgaWYgKCFpbXBsKCkuZnJhbWUoKSkgeworICAgIGlmICghd3Jh
cHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NV
UFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAg
ICAvLyBXZSBkbyBub3QgbmVlZCB0byBwcm90ZWN0IHRoZSBjb250ZXh0IChpLmUuIGRvY3VtZW50
KSBoZXJlIGFzIFVzZXJNZWRpYVJlcXVlc3QgaXMgb2JzZXJ2aW5nIGNvbnRleHQgZGVzdHJ1Y3Rp
b24gYW5kIHdpbGwgY2hlY2sgdmFsaWRpdHkgYmVmb3JlIHJlc29sdmluZy9yZWplY3RpbmcgcHJv
bWlzZS4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQo
KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3cmFwcGVkKCkuZnJhbWUoKS0+ZG9jdW1lbnQo
KTsKIAogICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjayA9IEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOjpjcmVhdGUo
YXNPYmplY3Qoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBnbG9iYWxPYmplY3QoKSk7CiAg
ICAgYXV0byByZXNvbHZlQ2FsbGJhY2sgPSBbc3VjY2Vzc0NhbGxiYWNrLCBkb2N1bWVudF0oY29u
c3QgUmVmUHRyPE1lZGlhU3RyZWFtPiYgc3RyZWFtKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDJjMWE5ZjgzMGUzNTI3MTU1YTZj
ZjM3ZDY3N2RjYjIwMmQxMzZjZTguLjMxMjNjOTQ2MDk1NGViZGIzNWQyMjhmOThkOTYxY2Y0N2Zj
M2YyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApA
QCAtMTA4LDEzICsxMDgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVhY2hhYmxlRnJvbURP
TShOb2RlKiBub2RlLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIGJvb2wgSlNOb2RlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNOb2RlKiBqc05vZGUgPSBq
c0Nhc3Q8SlNOb2RlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIHJldHVybiBpc1Jl
YWNoYWJsZUZyb21ET00oJmpzTm9kZS0+aW1wbCgpLCB2aXNpdG9yKTsKKyAgICByZXR1cm4gaXNS
ZWFjaGFibGVGcm9tRE9NKCZqc05vZGUtPndyYXBwZWQoKSwgdmlzaXRvcik7CiB9CiAKIEpTVmFs
dWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmluc2VydEJlZm9yZShKU05vZGU6
OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFy
Z3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkuaW5zZXJ0QmVmb3JlKEpT
Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0b1dyYXBwZWQoc3Rh
dGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
ICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTI0LDcg
KzEyNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkK
IEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLnJlcGxhY2VDaGlsZChK
U05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0
YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkucmVwbGFjZUNo
aWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0b1dyYXBw
ZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDEpOwpAQCAt
MTM0LDcgKzEzNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBz
dGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQogewog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgb2sgPSBpbXBsKCkucmVtb3ZlQ2hp
bGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7CisgICAgYm9vbCBv
ayA9IHdyYXBwZWQoKS5yZW1vdmVDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVu
dCgwKSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgaWYgKG9r
KQogICAgICAgICByZXR1cm4gc3RhdGUuYXJndW1lbnQoMCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAg
SlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpT
Tm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmFwcGVuZENoaWxkKEpTTm9kZTo6dG9XcmFw
cGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkuYXBw
ZW5kQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJu
IHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTU2NvcGUqIEpTTm9kZTo6
cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogbm9kZSkgY29u
c3QKIAogdm9pZCBKU05vZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKSkpOwogfQogCiBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCmluZGV4IDJi
NDA0MGUzZDk2ZjE2N2U4NjViNjY4MDVhZjNkOTlhMDNiNDMwOGYuLmIzZjAzNjEzOWZhMGZiMTgw
NjQ4NGE2MTBkODRhYzVhYzU3Y2E0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChOb2RlRmlsdGVyKiBm
aWx0ZXIgPSBpbXBsKCkuZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IHdy
YXBwZWQoKS5maWx0ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZpbHRlcik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5j
cHAKaW5kZXggZjdkODYzYjhlMzk1ZGJmY2YxMTNjYzY4NmIzNWY0Njg3NGQ1MDBhMi4uYmEwNjJi
ZWEyOWI0NjAzZDRiNzE5YmNkNzdmYjZmMjcxZTMxZDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBi
b29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbAogICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxpc3QgPSBqc0Nh
c3Q8SlNOb2RlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBpZiAoIWpzTm9k
ZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNMaXZlTm9kZUxpc3QoKSkKLSAgICAgICAgcmV0dXJu
IHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8TGl2ZU5vZGVMaXN0
Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChqc05vZGVMaXN0
LT5pbXBsKCkuaXNDaGlsZE5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRh
aW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PENoaWxkTm9kZUxpc3QmPihqc05vZGVMaXN0
LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7Ci0gICAgaWYgKGpzTm9kZUxpc3QtPmltcGwoKS5pc0Vt
cHR5Tm9kZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290
KHJvb3Qoc3RhdGljX2Nhc3Q8RW1wdHlOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmltcGwoKSkub3du
ZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzTGl2ZU5vZGVMaXN0
KCkpCisgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRp
Y19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPndyYXBwZWQoKSkub3duZXJOb2RlKCkp
KTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzQ2hpbGROb2RlTGlzdCgpKQorICAg
ICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxD
aGlsZE5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+d3JhcHBlZCgpKS5vd25lck5vZGUoKSkpOworICAg
IGlmIChqc05vZGVMaXN0LT53cmFwcGVkKCkuaXNFbXB0eU5vZGVMaXN0KCkpCisgICAgICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PEVtcHR5Tm9k
ZUxpc3QmPihqc05vZGVMaXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmlu
Zy5jcHAKaW5kZXggMzQzNjFhZjQ5NmE4ZGM5N2VjN2IzNDZhNWMwNDNkOTZmY2RiYjk1Zi4uNDQ3
YzVkNzAwZDU2NTFlYWRmMTQwNGJkM2E3YjFmNDg2MTEzMzI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcApAQCAtNDMsNyArNDMsNyBAQCBWZWN0
b3I8Tm9kZU9yU3RyaW5nPiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUmIHN0YXRlKQog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7CiAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKTsKICAgICAgICAgaWYg
KGF1dG8qIG5vZGUgPSBqc0R5bmFtaWNDYXN0PEpTTm9kZSo+KHZhbHVlKSkKLSAgICAgICAgICAg
IHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoJm5vZGUtPmltcGwoKSk7CisgICAgICAgICAgICByZXN1
bHQudW5jaGVja2VkQXBwZW5kKCZub2RlLT53cmFwcGVkKCkpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAg
ICAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAppbmRleCA5OGM4ODE0
OWYzOWUyYjBjYmE4MWQzNTJlNWI5YmRiMjkwNWNiMjk3Li4zYWRmODAyMjVjNDNiZmIzZGRiNTY3
YjE2OTVjYWU3ZDAyNmJlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZShFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIE9zY2lsbGF0b3JOb2RlJiBpbXAgPSBpbXBs
KCk7CisgICAgT3NjaWxsYXRvck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShM
RUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcAppbmRleCA4NmMw
M2VkM2ZiODkyNTlhY2Y5OGNlMzMyYTY5MjQyODdlZTNiMDFkLi42NzkwZjg0YTdjZWU5ZjE2NjEy
NmNmNjQxNDUwYzFiNDM0Njg0MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUGFubmVyTm9kZSYgaW1wID0gaW1wbCgpOwor
ICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VC
X0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CkBAIC02Myw3ICs2Myw3IEBAIHZv
aWQgSlNQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKIAogdm9pZCBKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBQYW5uZXJOb2RlJiBpbXAgPSBpbXBsKCk7
CisgICAgUGFubmVyTm9kZSYgaW1wID0gd3JhcHBlZCgpOwogCiAjaWYgRU5BQkxFKExFR0FDWV9X
RUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4
IGM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRjODRkYTkwY2EuLjgzMGMzMDU1ODg0MWMw
MjIyYmRmMmQ4ODEzZWRkN2IyMTc5MDVkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtNTcsNyArNTcs
NyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFz
ZShIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRQogCiBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNj
cmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxFbGVtZW50
KQogewotICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+aW1wbCgpOwor
ICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+d3JhcHBlZCgpOwogICAg
IGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9i
amVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxFbGVtZQogCiBKU09i
amVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MRWxlbWVudCog
anNIVE1MRWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1l
bnQtPmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1lbnQtPndy
YXBwZWQoKTsKICAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBDYWxsVHlwZSBwbHVnaW5F
bGVtZW50R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgQ2FsbERhdGEmIGNhbGxE
YXRhKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogICAgIH0KICAgICAKLSAgICBJbnN0
YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT5pbXBsKCkpOworICAgIElu
c3RhbmNlKiBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGVsZW1lbnQtPndyYXBwZWQoKSk7CiAg
ICAgaWYgKCFpbnN0YW5jZSB8fCAhaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhv
ZCgpKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVOb25lOwogICAgIGNhbGxEYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNhbGxQbHVnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA1Zjg2OWE5MTJlMDY2ZTQ5YjUyZWU4
YTBmMTRiZjY0NzVkYTJhOGE4Li45NWEwZmI3ODI1Y2IzMDZiMDQ4YmM3ODNjZmYxYzZiOWExMTdi
MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZl
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVF
dmVudEN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgSlNWYWx1ZSBKU1BvcFN0YXRlRXZlbnQ6
OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAotICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gaW1wbCgpOworICAgIFBv
cFN0YXRlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogCiAgICAgaWYgKCFldmVudC5zdGF0ZSgp
Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBhIFBvcFN0
YXRlRXZlbnQgZG9lcyBub3QgbGVhayBvYmplY3RzIGluIGl0cyBzdGF0ZSBwcm9wZXJ0eSBhY3Jv
c3MgaXNvbGF0ZWQgRE9NIHdvcmxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCmluZGV4IDllZjVlOTNlZDFjZTVh
ZmFiYmQ5YWRjYjBkY2I2YTM4YjRmNGFkMTEuLjQwZTViOTBjYzI3ZThjNGUxMzMwMDJiNjJkOGEx
MThhMDE3NDU3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRD
U3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGJvb2wgSlNSVENTdGF0c1Jlc3BvbnNlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0g
ICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRleCBiMzM2NGQy
NjQ1MTQ1MjZiNTdiZmVlMGVkMThkZjVkNmQwNDBjODI0Li4zZWFlZjI2MTI1YmZhYjhmN2Q1MmE1
MjEzNjAyZGYwZjMxZmUyOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTQ3LDE3ICs0Nywx
NyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUmIHN0YXRl
KQogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBUWVBFX01JU01BVENIX0VSUik7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBpZiAoaW5kZXggPCAwIHx8
ICh1bnNpZ25lZClpbmRleCA+PSBpbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAoaW5kZXggPCAw
IHx8ICh1bnNpZ25lZClpbmRleCA+PSB3cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5ERVhfU0laRV9FUlIpOwogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICB9CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoJnN0YXRlKTsKIAotICAgIHVuc2lnbmVkIG51bUNvbHVtbnMgPSBpbXBsKCkuY29s
dW1uTmFtZXMoKS5zaXplKCk7CisgICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IHdyYXBwZWQoKS5j
b2x1bW5OYW1lcygpLnNpemUoKTsKICAgICB1bnNpZ25lZCB2YWx1ZXNJbmRleCA9IGluZGV4ICog
bnVtQ29sdW1uczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29sdW1uczsgaSsr
KSB7Ci0gICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IGltcGwoKS52YWx1ZXMoKVt2YWx1
ZXNJbmRleCArIGldOworICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSB3cmFwcGVkKCku
dmFsdWVzKClbdmFsdWVzSW5kZXggKyBpXTsKICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlOwogCiAg
ICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUg
SlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBpbXBsKCku
Y29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAg
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCB3cmFwcGVkKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUg
fCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKaW5kZXgg
OTVhOGRmY2U4NWEzMjZiYjMxNWIwZGYyYmVmMWU4NDQwYmExNTFmZi4uNzQyMTI1NmIwNDZhOGQ3
MjY4ZTIzNjdkYzJlMTNjZmFhYzIyNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuZXhlY3V0ZVNR
TChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxi
YWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHdyYXBwZWQoKS5leGVjdXRlU1FMKHNxbFN0YXRlbWVu
dCwgc3FsVmFsdWVzLCBjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVsZWFzZSgp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NW
R0xlbmd0aEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0
aEN1c3RvbS5jcHAKaW5kZXggYjZmMGNmODM2MTVmNzFlNjU1ODhjZTNkZTNmY2JiYWRkMTViNmVk
ZS4uNjRlMTEyODQ2Zjg3ZTI2YmE0NWY0MDMxMzA2ODNjODRiMGJhYTdlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcApAQCAtMzMsOSAr
MzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OnZhbHVl
KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgU1ZHTGVuZ3RoJiBwb2RJbXAgPSBpbXBs
KCkucHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICBTVkdMZW5ndGgmIHBvZEltcCA9IHdyYXBwZWQo
KS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVsZW1lbnQoKSk7Cisg
ICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5jb250ZXh0RWxlbWVu
dCgpKTsKICAgICBmbG9hdCB2YWx1ZSA9IHBvZEltcC52YWx1ZShsZW5ndGhDb250ZXh0LCBlYyk7
CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKQEAg
LTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6dmFsdWUoRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoaW1wbCgpLmlzUmVhZE9ubHkoKSkgeworICAgIGlm
ICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC01NywyNyArNTcsMjcgQEAgdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNW
R0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgU1ZHTGVu
Z3RoJiBwb2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBs
KCkuY29udGV4dEVsZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0
KHdyYXBwZWQoKS5jb250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuc2V0VmFsdWUodmFsdWUu
dG9GbG9hdCgmc3RhdGUpLCBsZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGltcGwoKS5jb21taXRDaGFuZ2UoKTsKKyAgICB3cmFwcGVkKCkuY29tbWl0Q2hhbmdl
KCk7CiB9CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGltcGwoKS5pc1JlYWRPbmx5KCkpIHsKKyAgICBp
ZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICB9CiAKLSAgICBTVkdMZW5ndGgmIHBvZEltcCA9IGltcGwoKS5wcm9wZXJ0
eVJlZmVyZW5jZSgpOworICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnByb3BlcnR5
UmVmZXJlbmNlKCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKQEAgLTg3LDE0ICs4NywxNCBAQCBKU1ZhbHVlIEpT
U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVsZW1lbnQo
KSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5jb250ZXh0
RWxlbWVudCgpKTsKICAgICBwb2RJbXAuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUs
IGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAK
LSAgICBpbXBsKCkuY29tbWl0Q2hhbmdlKCk7CisgICAgd3JhcHBlZCgpLmNvbW1pdENoYW5nZSgp
OwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA1ODVkNzI0N2I2MWJhMDkwZDQxZDA4
NjE2ZTUyZjI1MTBlM2Y0ZDNmLi5iODQyMzRiMTdlNWIxYjQ2NTEwYjBlZTVjZTIyNTljMjEwOWFh
YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgYm9vbCBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgaXRlbSA9
IGltcGwoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsK
KyAgICBTdHJpbmcgaXRlbSA9IHdyYXBwZWQoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAg
ICAgaWYgKGl0ZW0uaXNOdWxsKCkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSlNTdG9yYWdlOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdGhp
c09iamVjdC0+aW1wbCgpLnJlbW92ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSwgZWMpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5yZW1vdmVJdGVtKHByb3BlcnR5
TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsMTIgKzgzLDEyIEBAIHZvaWQgSlNT
dG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
U3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aChlYyk7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aChlYyk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlz
T2JqZWN0LT5pbXBsKCkua2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5rZXkoaSwg
ZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOCw3ICsxMTgs
NyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnNldEl0ZW0ocHJvcGVydHlOYW1lVG9T
dHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0
SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCmlu
ZGV4IDBhNjlhMmU2ZmQyM2MyOTgzZjc5OGY0ZDA1ZjI2MTcxNzFhZjYzNDAuLmNiOTM5N2VmN2Qz
MWQ5NmUwNjVjMDJmNGY0OTA3YzYxNGMzZTgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVl
Um9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3Jh
cHBlZCgpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5j
cHAKaW5kZXggZDFjNjA2NWE5NzU4MGYyOTdlNmVjMjQ3YmZmZjgxNzRiODk5NTZjMS4uYzQyMjJh
OWUzNGFmMjY1NTU4YmVlZWU3ZTg1MTJjMzU2MjExNWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKICAgICBpZiAocHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGl0ZW0gPSBpbXBs
KCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
IGF1dG8qIGl0ZW0gPSB3cmFwcGVkKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3Rv
bS5jcHAKaW5kZXggZjViYTRkMzAyOWNkNjg4ZjkzNWVmZTMwYjc5ZDc5YmUyMjM0N2YyOS4uYTUw
ZjgzOTliYTU4NjRkMDFhYjEzMGM4ZmNkNTFkZTRlYmRlZTZkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMTUyLDcg
KzE1Miw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRlJiBzdGF0
ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtl
eS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKLSAgICAgICAgaW1wbCgpLmRvY3Vt
ZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2VuY3J5cHQn
IikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVz
YWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQpAQCAtMjA1LDcgKzIwNSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmRl
Y3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRGVjcnlwdCkpIHsK
LSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8g
bm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZGVjcnlwdCciKSk7CiAg
ICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjU3LDcgKzI1Nyw3IEBAIEpTVmFs
dWUgSlNTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tl
eVVzYWdlU2lnbikpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwo
IktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOworICAgICAgICB3cmFwcGVkKCku
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnc2ln
biciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJS
KTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMzA5LDcgKzMwOSw3
IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAogICAgIGlmICgha2V5LT5hbGxv
d3MoQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
QVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnknIikpOworICAg
ICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBu
b3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
Tk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CkBAIC02NDYsNyArNjQ2LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVj
U3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAog
ICAgIGlmICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBLZXkpKSB7Ci0g
ICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5v
dCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBB
U0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikpOwogICAg
ICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBKU1ZhbHVl
IEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBpbmdLZXktPmFs
bG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3Vud3JhcEtleSci
KSk7CisgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNh
Z2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOwogICAgICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA1N2Y4OGI5NTVjZjU4NTE4OGMyYTZiZWU0ZGY3NzRmNGYy
OTUxYmVmLi5kZWI0NDBiM2FiZWFiN2I4ZmU0MjIwYjdiYWFkMTAyMjBhNDk3YjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgSlNUZXh0VHJhY2tD
dWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU1RleHRU
cmFja0N1ZSoganNUZXh0VHJhY2tDdWUgPSBqc0Nhc3Q8SlNUZXh0VHJhY2tDdWUqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGV4dFRyYWNrQ3VlJiB0ZXh0VHJhY2tDdWUgPSBqc1Rl
eHRUcmFja0N1ZS0+aW1wbCgpOworICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3VlID0ganNU
ZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAogICAgIC8vIElmIHRoZSBjdWUgaXMgZmlyaW5nIGV2
ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKICAgICAvLyB0
aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5l
cnMuCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUqIGN1ZSkKIAogdm9pZCBKU1RleHRU
cmFja0N1ZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gaW1wbCgpLnRyYWNrKCkpCisgICAgaWYg
KFRleHRUcmFjayogdGV4dFRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCkpCiAgICAgICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KHRleHRUcmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggZWIxOWYyNTc4NzE5
OWYxZTcwZTk5YWY3YWQyZmIwNDI3Y2U5Zjc1ZC4uN2ZjZTZhZDJhZTVkNGYxZTFiMzEyMDc4OTU1
ZWEwZjY4NDBhY2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHZvaWQgSlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIHZvaWQgSlNU
ZXh0VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgdm9pZCBKU1RleHRUcmFjazo6c2V0S2luZChFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSkt
PnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0S2lu
ZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6OnNldExhbmd1
YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0g
dmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFuZ3VhZ2Uoc3Ry
aW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAKaW5kZXgg
ZTFiOGM2MzA5OTI2MWQxZjJiOWY1ZTdhNGZmNWRiNjUyYTkwYTg1NC4uM2Y0NmY0MzMxYmJiZTY2
ODEyNzcxMTRmYjNiNDJmMjRiZmU5Y2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1RleHRUcmFja0xpc3Q6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRP
cGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVl
Um9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAK
aW5kZXggOTc1MTQ2NzI0ZGIwMjY5MDU0NDQ1ODlhZGQ5MmY0MWJiNDUzMDhjNS4uOWE5NDM2YWY4
MDlhY2ZhYjZkYzUwOTg4NjhjNmU1OTZmODBkZjhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCBUcmFja0Jhc2Uq
IHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNUZXh0VHJhY2s6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiAmanNDYXN0PEpTVGV4dFRyYWNrKj4ob2JqZWN0KS0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU1RleHRUcmFjayo+KG9iamVjdCktPndyYXBwZWQoKTsK
ICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0F1ZGlvVHJhY2s6OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiAmanNDYXN0PEpTQXVkaW9UcmFjayo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAg
cmV0dXJuICZqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIGlm
IChvYmplY3QtPmluaGVyaXRzKEpTVmlkZW9UcmFjazo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
ICZqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4g
JmpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihvYmplY3QpLT53cmFwcGVkKCk7CiAKICAgICByZXR1cm4g
MDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0
b20uY3BwCmluZGV4IGY1MWQzYjk2M2M4MTgwM2NmZTcxYjk0N2I0MmM5ZGJkMDJiYjg1YmUuLmVh
YjZmZjIxMzhjNTNkN2UzZmViNjQ0OWIwNmQ3MWIzZGYyZTVjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNUcmFja0V2ZW50Ojp0cmFjayhF
eGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFRyYWNrQmFzZSogdHJhY2sgPSBpbXBsKCku
dHJhY2soKTsKKyAgICBUcmFja0Jhc2UqIHRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCk7CiAgICAg
aWYgKCF0cmFjaykKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAppbmRleCBjMWU2ODFkNDk3
YjQ0YzBiNDhlMzdhN2ZlYTA4MWIxMmQwZmMzNWQ3Li4yYmUwOGE5OTFmN2RkMTRlZjlhMmE2MmQx
OGYzMWQ5Y2YxNzE1M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gaW1wbCgp
LmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB3cmFwcGVkKCkuZmlsdGVy
KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcAppbmRleCA4ZmM2ZWY4ZmIzMGQyMGIzOWJkMDk4
ZTJmMTkzMDU5MmZmNDI4YWZiLi5hZGY0OTM2NDczYjQyM2RjMTJkZWM3YWQ4MGRiZjcyMGFiM2Vh
OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVz
ZXJNZXNzYWdlSGFuZGxlciogaGFuZGxlciA9IGltcGwoKS5oYW5kbGVyKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpKSkgewor
ICAgIGlmIChVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSB3cmFwcGVkKCkuaGFuZGxlcihw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxPYmplY3QoKS0+
d29ybGQoKSkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBSZWFkT25seSB8IERvbnRE
ZWxldGUgfCBEb250RW51bSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGFuZGxlcikpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA2ZjBhZjVhZjVhOGVhMWUxZWE3ZTVm
ZTE5MWUwYzgwN2MyMDQxZTkwLi5kODI4ZTEyZmEwYzYyZTA4M2IwMzZiOWM3NDNmMDQwZTRjNjdm
OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1
c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpT
VmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOworICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogdm9pZCBKU1ZpZGVvVHJh
Y2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGltcGwoKS5zZXRLaW5kKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldEtpbmQoc3Ry
aW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dmFsdWUpOwpAQCAtNTksNyArNTksNyBAQCB2b2lkIEpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2Uo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1
ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRMYW5ndWFnZShzdHJpbmcp
OworICAgIHdyYXBwZWQoKS5zZXRMYW5ndWFnZShzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCmluZGV4IDY2
ZDdiZWEzZTAwZTBkZTNhZjAxODE1ZGE2YjkyMWRlZGRiYzEzMTQuLmEyYTM2MTg0YTRlZWQ0OTU1
Mjk1YTFlNTg3N2I5ZGU0MDFlNjYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3Qocm9vdChpbXBsKCkuZWxlbWVudCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3Qod3JhcHBlZCgpLmVsZW1lbnQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA5OWZmNzAzYzQ2NDlhNjMwNGU2ODhiZmRh
MDFlNmY4YjEwZmNmNDZiLi43YzRlYzA4MTg3ODFjODcyMWVjZmJkNzU1MGZkNjE2ODFiZjJhMTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFdlYkcKIAogdm9pZCBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBwZWQo
KSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRlcm5hbGZv
cm1hdFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC05OSw3ICs5OSw3IEBAIEpTVmFsdWUg
SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDIpCiAgICAgICAgIHJldHVy
biBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGV4ZWMpKTsKIAotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQgPSBp
bXBsKCk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCA9IHdyYXBwZWQoKTsK
ICAgICB1bnNpZ25lZCBwbmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4IDRlNGU1Y2E5
OGZjMTQ5MDJhMmNjMDAwYjZhYjA2Mzg5MGEyMWIxNjUuLjgzMWNmNTkxZWQ3ZDA4ZTlhMDhlMTY0
MmE5NWEzMWM0NjYxZmRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcApAQCAt
MTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRlcihKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRlJiBzCiAgICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+aW1wbCgpOworICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPndyYXBwZWQoKTsKICAgICB1bnNp
Z25lZCB0YXJnZXQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7
CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbgogCiB2b2lk
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZpbXBsKCkp
OworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUm
IHN0YXRlKQpAQCAtMjczLDcgKzI3Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3Rh
dGUuYXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dy
YW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9n
cmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTI5Niw3ICsyOTYsNyBA
QCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5zaW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCi0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAt
MzE1LDcgKzMxNSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlCiAgICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIHRhcmdl
dCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAt
MzM5LDcgKzMzOSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
YXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTM1Nyw3ICszNTcsNyBA
QCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAg
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dlYkdMUHJv
Z3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXBy
b2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwpAQCAtMzgzLDcgKzM4Myw3
IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAg
ICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pbmhlcml0
cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRlcjo6dG9XcmFw
cGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKQEAgLTQwMCw3ICs0MDAsNyBAQCBKU1Zh
bHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmIChjb250ZXh0LmlzQ29udGV4dExv
c3QoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVl
ID0gY29udGV4dC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CkBAIC00MjEsNyArNDIxLDcgQEAg
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFw
cGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3Jh
cHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTY5MSw3NyArNjkxLDc3IEBAIHN0YXRp
YyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJpeFRvQ2Fs
bCBmLCBKU0M6OkV4ZWNTdGF0CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0xZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25mKGZfdW5pZm9ybTF2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0
YUZ1bmN0aW9uZihmX3VuaWZvcm0xdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTF2LCBzdGF0
ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0xdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0yZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRh
RnVuY3Rpb25mKGZfdW5pZm9ybTJ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1
bmN0aW9uZihmX3VuaWZvcm0ydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTJ2LCBzdGF0ZSwg
aW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0ydiwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0zZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVu
Y3Rpb25mKGZfdW5pZm9ybTN2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0
aW9uZihmX3VuaWZvcm0zdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTN2LCBzdGF0ZSwgaW1w
bCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwgc3RhdGUsIHdyYXBw
ZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm00ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rp
b25mKGZfdW5pZm9ybTR2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9u
ZihmX3VuaWZvcm00diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTR2LCBzdGF0ZSwgaW1wbCgp
KTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm00diwgc3RhdGUsIHdyYXBwZWQo
KSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXgyZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVu
Y3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4MmZ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJmdiwgc3RhdGUsIHdyYXBwZWQo
KSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXgzZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVu
Y3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4M2Z2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNmdiwgc3RhdGUsIHdyYXBwZWQo
KSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm1NYXRyaXg0ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVu
Y3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4NGZ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDRmdiwgc3RhdGUsIHdyYXBwZWQo
KSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRl
eEF0dHJpYjFmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5j
dGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFG
dW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjJmdihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhB
dHRyaWIydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0
ZXhBdHRyaWIydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIzdiwgc3RhdGUs
IGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIzdiwgc3Rh
dGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYjRmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIGltcGwoKSk7CisgICAg
cmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIHdyYXBwZWQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRl
eCBiNmQzOWFjMDcwZjU5NzczNzg5ODkxMjk5ZGRlMDAyMzU3MjU4MGQyLi5lZGU1YmI5N2E4Njhh
NDIxZjM1NzlmNDg3Zjc1OTlkYzg3NGU1ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZpbXBsKCkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmluZGV4IDA1YTll
NzAyZTdjODE5YmY3Yjc1MWQ5YmU3N2MxMTJiZTM1OTRmYjMuLjBlZmJkMTJmMDMzNDk2ZWMzY2Uy
Y2QwNmYxOTE3YjZmMWZkM2ViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZpbXBsKCkpOworICAg
IHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJndyYXBwZWQoKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlKiBleGVj
KQpAQCAtNTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKCkpOwogCiAgICAgLy8gU2VlIHNlY3Rpb24gNC44LjIgc3RlcCAxNCBvZiBXZWJX
b3JrZXJzIGZvciB3aHkgdGhpcyBpcyB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gCi0gICAgRE9N
V2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPmltcGwoKTsKKyAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d3JhcHBlZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgQVNTRVJUKHdpbmRvdy5kb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBh
Y2Q2MTdlODY5ODkyOTA3NTM3NmU1ODMyYWIyODNmMmQyZmE3OTAwLi41OGRhNzVlOGU3MzI5NDk1
OWRlMWJhNjM3NjczYjNjNzg4NTJmOGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAKIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKICAgICA6IEpTRE9NR2xvYmFs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKQotICAgICwgbV9pbXBsKGltcGwpCisgICAgLCBtX3dyYXBwZWQoaW1wbCkKIHsK
IH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVy
biBtX2ltcGwuZ2V0KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0KIAogYm9vbCBK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAppbmRleCAwMzE1MzBlZTU4NjEz
OWZjNWFiNmY4Yjg4NTE0YjU4NDgxMWM3MmRlLi4yZGU4Y2M0ZmEwNjhlZDM0NDIwNmYxMDA4YjRj
YTZhN2U2Yjc2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAotICAgICAgICBXb3JrZXJHbG9iYWxTY29w
ZSYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAgICAgICAgV29ya2VyR2xvYmFs
U2NvcGUmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFwcGVkOyB9CiAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAog
ICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRy
PFdvcmtlckdsb2JhbFNjb3BlPiBtX2ltcGw7CisgICAgICAgIFJlZlB0cjxXb3JrZXJHbG9iYWxT
Y29wZT4gbV93cmFwcGVkOwogICAgIH07CiAKICAgICAvLyBSZXR1cm5zIGEgSlNXb3JrZXJHbG9i
YWxTY29wZSBvciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCAxMjg5OGNjOTc1YmVmNTAw
YjNiMTBkYmFmMWY2NTBhODZkYzNjMzAyLi5hOTQ1NzczMmQyMjhjZmE5YWNhODAzNTVmZTNmNDJk
N2RmYTE1OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtNTMsOSArNTMsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFdvcmtlckxvY2F0aW9uKiBs
b2NhdGlvbiA9IGltcGwoKS5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYgKFdvcmtlckxvY2F0
aW9uKiBsb2NhdGlvbiA9IHdyYXBwZWQoKS5vcHRpb25hbExvY2F0aW9uKCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChsb2NhdGlvbik7Ci0gICAgaWYgKFdvcmtlck5hdmlnYXRvciog
bmF2aWdhdG9yID0gaW1wbCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkpCisgICAgaWYgKFdvcmtlck5h
dmlnYXRvciogbmF2aWdhdG9yID0gd3JhcHBlZCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkpCiAgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChuYXZpZ2F0b3IpOwogfQogCkBAIC04MCwzMSArODAs
MzEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgaW1wbCgp
LmltcG9ydFNjcmlwdHModXJscywgZWMpOworICAgIHdyYXBwZWQoKS5pbXBvcnRTY3JpcHRzKHVy
bHMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91
dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rp
b24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCktPndvcmxkKCksIGltcGwoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVh
dGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmICghYWN0aW9uKQogICAgICAgICByZXR1cm4ganNO
dW1iZXIoMCk7CiAgICAgaW50IGRlbGF5ID0gc3RhdGUuYXJndW1lbnQoMSkudG9JbnQzMigmc3Rh
dGUpOwotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuc2V0VGltZW91dChXVEY6Om1vdmUoYWN0
aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNldFRpbWVvdXQo
V1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxT
Y29wZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3Rh
dGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBpbXBsKCkuY29udGVudFNlY3VyaXR5UG9saWN5
KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVk
dWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIHdyYXBw
ZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIWFjdGlvbikKICAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogICAgIGludCBkZWxheSA9IHN0YXRlLmFyZ3VtZW50
KDEpLnRvSW50MzIoJnN0YXRlKTsKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLnNldEludGVy
dmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOworICAgIHJldHVybiBqc051bWJlcih3cmFw
cGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggOTE1YjA2Mjg3NDBlNzdlYTBkYTcwYTdm
YmJlY2RiNzE4MGNiYTZiZC4uODliM2JjZmJiMmM2NGIyZTNiOGVmMWJmOGY2Mzc5NmQ2YjhiMjQ3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAKQEAgLTU4LDE2ICs1OCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSBp
bXBsKCkub3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVw
bG9hZCA9IHdyYXBwZWQoKS5vcHRpb25hbFVwbG9hZCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3QodXBsb2FkKTsKIAotICAgIGlmIChEb2N1bWVudCogcmVzcG9uc2VEb2N1bWVudCA9
IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50KiByZXNwb25z
ZURvY3VtZW50ID0gd3JhcHBlZCgpLm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKICAgICAgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlRG9jdW1lbnQpOwogCi0gICAgaWYgKEFycmF5QnVm
ZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gaW1wbCgpLm9wdGlvbmFsUmVzcG9uc2VBcnJheUJ1
ZmZlcigpKQorICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9IHdyYXBw
ZWQoKS5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRP
cGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCi0gICAgaWYgKEJsb2IqIHJlc3BvbnNl
QmxvYiA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlQmxvYigpKQorICAgIGlmIChCbG9iKiByZXNw
b25zZUJsb2IgPSB3cmFwcGVkKCkub3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAgICAgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAg
SlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAKLSAgICBjb25zdCBVUkwmIHVybCA9IGltcGwoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmNvbXBsZXRlVVJMKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgIGNvbnN0IFVSTCYgdXJsID0gd3JhcHBlZCgpLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgU3RyaW5nIG1ldGhvZCA9
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0
ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg4LDEzICs4OCwxMyBAQCBKU1Zh
bHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgICAgICAg
ICAgaWYgKCFzdGF0ZS5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICAg
ICAgU3RyaW5nIHBhc3N3b3JkID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soJnN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCg0KSk7Ci0gICAgICAgICAgICAgICAgaW1wbCgpLm9wZW4o
bWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgZWMpOworICAgICAgICAgICAgICAg
IHdyYXBwZWQoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dvcmQsIGVjKTsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwg
dXJsLCBhc3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIHdyYXBwZWQoKS5vcGVuKG1l
dGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAgICAgd3JhcHBl
ZCgpLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYyk7CiAgICAgfSBlbHNlCi0gICAgICAgIGlt
cGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5vcGVuKG1ldGhv
ZCwgdXJsLCBlYyk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMzgsMzAgKzEzOCwzMCBAQCBwcml2YXRlOgogCiBKU1Zh
bHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoaW1wbCgpLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLnVybCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qod3JhcHBlZCgpLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgd3JhcHBlZCgpLnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIEpTVmFsdWUgdmFsID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYgKHZhbC5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBpbXBsKCkuc2VuZChlYyk7CisgICAgICAgIHdyYXBw
ZWQoKS5zZW5kKGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNEb2N1bWVudDo6aW5m
bygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVkKHZhbCksIGVj
KTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVkKHZhbCksIGVj
KTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQotICAgICAgICBp
bXBsKCkuc2VuZChKU0Jsb2I6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQo
KS5zZW5kKEpTQmxvYjo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5o
ZXJpdHMoSlNET01Gb3JtRGF0YTo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoSlNET01G
b3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQoSlNE
T01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJp
dHMoSlNBcnJheUJ1ZmZlcjo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQodG9BcnJheUJ1
ZmZlcih2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHRvQXJyYXlCdWZmZXIodmFs
KSwgZWMpOwogICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0FycmF5QnVmZmVyVmlldzo6aW5m
bygpKSkgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB2aWV3ID0gdG9BcnJheUJ1
ZmZlclZpZXcodmFsKTsKLSAgICAgICAgaW1wbCgpLnNlbmQodmlldy5nZXQoKSwgZWMpOworICAg
ICAgICB3cmFwcGVkKCkuc2VuZCh2aWV3LmdldCgpLCBlYyk7CiAgICAgfSBlbHNlCi0gICAgICAg
IGltcGwoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpLCBlYyk7Cisg
ICAgICAgIHdyYXBwZWQoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
LCBlYyk7CiAKICAgICBTZW5kRnVuY3RvciBmdW5jdG9yOwogICAgIHN0YXRlLml0ZXJhdGUoZnVu
Y3Rvcik7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5kTGluZUFuZENvbHVtbk51bWJlcihmdW5jdG9y
LmxpbmUoKSwgZnVuY3Rvci5jb2x1bW4oKSk7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5kVVJMKGZ1
bmN0b3IudXJsKCkpOworICAgIHdyYXBwZWQoKS5zZXRMYXN0U2VuZExpbmVBbmRDb2x1bW5OdW1i
ZXIoZnVuY3Rvci5saW5lKCksIGZ1bmN0b3IuY29sdW1uKCkpOworICAgIHdyYXBwZWQoKS5zZXRM
YXN0U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBl
Yyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgSlNW
YWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpT
WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyB0ZXh0ID0gaW1wbCgpLnJlc3Bv
bnNlVGV4dChlYyk7CisgICAgU3RyaW5nIHRleHQgPSB3cmFwcGVkKCkucmVzcG9uc2VUZXh0KGVj
KTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE4MCwyNSArMTgwLDI1IEBAIEpTVmFs
dWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0
CiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSBDYWNoZWRBdHRyaWJ1dGUgZm9yIG90aGVyIHR5cGVz
IHRoYW4gSlNPTiBhcyB3ZWxsLgotICAgIGlmIChtX3Jlc3BvbnNlICYmIGltcGwoKS5yZXNwb25z
ZUNhY2hlSXNWYWxpZCgpKQorICAgIGlmIChtX3Jlc3BvbnNlICYmIHdyYXBwZWQoKS5yZXNwb25z
ZUNhY2hlSXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9yZXNwb25zZS5nZXQoKTsKIAotICAg
IGlmICghaW1wbCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgaW1wbCgpLnJlc3BvbnNlVHlwZUNv
ZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQorICAgIGlmICghd3JhcHBl
ZCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgd3JhcHBlZCgpLnJlc3BvbnNlVHlwZUNvZGUoKSA+
IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQogICAgICAgICByZXR1cm4ganNOdWxs
KCk7CiAKLSAgICBzd2l0Y2ggKGltcGwoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKKyAgICBzd2l0
Y2ggKHdyYXBwZWQoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKICAgICBjYXNlIFhNTEh0dHBSZXF1
ZXN0OjpSZXNwb25zZVR5cGVEZWZhdWx0OgogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3Bv
bnNlVHlwZVRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUpOwogCiAgICAg
Y2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlSlNPTjoKICAgICAgICAgewotICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIGltcGwoKS5yZXNwb25zZVRl
eHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBK
U09OUGFyc2UoJnN0YXRlLCB3cmFwcGVkKCkucmVzcG9uc2VUZXh0SWdub3JpbmdSZXNwb25zZVR5
cGUoKSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIHZhbHVlID0g
anNOdWxsKCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldChzdGF0ZS52bSgpLCB0aGlzLCB2
YWx1ZSk7CiAKLSAgICAgICAgICAgIGltcGwoKS5kaWRDYWNoZVJlc3BvbnNlSlNPTigpOworICAg
ICAgICAgICAgd3JhcHBlZCgpLmRpZENhY2hlUmVzcG9uc2VKU09OKCk7CiAKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZTsKICAgICAgICAgfQpAQCAtMjA2LDcgKzIwNiw3IEBAIEpTVmFsdWUgSlNY
TUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAgICBjYXNl
IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEb2N1bWVudDoKICAgICAgICAgewogICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBpbXBsKCkucmVzcG9uc2VYTUwoZWMpOworICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gd3JhcHBlZCgpLnJlc3BvbnNlWE1MKGVjKTsKICAgICAgICAgICAgIGlmIChlYykgewog
ICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBAIEpTVmFsdWUg
SlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAgICAg
ICAgfQogCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlQmxvYjoKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLnJlc3BvbnNlQmxv
YigpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBl
ZCgpLnJlc3BvbnNlQmxvYigpKTsKIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNl
VHlwZUFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCgpLCBpbXBsKCkucmVzcG9uc2VBcnJheUJ1ZmZlcigpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMo
JnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3BvbnNlQXJyYXlCdWZmZXIoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCmluZGV4IDI0MTZkNjc5MDgx
MzkxM2YxM2VjMGE1MTljNWYxMDg2YzI2MzU4NTYuLjVkMzQ4NmU4NTljNjQyNTY2NzdjZDg3YmNh
YmZjN2I2YTE2MDM0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8mIHZhbHVlID0gaW1wbCgpLnZhbHVlKCk7
CisgICAgYXV0byYgdmFsdWUgPSB3cmFwcGVkKCkudmFsdWUoKTsKICAgICBpZiAodmFsdWUuaXNO
b2RlU2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogdmFsdWUudG9Ob2RlU2V0KCkp
CiAgICAgICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlLmdldCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9t
LmNwcAppbmRleCAzMzFiOWYxYjBiYmY1NzlhYzQ1MmQwN2VkYzFiOWY2NThmY2Y2MTVmLi4xNTJi
ODczNzAwYjlhMGRjNDY4Y2MwM2ZiMDllMWE0MzI0ZGM3NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihFeGVjU3RhdGUm
IHN0YXRlKQogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpOwogICAgIFN0cmluZyB2YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRv
U3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnNldFBhcmFtZXRlcihu
YW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOworICAgIHdyYXBwZWQoKS5zZXRQYXJhbWV0
ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6Z2V0
UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2NhbE5hbWUgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
OwotICAgIFN0cmluZyB2YWx1ZSA9IGltcGwoKS5nZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBs
b2NhbE5hbWUpOworICAgIFN0cmluZyB2YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJhbWV0ZXIobmFt
ZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKCZz
dGF0ZSwgdmFsdWUpOwogfQogCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vz
c29yOjpyZW1vdmVQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgU3RyaW5nIGxv
Y2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0ZSktPnZh
bHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3BhY2VVUkksIGxv
Y2FsTmFtZSk7CisgICAgd3JhcHBlZCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3BhY2VVUkksIGxv
Y2FsTmFtZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDA1OGM5MWM5MjQ0YTVj
ODBhZTllOGYwZmI2NGFlMGE4NDZhM2Q1ZDMuLmZlYmQyOTAwZTYyNWU3Y2UzNmZjNzI5MzM3YTQ5
MmI4Mzk2ZDVkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVj
dXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLmZyYW1lKCk7Cisg
ICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9F
eGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAwNDMwYmE3ZmQ1
M2NhYzJjNTQyZTg2MzIwNGRhYmFjNWZhMGJhZjE1Li4xY2NjZjhhZjIxMDBmMDdmNTA1ZmU2N2Jm
YzAwYjU5NDQ4OTk0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBTY3JpcHRD
YWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogICAgICAgICAgICAgd2luZG93
U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ctPnZtKCksIHdpbmRvdyk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBmcmFtZS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKTsKLSAgICAgICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5pbXBsKCkg
PT0gZG9tV2luZG93KQorICAgICAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2luZG93KCktPndy
YXBwZWQoKSA9PSBkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZG9tV2luZG93KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjE2MWU2NmY4ZDky
YzgwYzRmYzhiMmI3MjZiYzI0ODY1N2RkNTJkOS4uNjI5YzQyMTNhZThmYTFiNmU5ZDI2ZGUwMDNm
ZjRlMTBiNjZlOWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6
OmNsZWFyV2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29pbmdJbnRv
UAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93U2hlbGxzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gd2luZG93U2hlbGxzW2ld
LmdldCgpOwogCi0gICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5pbXBsKCkgPT0g
bmV3RE9NV2luZG93KQorICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3coKS0+d3JhcHBl
ZCgpID09IG5ld0RPTVdpbmRvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8v
IENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50IHdpbmRvdyBi
ZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8
SlNDOjpFeGVjU3RhdGUqLAogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBt
X3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpOyArK2l0
ZXIpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBpdGVyLT52YWx1ZS0+d2luZG93
KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGl0ZXIt
PnZhbHVlLT53aW5kb3coKS0+aW1wbCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7Cisg
ICAgICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBpdGVyLT52YWx1ZS0+d2luZG93KCktPndy
YXBwZWQoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICByZXN1bHQuYXBw
ZW5kKHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4oZXhlYywgb3Jp
Z2luKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
Y3BwCmluZGV4IDczMmM3Y2M2OWU0YzJmNTUwOWZkNjAwY2JmOWRhYzQyMjQyYmJmNDkuLjMwMDdl
YmEwNTg4ZGJhMWE5ZjJjOGJlYjg0NmFkMDk5NjA4MDNlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9NV2luZG93KiBk
b21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0cyhKU0RPTVdpbmRv
d0Jhc2U6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmSlND
Ojpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+aW1wbCgpOworICAgIHJl
dHVybiAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+d3JhcHBl
ZCgpOwogfQogCiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggMjE2YmM5OWM4MDUxYzZmYzZjMzBhNGI5MDVlNjIwZmQ3NWRiMWQ2
ZC4uYjk4NDZhZWNjOTgyNDFmZTU4OTE3YzAyNDFiYjVlMjU1YWI1N2Y1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQy
MSw3ICs0MjEsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAgICAg
IGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgIkRPTVN0cmlu
ZyIpIHsKICAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYg
KG9wdGlvbmFsSW5kZXgpIHtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVz
aChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRp
b25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAob3B0aW9u
YWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
bGVuZ3RoKCkpIHtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
U2xvdEltcGwsICIgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgp
O1xuIik7CiAgICAgICAgICMgQXNzdW1lIHRoYXQgaWYgdGhlcmUncyBhIHNldHRlciwgdGhlIGlu
ZGV4IHdpbGwgYmUgd3JpdGFibGUKQEAgLTExODEsOSArMTE4MSw5IEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogCiAgICAgaWYgKE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKSkgewog
ICAgICAgICBpZiAoJGhhc1BhcmVudCkgewotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAkaW50ZXJmYWNlTmFtZSYgaW1wbCgpIGNvbnN0XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUmIHdyYXBwZWQoKSBjb25zdFxu
Iik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCRp
bnRlcmZhY2VOYW1lJj4oQmFzZTo6aW1wbCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lJj4o
QmFzZTo6d3JhcHBlZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB9XG4iKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3NTIsOSArMTc1Miw5IEBAIHN1YiBH
ZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbgogewogICAgIG15ICRpbmRleGVkR2V0dGVyRnVuY3Rp
b24gPSBzaGlmdDsKICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+c2lnbmF0dXJlLT50
eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgIHJldHVybiAianNTdHJpbmdPclVuZGVmaW5l
ZChzdGF0ZSwgdGhpc09iamVjdC0+aW1wbCgpLml0ZW0oaW5kZXgpKSI7CisgICAgICAgIHJldHVy
biAianNTdHJpbmdPclVuZGVmaW5lZChzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0o
aW5kZXgpKSI7CiAgICAgfQotICAgIHJldHVybiAidG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPmltcGwoKS5pdGVtKGluZGV4KSkiOworICAgIHJldHVy
biAidG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5pdGVtKGluZGV4KSkiOwogfQogCiBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgpA
QCAtMjIyMSw3ICsyMjIxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlIGVxICJE
T01TdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpIHtcbiIpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChp
bmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKSkge1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndy
YXBwZWQoKS5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICMgQXNzdW1lIHRoYXQgaWYgdGhlcmUncyBhIHNldHRlciwgdGhlIGluZGV4IHdpbGwgYmUg
d3JpdGFibGUKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewpAQCAtMjMxOSw5ICsyMzE5LDkgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkZyYW1lLmgiKTsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IlNldHRpbmdzLmgiKTsKICAgICAgICAgICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9
IFRvTWV0aG9kTmFtZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJFbmFibGVkQnlTZXR0aW5nIn0pIC4gIkVuYWJsZWQiOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKVxu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
U2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCktPnNldHRpbmdz
KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgU2V0
dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdz
KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFzZXR0aW5ncy4kZW5hYmxlX2Z1bmN0aW9uKCkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CkBAIC0yMzM0LDcgKzIzMzQsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gJiYKICAgICAgICAgICAgICAgICAh
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1Nl
Y3VyaXR5In0gJiYKICAgICAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIifSkgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMt
PndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAg
ICAgICAgfQogCkBAIC0yMzUyLDcgKzIzNTIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIG15ICRleGNlcHRpb25Db2RlID0gJGdldHRlckV4Y2VwdGlvbnMg
PyAiZWMiIDogIjAiOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKFwiJGlu
dGVyZmFjZU5hbWUuJG5hbWVcIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY3Vyc29y
LmlzQ2FwdHVyaW5nKCkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1w
bCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4g
Iik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJG1l
bW9pemVkVHlwZSBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGN1cnNvci5hcHBlbmRJ
bnB1dDxNZW1vaXplZERPTVJlc3VsdDwkbWVtb2l6ZWRUeXBlPj4oYmluZGluZ05hbWUuZ2V0KCku
c3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAkZXhjZXB0aW9uQ29kZSk7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4g
TmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUs
ICJtZW1vaXplZFJlc3VsdCIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMp
O1xuIikgaWYgJGdldHRlckV4Y2VwdGlvbnM7CkBAIC0yMzc2LDcgKzIzNzYsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+JGltcGxHZXR0ZXJGdW5jdGlv
bk5hbWUoKnN0YXRlKSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0pIHsK
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hvdWxk
QWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIGltcGwuIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSAuICIoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
MCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2Fz
dGVkVGhpcyIpIC4gIiA6IGpzTnVsbCgpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJHR5
cGUgZXEgIkV2ZW50SGFuZGxlciIpIHsKICAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiV2luZG93RXZlbnRIYW5k
bGVyIn0gPyAid2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlIgpAQCAtMjM4NCw3ICsyMzg0LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgOiAiZXZl
bnRIYW5kbGVyQXR0cmlidXRlIjsKICAgICAgICAgICAgICAgICBteSAkZXZlbnROYW1lID0gRXZl
bnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KCRnZXR0ZXIoY2FzdGVkVGhpcy0+aW1wbCgpLCAkZXZlbnROYW1lKSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCRn
ZXR0ZXIoY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCAkZXZlbnROYW1lKSk7XG4iKTsKICAgICAgICAg
ICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LykgewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPnR5cGU7CiAgICAgICAgICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0Nv
bnN0cnVjdG9yJC8vOwpAQCAtMjQxMiw5ICsyNDEyLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICBteSBAY2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0
aCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9
LCBcQGltcGxDb250ZW50LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIik7CiAKICAg
ICAgICAgICAgICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiY2Fz
dGVkVGhpcy0+aW1wbCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBA
Y2FsbFdpdGhBcmdzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5h
dGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAi
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAi
LCAiLCBAY2FsbFdpdGhBcmdzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JM
aXN0UHJvcGVydHlUeXBlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLnByb3BlcnR5UmVmZXJl
bmNlKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRz
dmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNl
IGZvciBKU1NWR051bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsIiwgImNhc3RlZFRoaXMiKSAuICI7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI0MzcsNyArMjQzNyw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICAgICAgdW5zaGlm
dChAYXJndW1lbnRzLCBAY2FsbFdpdGhBcmdzKTsKICAgICAgICAgICAgICAgICAgICAgbXkgJGpz
VHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZh
Y2VOYW1lLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIiki
LCAiY2FzdGVkVGhpcyIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIikgaWYgISRhdHRyaWJ1dGUt
PmlzU3RhdGljOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlz
U3RhdGljOwogICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5p
bWF0ZWRUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgUmVmUHRyPCR0eXBlPiBvYmogPSAkanNUeXBlO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7CkBA
IC0yNDYzLDEwICsyNDYzLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRl
bnQsICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiKSk7CiAKICAgICAgICAgICAgICAg
ICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlw
ZSBpbXBsKCpjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBpbXBs
KCpjYXN0ZWRUaGlzLT53cmFwcGVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdldHRl
ckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRo
aXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAi
Y2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjUwOCw3ICsy
NTA4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsKICAgICAg
ICAgICAgICAgICBkaWUgaWYgIUNvbnN0cnVjdG9yU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZh
Y2UpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBkb21PYmplY3Qt
PmltcGwoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwg
ZG9tT2JqZWN0LT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4i
KTsKICAgICAgICAgICAgIH0KIApAQCAtMjU0MCw5ICsyNTQwLDkgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwog
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1Nl
Y3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdp
bmRvdyIpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNh
c3RlZFRoaXMtPmltcGwoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpLmZy
YW1lKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVk
KCkuZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgfQpAQCAt
MjY1Miw5ICsyNjUyLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hl
Y2tTZWN1cml0eSJ9ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIp
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0
ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNh
c3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICB9CkBAIC0yNjY3LDEzICsyNjY3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgIyBGSVhNRTogRmluZCBhIHdheSB0byBkbyB0aGlzIHNw
ZWNpYWwgY2FzZSB3aXRob3V0IGhhcmRjb2RpbmcgdGhlIGNsYXNzIGFuZCBhdHRyaWJ1dGUgbmFt
ZXMgaGVyZS4KICAgICAgICAgICAgICAgICBpZiAoKCgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2lu
ZG93Iikgb3IgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJHbG9iYWxTY29wZSIpKSBhbmQgJG5h
bWUgZXEgIm9uZXJyb3IiKSB7CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpT
RXJyb3JIYW5kbGVyLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGNhc3RlZFRoaXMtPmltcGwoKS5zZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKCRl
dmVudE5hbWUsIGNyZWF0ZUpTRXJyb3JIYW5kbGVyKHN0YXRlLCB2YWx1ZSwgY2FzdGVkVGhpcykp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKS5zZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKCRldmVudE5hbWUsIGNy
ZWF0ZUpTRXJyb3JIYW5kbGVyKHN0YXRlLCB2YWx1ZSwgY2FzdGVkVGhpcykpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
SlNFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJXaW5kb3dFdmVu
dEhhbmRsZXIifSA/ICJzZXRXaW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUiCiAgICAgICAgICAg
ICAgICAgICAgICAgICA6ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkRvY3VtZW50RXZlbnRIYW5kbGVyIn0gPyAic2V0RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRy
aWJ1dGUiCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICJzZXRFdmVudEhhbmRsZXJBdHRyaWJ1
dGUiOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc2V0dGVy
KCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPmltcGwoKSwgJGV2ZW50TmFtZSwgdmFs
dWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRz
ZXR0ZXIoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCAkZXZlbnRO
YW1lLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2lm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAg
ICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlOwpAQCAtMjY5NiwxOCArMjY5NiwxOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29k
ZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJG5hbWUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxh
YmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgUmVmUHRyPCR7YXR0cmlidXRlVHlwZX0+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCkuJHtpbXBsR2V0dGVyRnVuY3Rpb25OYW1lfSgpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7YXR0cmlidXRlVHlw
ZX0+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJHtpbXBsR2V0dGVyRnVu
Y3Rpb25OYW1lfSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCFmb3J3YXJkZWRJbXBsKVxuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGlt
cGwgPSAqZm9yd2FyZGVkSW1wbDtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEF0dHJpYnV0ZSBpcyBub3QgbnVsbGFi
bGUsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBleHBlY3RlZCB0byByZXR1cm4gYSByZWZlcmVuY2Uu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVm
PCR7YXR0cmlidXRlVHlwZX0+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuJHtp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lfSgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmPCR7YXR0cmlidXRlVHlwZX0+IGZvcndhcmRl
ZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJHtpbXBsR2V0dGVyRnVuY3Rpb25OYW1lfSgp
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0KCk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUgPSAkY29kZUdl
bmVyYXRvci0+R2V0QXR0cmlidXRlRnJvbUludGVyZmFjZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUsICRwdXRGb3J3YXJkcyk7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7XG4iKSBpZiAkc2V0dGVyUmFpc2VzRXhjZXB0aW9uOwpAQCAtMjgxNCwxMyArMjgxNCwxMyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIGlmICgkaW5kZXhlZEdldHRl
ckZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNv
dW50OyArK2kpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAo
dW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpOyBp
IDwgY291bnQ7ICsraSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGkpKTtcbiIpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgkbmFtZWRHZXR0ZXJGdW5jdGlvbikgewogICAgICAgICAg
ICAgIyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gYWRkIGFuIElETCBleHRlbmRlZCBhdHRyaWJ1dGUg
YXQgc29tZSBwb2ludCBpZiBhbiBpbnRlcmZhY2UgbmVlZHMgZW51bWVyYWJsZSBuYW1lZCBwcm9w
ZXJ0aWVzLgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKG1vZGUuaW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPmlt
cGwoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpXG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgcHJvcGVydHlOYW1lKSk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICB9CkBAIC0yOTIxLDE0ICsyOTIx
LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSBhbmQKICAg
ICAgICAgICAgICAgICAgICAgISRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKSkpXG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkp
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+IiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoKnN0YXRlKSk7XG4iKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9w
ZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChpbXBsLmlzUmVhZE9ubHkoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBOT19N
T0RJRklDQVRJT05fQUxMT1dFRF9FUlIpO1xuIik7CkBAIC0yOTgyLDExICsyOTgyLDExIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpO1xuIik7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiRXZlbnRUYXJnZXQifSB8fCAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdl
dCIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPmlt
cGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB0aGlzT2JqZWN0LT52aXNpdEFkZGl0aW9uYWxDaGlsZHJlbih2aXNpdG9yKTtc
biIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU1hcmtGdW5j
dGlvbiJ9OwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJl
cG9ydEV4dHJhTWVtb3J5Q29zdCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5pbXBsKCku
bWVtb3J5Q29zdCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
dmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+d3JhcHBlZCgpLm1l
bW9yeUNvc3QoKSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJG51bUNhY2hlZEF0dHJp
YnV0ZXMgPiAwKSB7CiAgICAgICAgICAgICBmb3JlYWNoIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0
ZXN9KSB7CkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGlu
dGVyZmFjZSwgIkFjdGl2ZURPTU9iamVjdCIpKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFj
ZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgICAgICAkZW1p
dHRlZEpTQ2FzdCA9IDE7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
anMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpXG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0t
PndyYXBwZWQoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZh
Y2UsICJFdmVudFRhcmdldCIpKSB7CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1
dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5k
bGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAkZW1pdHRlZEpTQ2Fz
dCA9IDE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygp
KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoanMke2ludGVy
ZmFjZU5hbWV9LT53cmFwcGVkKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygpKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRp
bnRlcmZhY2UsICJOb2RlIikpIHsKQEAgLTMwNTUsMzQgKzMwNTUsMzQgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgbXkgJHJvb3RTdHJpbmc7CiAgICAgICAgICAg
ICBpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbCIpIHsKLSAg
ICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgICR7aW1wbFR5cGV9KiByb290ID0gJmpz
JHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmlu
ZyAgPSAiICAgICR7aW1wbFR5cGV9KiByb290ID0gJmpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBl
ZCgpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGlu
dGVyZmFjZSkgZXEgIkltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQiKSB7Ci0gICAgICAgICAgICAg
ICAgJHJvb3RTdHJpbmcgID0gIiAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiByb290ID0g
V1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuY29udGV4dCgpKTtcbiI7Cisg
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkuY29u
dGV4dCgpKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxl
KCRpbnRlcmZhY2UpIGVxICJJbXBsRnJhbWUiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJp
bmcgID0gIiAgICBGcmFtZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+
aW1wbCgpLmZyYW1lKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAg
IEZyYW1lKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCku
ZnJhbWUoKSk7XG4iOwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFy
b290KVxuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1cm4g
ZmFsc2U7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgk
aW50ZXJmYWNlKSBlcSAiSW1wbERvY3VtZW50IikgewotICAgICAgICAgICAgICAgICRyb290U3Ry
aW5nICA9ICIgICAgRG9jdW1lbnQqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFt
ZX0tPmltcGwoKS5kb2N1bWVudCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcg
ID0gIiAgICBEb2N1bWVudCogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+
d3JhcHBlZCgpLmRvY3VtZW50KCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAu
PSAiICAgIGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAg
ICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVyYXRl
SXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxFbGVtZW50Um9vdCIpIHsKICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CiAgICAgICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJHJv
b3RTdHJpbmcgID0gIiAgICBFbGVtZW50KiBlbGVtZW50ID0gV1RGOjpnZXRQdHIoanMke2ludGVy
ZmFjZU5hbWV9LT5pbXBsKCkuZWxlbWVudCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RT
dHJpbmcgID0gIiAgICBFbGVtZW50KiBlbGVtZW50ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFj
ZU5hbWV9LT53cmFwcGVkKCkuZWxlbWVudCgpKTtcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RT
dHJpbmcgLj0gIiAgICBpZiAoIWVsZW1lbnQpXG4iOwogICAgICAgICAgICAgICAgICRyb290U3Ry
aW5nIC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RT
dHJpbmcgLj0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdChlbGVtZW50KTtcbiI7CiAg
ICAgICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCIpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7
CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0g
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6
cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5jYW52YXMoKSk7XG4iOworICAgICAgICAg
ICAgICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMk
e2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkuY2FudmFzKCkpO1xuIjsKICAgICAgICAgICAgIH0g
ZWxzaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxPd25lck5v
ZGVSb290IikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1lbnQuaCJ9ID0g
MTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20uaCJ9ID0gMTsK
LSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3Jl
Ojpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLm93bmVyTm9kZSgpKTtcbiI7CisgICAg
ICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9v
dChqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5vd25lck5vZGUoKSk7XG4iOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQq
IHJvb3QgPSBXZWJDb3JlOjpyb290KCZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKSk7XG4iOwor
ICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6
OnJvb3QoJmpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpKTtcbiI7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkcm9vdFN0cmluZyk7CkBAIC0zMTAy
LDcgKzMxMDIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
KiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCksIGpzJHtpbnRlcmZhY2VOYW1lfSk7XG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
cyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKSwganMke2ludGVyZmFjZU5hbWV9KTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCkBAIC0zMTk3LDcg
KzMxOTcsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkaW1wbFR5cGUqICR7
Y2xhc3NOYW1lfTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSlcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoYXV0byogd3JhcHBlciA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgk
aW50ZXJmYWNlKSAuICIodmFsdWUpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIG51bGxwdHI7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICB9CkBAIC00MjQwLDcgKzQyNDAsNyBAQCBz
dWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICAgICBpZiAoJHNlbGZJc1RlYXJPZmZUeXBlKSB7
CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR01hdHJpeFRlYXJPZmYuaCIs
ICRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogQmxpbms6IERvbid0IGNy
ZWF0ZSBhIG5ldyBvbmUgZXZlcnl0aW1lIHdlIGFjY2VzcyB0aGUgbWF0cml4IHByb3BlcnR5LiBU
aGlzIG1lYW5zLCBlLmcsID09PSB3b24ndCB3b3JrLgotICAgICAgICAgICAgICAgICR2YWx1ZSA9
ICJTVkdNYXRyaXhUZWFyT2ZmOjpjcmVhdGUoY2FzdGVkVGhpcy0+aW1wbCgpLCAkdmFsdWUpIjsK
KyAgICAgICAgICAgICAgICAkdmFsdWUgPSAiU1ZHTWF0cml4VGVhck9mZjo6Y3JlYXRlKGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKSwgJHZhbHVlKSI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIs
ICRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICAgICAgJHRlYXJPZmZUeXBlID1+IHMvU1ZHUHJv
cGVydHlUZWFyT2ZmPC9TVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8JGludGVyZmFjZU5hbWUsIC87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDk5ZTEyMmQzZDc1NDFhMmY1
NmEwMTllMDBkOTk0YWJjZWNkNDMyYWQuLmIwZDEyYzM4OTNhZmUyN2I0NGI3MjU4ODAyMjFlNzgz
OWNmYTcyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNDksOSAr
MTQ5LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG8KICAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oc2xvdEJhc2UpOwotICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRU
aGlzLT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZXhjaXRpbmdBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2Miw3ICsxNjIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCosIEVuYwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgZG9tT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBkb21P
YmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RBY3RpdmVET01PYmpl
Y3Q6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CkBAIC0xNzksOSArMTc5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3QKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiZXhjaXRpbmdGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0OjppbmZvKCkpOwotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIE5vZGUqIG5leHRDaGls
ZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC0xOTgsNyArMTk4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQ
cm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3Rp
dmVET01PYmplY3QiLCAicG9zdE1lc3NhZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IHN0YXRlLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2
b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZAogewogICAgIGF1dG8qIGpzVGVzdEFjdGl2ZURPTU9iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RBY3RpdmVET01PYmplY3Qt
PmltcGwoKSwganNUZXN0QWN0aXZlRE9NT2JqZWN0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdEFjdGl2ZURPTU9iamVjdC0+d3JhcHBlZCgpLCBqc1Rlc3RBY3RpdmVET01PYmpl
Y3QpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjY5LDcgKzI2OSw3
IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEFjdGl2ZURPCiBUZXN0QWN0aXZlRE9NT2JqZWN0KiBKU1Rlc3RB
Y3RpdmVET01PYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0LmNwcAppbmRleCAwOWQ2YWFiODI0ZTExZDdjZTRjOWQ3MTlkN2ZmOWI5Y2RkYmQ5MmUw
Li5jYWFkYmMxZjBiNTdkZDUxMGViYmFlMDZjOGEwZDMxMWU5NTA1NGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQwog
ewogICAgIGF1dG8qIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
ID0ganNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0
PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAm
anNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QtPmltcGwoKSwganNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QpOworICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QtPndyYXBwZWQoKSwganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMTg0LDcgKzE4NCw3
IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEN1c3RvbUNvCiBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3QqIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdCo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCAzN2MxZTU4MTJmNDFh
NTUyNTU0OWYzNDAzMzFlNWY4ZTc2OWI1MDY5Li45OTRmMzY2ZWY0NGMxZTg0MDk5NjlhYTgwMzBh
NDk4MjQ0Yjk2ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAg
LTE4Myw3ICsxODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuYwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgImFub3RoZXJGdW5jdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIHN0ciA9
IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKQEAgLTIw
NCw3ICsyMDQsNyBAQCB2b2lkIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyT3duZXI6OmZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2bwogewogICAgIGF1dG8qIGpzVGVz
dEN1c3RvbU5hbWVkR2V0dGVyID0ganNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXItPmltcGwoKSwganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOwor
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXItPndyYXBw
ZWQoKSwganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdf
SU5URUdSSVRZKQpAQCAtMjU0LDcgKzI1NCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1c3RvbU5hCiBU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjp0b1dyYXBwZWQo
SlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggMWE5ZmVhN2MxMTdjNzA0ZmEzYmM2NjNiNGYzNTBjMjNhODY5ODM4ZC4uOGRmOTJkOWZk
MTg3MzUzYzI3ZmY2MDM5ZGFhOGNiODQyMDlkMDFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2
ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2Us
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIxIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xODQsNyArMTg0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3JPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaQogewogICAgIGF1dG8qIGpzVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3
b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNh
Y2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50Q29uc3RydWN0b3ItPmltcGwoKSwganNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVu
dENvbnN0cnVjdG9yLT53cmFwcGVkKCksIGpzVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogfQogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjY0LDcgKzI2NCw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdEV2ZW50Q29uCiBUZXN0RXZlbnRDb25zdHJ1Y3RvciogSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+
d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAppbmRleCBmMTc1ZGRiM2JiZGE0MzY5Y2EyNzk3ZjMyYzQ0YTkwNzVjMTEyMzJkLi4wZWIx
NTBmZGU1ZjVlYWVjNDc3YzViMzk1NjJhYmQyZGFhNzc1MTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKQEAgLTE0NSwxMCArMTQ1LDEwIEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBQCiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpOwotICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRo
aXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKSkgeworICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9w
dGlvbmFsSW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewog
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IG9wdGlvbmFsSW5kZXgudmFsdWUoKTsKICAgICAgICAg
dW5zaWduZWQgYXR0cmlidXRlcyA9IERvbnREZWxldGUgfCBSZWFkT25seTsKLSAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+aW1wbCgpLml0ZW0oaW5kZXgpKSk7CisgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRlcywgdG9KUyhzdGF0ZSwgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4
KSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGdldFN0YXRpY1ZhbHVl
U2xvdDxKU1Rlc3RFdmVudFRhcmdldCwgQmFzZT4oc3RhdGUsIEpTVGVzdEV2ZW50VGFyZ2V0VGFi
bGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkBAIC0xNzEsOSArMTcxLDkgQEAg
Ym9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIHMKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1w
bCgpLmxlbmd0aCgpKSB7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxl
bmd0aCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBEb250RGVsZXRlIHwgUmVh
ZE9ubHk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRlcywgdG9K
UyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPmltcGwoKS5p
dGVtKGluZGV4KSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0
ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuaXRlbShpbmRleCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgp
OwpAQCAtMTk5LDEwICsxOTksMTAgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLAogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8
IGNvdW50OyArK2kpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpKSk7CiAgICAgaWYgKG1vZGUuaW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1l
IDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwpAQCAtMjIwLDcgKzIyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0RXZlbnRUYXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQzMihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTIzNyw3ICsyMzcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90
eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50
VGFyZ2V0IiwgImFkZEV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwogICAg
IGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yNTIsNyArMjUyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVt
b3ZlRXZlbnRMaXN0ZW4KICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJyZW1v
dmVFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtF
TFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMjY3LDcgKzI2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkRpc3BhdGNoRXZlbnQo
RXhlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRUYXJnZXQiLCAiZGlzcGF0Y2hFdmVudCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRU
YXJnZXQ6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CkBAIC0yODUsMTMgKzI4NSwxMyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFy
Z2V0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGNlbGwpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHRoaXNPYmplY3Qt
PmltcGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+
d3JhcHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogYm9vbCBKU1Rl
c3RFdmVudFRhcmdldE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIGF1dG8qIGpzVGVzdEV2ZW50VGFyZ2V0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGlmIChqc1Rlc3RFdmVudFRhcmdldC0+aW1w
bCgpLmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICBpZiAoanNUZXN0RXZlbnRUYXJnZXQt
PndyYXBwZWQoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDEs
NyArMzAxLDcgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZShKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY28KIHsKICAgICBhdXRvKiBqc1Rlc3RF
dmVudFRhcmdldCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQq
Pihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50VGFyZ2V0
LT5pbXBsKCksIGpzVGVzdEV2ZW50VGFyZ2V0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdEV2ZW50VGFyZ2V0LT53cmFwcGVkKCksIGpzVGVzdEV2ZW50VGFyZ2V0KTsKIH0KIAog
I2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTM1MSw3ICszNTEsNyBAQCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFRlc3RFdmVudFRhcgogVGVzdEV2ZW50VGFyZ2V0KiBKU1Rlc3RFdmVudFRhcmdldDo6dG9X
cmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCAzNWRhMGU3
NTllNDgzOWIxMjNmOWU1MjNjZGQyNjE1OWYxOTJhMWU1Li5jYWQ2ZTk5ZGU0YzUwMTMwODc5ZTEz
NTAwMjYyZGIwOTA5YWEwMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KHNsb3RCYXNlKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5uYW1l
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2OSw3ICsx
NjksNyBAQCB2b2lkIEpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udAogewogICAgIGF1dG8qIGpzVGVzdEV4Y2Vw
dGlvbiA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4
dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFeGNlcHRpb24tPmltcGwoKSwg
anNUZXN0RXhjZXB0aW9uKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV4Y2Vw
dGlvbi0+d3JhcHBlZCgpLCBqc1Rlc3RFeGNlcHRpb24pOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQpAQCAtMjE5LDcgKzIxOSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV4Y2VwdGlv
CiBUZXN0RXhjZXB0aW9uKiBKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4
Y2VwdGlvbio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggNTczYTA5MGFj
ZjdhODcwZTBiYjcxOWJmZjdmMTVjMTljZTFlNjM1OC4uYzc0MDZhYzE5NTRlOTA5MmJhNTVmMzI0
YWYxYmNlMWQ1Y2RjY2Q1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiBib29sIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBhdXRvKiBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAg
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIHJvb3QgPSAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS0+aW1wbCgpOworICAgIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiByb290ID0gJmpzVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUtPndyYXBwZWQoKTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qocm9vdCk7CiB9CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsCiB7CiAgICAgYXV0byoganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2Fz
dDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwog
ICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQp
OwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+
aW1wbCgpLCBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUtPndyYXBwZWQoKSwganNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZSk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0x
ODEsNyArMTgxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2VuZXJhdGUKIFRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlKiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmlt
cGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZDJkN2I4MDEzNDhmZDZjYzRj
NjFhOTE5ZTdiMTIwMzBjNjZiNjEyOS4uZmQ4Y2VhMzVkYzJlZmZmMGQ1NGFlZTMxMzY2MTQyMmUz
NWMwYmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNl
IiwgImltcGxlbWVudHNTdHIxIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNT
dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ4MSw3
ICs0ODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNTdHIyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLmltcGxlbWVudHNTdHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmltcGxlbWVudHNO
b2RlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01NTUs
NyArNTU1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3Ry
MShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBw
bGVtZW50YWxTdHIxIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoJmltcGwpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01NzQsNyArNTc0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEIKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbFN0cjIoJmltcGwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC02MDUsNyArNjA1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5v
ZGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoJmltcGwpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgc2V0SlNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBzZXRK
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTczNyw3ICs3MzcsNyBAQCB2b2lkIHNldEpTVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJp
bmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIHNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmplY3QsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTc5NSw3ICs3OTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01l
dGhvZDEoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0
aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
SW50ZXJmYWNlOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmltcGxl
bWVudHNNZXRob2QxKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KQEAgLTgxMCw3ICs4MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRQogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwpAQCAtODYxLDcgKzg2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDEiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxl
bWVudGFsTWV0aG9kMSgmaW1wbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KQEAgLTg3Niw3ICs4NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMgog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZh
Y2U6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CkBAIC05MjIsNyArOTIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG8K
IGJvb2wgSlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgYXV0byoganNUZXN0SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoanNUZXN0SW50ZXJmYWNlLT5p
bXBsKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAgaWYgKGpzVGVzdEludGVyZmFjZS0+d3Jh
cHBlZCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBV
TlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTMyLDcgKzkzMiw3
IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250CiB7CiAgICAgYXV0byoganNUZXN0SW50ZXJmYWNl
ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEludGVyZmFjZS0+aW1wbCgpLCBqc1Rl
c3RJbnRlcmZhY2UpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0SW50ZXJmYWNl
LT53cmFwcGVkKCksIGpzVGVzdEludGVyZmFjZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdEludGVyZmFjZSogaW1wbCkKQEAgLTk2MSw3ICs5NjEsNyBAQCBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RJbnRlcmZhYwogVGVzdEludGVyZmFjZSogSlNUZXN0SW50ZXJmYWNlOjp0b1dyYXBwZWQoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1w
bCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CmluZGV4IDFmNDBjY2RlNWQyYWNjZGE1MzVhMTgwYTZmZjVkMTIzYWUyZmY3NjUuLmQwNjExZTVl
ZWNhNTc2ZTg3OTI3Yzk2NGEyMjBlOTdhNWFlNjcwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIiLCAibWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogewogICAgIGF1dG8q
IGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPSBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9
ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3Jh
cHBlcih3b3JsZCwgJmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXItPmltcGwoKSwganNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLT53cmFwcGVkKCksIGpzVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjA2LDcg
KzIwNiw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE1lZGlhUXVlCiBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lciogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVy
LT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NjFkZTM5MjRhYjljMjQ3MTkxMGJiYTNkYjQyNDMwODMzY2MwNTdlMC4uYzhhNjE2NDZiODJkZDkx
YTVjNjM3OTI2YWQ1NDNmOWExYjI4MDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6Z2V0TmFtZWRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiBib29s
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBhdXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVz
dE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgaWYgKGpz
VGVzdE5hbWVkQ29uc3RydWN0b3ItPmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICBp
ZiAoanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
CiB7CiAgICAgYXV0byoganNUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgpLCBqc1Rlc3ROYW1l
ZENvbnN0cnVjdG9yKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkQ29u
c3RydWN0b3ItPndyYXBwZWQoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7CiB9CiAKICNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yMjMsNyArMjIzLDcgQEAgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0TmFtZWRDb24KIFRlc3ROYW1lZENvbnN0cnVjdG9yKiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4odmFsdWUpKQotICAgICAg
ICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFw
cGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA3OWNkNTFi
NDk3YmY4OTdjMDE5OTdkMDViMmUyZjY0OTJkMTBkN2VmLi5kMGVhYTMxNzg4ZjcwMTI5NmRmMDFm
MGRjMDI1MDYzMDlkNzRkMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5uYW1lKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aAogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJp
bmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgSlNUZXN0Tm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0Tm9kZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwotICAgIHRoaXNPYmplY3QtPmltcGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7CisgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2
aXNpdG9yKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAppbmRleCA4ZmQwZDNkMjJjZDQ1ZDc5Y2NhN2NjYWEzYWRi
YTEzN2Q4MDY3OTA1Li4wYzcyYTMxYmRiNmJjYmY5YjE3YTdkNmJjMTE5ZTViMzQ4NDYwMDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmgKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAot
ICAgIFRlc3ROb2RlJiBpbXBsKCkgY29uc3QKKyAgICBUZXN0Tm9kZSYgd3JhcHBlZCgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdE5vZGUmPihCYXNlOjppbXBs
KCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdE5vZGUmPihCYXNlOjp3cmFwcGVk
KCkpOwogICAgIH0KIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROb2RlKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5vZGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRl
dGVybWluaXN0aWMuY3BwCmluZGV4IDVjMGE1N2E3YzFlMzY3ZTJlMDExZmJmZTY1OWMyOTliOGYx
Yjk5OWQuLjE5MmFlMDhhYmNiNDQ0Y2U1ZjMwYzI2NjE5NDI3ZDkzNDg3NDFhOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0
cihFeGVjU3RhdGUqIHN0YQogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3Qt
PmlucHV0Q3Vyc29yKCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gYmluZGluZ05hbWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNS
ZWFkb25seUF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBp
ZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgaW50IG1lbW9pemVkUmVzdWx0ID0g
Y2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoKTsKKyAgICAg
ICAgaW50IG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWlu
aXN0aWNSZWFkb25seUF0dHIoKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVk
RE9NUmVzdWx0PGludD4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3Vs
dCwgMCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobWVtb2l6ZWRSZXN1bHQp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjcsNyArMTY3
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNSZWFkb25seUF0dHIoRXhlY1N0YXRlKiBzdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
bm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xODksNyArMTg5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSog
c3QKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigp
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdO
YW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXND
YXB0dXJpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlz
LT5pbXBsKCkubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoKTsKKyAgICAgICAgU3RyaW5n
IG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNX
cml0ZWFibGVBdHRyKCk7CiAgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJl
c3VsdDxTdHJpbmc+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQs
IDApOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBt
ZW1vaXplZFJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdAogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0
dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjI2LDcg
KzIyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1p
bmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNv
ciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMu
bm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3Ry
aW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyKCk7CisgICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigpOwogICAgICAgICBj
dXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUu
Z2V0KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yNDEsNyArMjQxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25B
dHRyKEV4ZWNTdGF0ZSogc3QKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIo
RXhlY1N0YQogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vy
c29yKCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmlu
ZGluZ05hbWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNl
cHRpb25BdHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYg
KGN1cnNvci5pc0NhcHR1cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9
IGNhc3RlZFRoaXMtPmltcGwoKS5ub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihl
Yyk7CisgICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KS5ub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihlYyk7CiAgICAgICAgIGN1cnNv
ci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5kaW5nTmFtZS5nZXQo
KS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIGVjKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICBzZXRE
T01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0
dHIoRXhlY1N0YQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubm9u
ZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoZWMpKTsKICAgICBzZXRET01FeGNlcHRp
b24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0z
MDQsNyArMzA0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICBJbnB1dEN1cnNvciYg
Y3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5p
c3RpYy5ub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewot
ICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoKTsKKyAgICAgICAgU3RyaW5nIG1lbW9pemVk
UmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNl
cHRpb25BdHRyKCk7CiAgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3Vs
dDxTdHJpbmc+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDAp
OwogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBtZW1v
aXplZFJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTMxOSw3ICszMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgICAgICB9CiAgICAg
fQogI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlv
bkF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzQ1
LDcgKzM0NSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1p
bmlzdGljV3JpdGVhYmxlQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0
ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzg1LDcg
KzM4NSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlz
dGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhz
dGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgc2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNT
dGF0ZSogc3RhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmlu
ZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1pl
cm9BcmdGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSW5wdXRD
dXJzb3ImIGN1cnNvciA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmlucHV0Q3Vyc29y
KCk7CkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBh
dXRvKiBqc1Rlc3ROb25kZXRlcm1pbmlzdGljID0ganNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0
aWMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3ROb25kZXRlcm1pbmlzdGljLT5pbXBsKCksIGpzVGVzdE5vbmRldGVybWluaXN0
aWMpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy0+
d3JhcHBlZCgpLCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljKTsKIH0KIAogI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKQEAgLTUxMiw3ICs1MTIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb25kZXRl
cgogVGVzdE5vbmRldGVybWluaXN0aWMqIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBmYzdhYWQzYTI0NmQxMTcxOGI4
MjRkNTQ4YmEzNTE3ZjJkZTgwMGE4Li5kN2QzYjA0ZjhjNDU0NDc4MmIzYWE3NTUyYTYzOTYzMTk2
NzFjYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNzM2LDcgKzczNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwucmVhZE9ubHlMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC03NTMsNyArNzUzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJyZWFkT25seVN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCBpbXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC03NzAsNyArNzcwLDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5
VGVzdE9iakF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcGwucmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtODEyLDkgKzgxMiw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2Up
OwotICAgIGlmICghY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKCFjYXN0ZWRU
aGlzLT53cmFwcGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT5pbXBs
KCkuZnJhbWUoKS0+c2V0dGluZ3MoKTsKKyAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkuZnJhbWUoKS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIXNldHRpbmdzLnRl
c3RTZXR0aW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAg
LTgzMiw3ICs4MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImVudW1B
dHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImVudW1BdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmVudW1BdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTg0OSw3ICs4NDksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRy
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuYnl0ZUF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtODY2LDcgKzg2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAib2N0ZXRBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04ODMsNyArODgzLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRy
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuc2hvcnRBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTkwMCw3ICs5MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNp
Z25lZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51
bnNpZ25lZFNob3J0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC05MTcsNyArOTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJsb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdBdHRyKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTkzNCw3ICs5MzQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5sb25nTG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtOTUxLDcgKzk1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVu
c2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC05NjgsNyArOTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwuc3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC05ODUsNyArOTg1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9i
akF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50ZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwueG1sT2Jq
QXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTAx
OSw3ICsxMDE5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmEKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjcmVhdGUi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY3JlYXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwMzYsNyArMTAzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdB
dHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwNTMsNyArMTA1Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZElu
dGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwNzAsNyArMTA3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJbnRlZ3Jh
bEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxh
dHRyQXR0cikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0x
MDg3LDcgKzEwODcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZEJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmZhc3RI
YXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTA0LDcgKzEx
MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0
dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExMjEsNyArMTEyMSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmZhc3RHZXRB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTM4LDcgKzEx
MzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9t
SW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmdl
dEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVn
cmFsQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xMTU1LDcgKzExNTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogcwogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9v
bGVhbihpbXBsLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50Qm9vbGVhbkF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMTE4OSw3ICsxMTg5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50eXBlZEFycmF5QXR0
cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTIwNyw3
ICsxMjA3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3QKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdldHRlckV4
Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyMjUsNyArMTIyNSw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjQzLDcgKzEy
NDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEy
NjEsNyArMTI2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24i
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTI3OCw3ICsx
Mjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVj
a2luZ0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuc3RyaWN0VHlwZUNoZWNr
aW5nQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbmZvbyhFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbAogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvbmZvbyIpOwog
ICAgIH0KICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZXZlbnRIYW5kbGVyQXR0cmlidXRlKGNhc3RlZFRoaXMtPmltcGwoKSwgZXZlbnROYW1lcygp
LmZvb0V2ZW50KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShldmVudEhhbmRsZXJBdHRy
aWJ1dGUoY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQpKTsKIH0K
IAogCkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsbwogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTMzOCw3ICsxMzM4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0
aEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKCpzdGF0ZSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEzNTgsNyArMTM1OCw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlKHNjcmlwdENvbnRleHQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTM3Niw3ICsxMzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWMKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIGVjKSkpOwogICAgIHNldERPTUV4Y2Vw
dGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTEzOTgsNyArMTM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhCiAgICAgYXV0byogc2Ny
aXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRD
b250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTE0MTksNyArMTQxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiAgICAg
YXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYg
KCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCBzY3Jp
cHRDb250ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTE0NDAsNyArMTQ0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoCiAgICAgYXV0byogc2Ny
aXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRD
b250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCBzY3JpcHRD
b250ZXh0LCBlYykpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYgogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQpKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFs
QXR0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1MTUsNyArMTUxNSw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIy
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xNTM0LDcgKzE1MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmNvbmRpdGlvbmFsQXR0cjMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTU5MCw3ICsxNTkwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q2FjaGVkQXR0cmlidXRlMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUK
ICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hl
ZEF0dHJpYnV0ZTEuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVk
VmFsdWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBs
LmNhY2hlZEF0dHJpYnV0ZTEoKS5oYXNOb1ZhbHVlKCkgPyBqc051bGwoKSA6IGltcGwuY2FjaGVk
QXR0cmlidXRlMSgpLmpzVmFsdWUoKSk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1
dGUxLnNldChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywgcmVzdWx0KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjEwLDcgKzE2MTAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRo
aXMtPm1fY2FjaGVkQXR0cmlidXRlMi5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gKGltcGwuY2FjaGVkQXR0cmlidXRlMigpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDog
aW1wbC5jYWNoZWRBdHRyaWJ1dGUyKCkuanNWYWx1ZSgpKTsKICAgICBjYXN0ZWRUaGlzLT5tX2Nh
Y2hlZEF0dHJpYnV0ZTIuc2V0KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2MjgsNyArMTYyOCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFueUF0dHJp
YnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSAoaW1wbC5hbnlBdHRyaWJ1dGUoKS5oYXNOb1ZhbHVlKCkgPyBqc051bGwoKSA6IGltcGwuYW55
QXR0cmlidXRlKCkuanNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250
ZW50RG9jdW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hvdWxkQWxsb3dB
Y2Nlc3NUb05vZGUoc3RhdGUsIGltcGwuY29udGVudERvY3VtZW50KCkpID8gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuY29udGVudERvY3Vt
ZW50KCkpKSA6IGpzTnVsbCgpKTsKIH0KIApAQCAtMTY1Niw3ICsxNjU2LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdTdGF0aWNQ
cm9wZXJ0eVRlYXJPZmY8VGVzdE9iaiwgU1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbCwgaW1wbC5tdXRh
YmxlUG9pbnQoKSwgJlRlc3RPYmo6OnVwZGF0ZU11dGFibGVQb2ludCkpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNjczLDcgKzE2NzMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuYwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBv
aW50Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQ
cm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludCgpKSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2OTAsNyArMTY5
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJz
dHJhd2JlcnJ5Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3MDcsNyArMTcwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5z
dHJpY3RGbG9hdCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xNzI0LDcgKzE3MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImRl
c2NyaXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImRlc2NyaXB0aW9uIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZGVzY3JpcHRpb24oKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTc0MSw3ICsxNzQxLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuaWQo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTc1OCw3ICsx
NzU4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHUKICAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJoYXNoIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImhhc2gi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaGFzaCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzc1LDcgKzE3NzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0
cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwucmVwbGFjZWFibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9v
bCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlRG91YmxlQXR0cmlidXRlKGlzTnVsbCkpOwogICAg
IGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpA
QCAtMTgxMyw3ICsxODEzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25n
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmEKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25n
QXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZUxv
bmdBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xODMzLDcgKzE4MzMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsbwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9v
bCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0Jvb2xlYW4oaW1wbC5udWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKSk7CiAg
ICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7
CkBAIC0xODUzLDcgKzE4NTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlmIChpc051
bGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTg3Myw3
ICsxODczLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlTG9u
Z1NldHRhYmxlQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTg5NCw3ICsxODk0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhc2UKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgYm9vbCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYykp
OwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIGlmIChpc051bGwpCkBAIC0x
OTE0LDcgKzE5MTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJp
YnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJhdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cmlidXRlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE5MzEsNyArMTkz
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJl
c2VydmVkRW51bVR5cGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIGltcGwuYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTk0OCw3ICsxOTQ4LDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoaW1wbC5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTk2NSw3ICsxOTY1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0
ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjAxNSw3
ICsyMDE1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMzcsNyArMjAz
Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludDhfdCBuYXRpdmVWYWx1ZSA9IHRv
SW50OChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMDU3LDcgKzIwNTcs
NyBAQCB2b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWludDhfdCBuYXRpdmVWYWx1ZSA9IHRv
VUludDgoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA3Nyw3ICsyMDc3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludDE2X3QgbmF0aXZlVmFsdWUgPSB0
b0ludDE2KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwOTcsNyArMjA5
Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHVpbnQxNl90IG5hdGl2
ZVZhbHVlID0gdG9VSW50MTYoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjExNyw3ICsyMTE3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZh
bHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMTM3
LDcgKzIxMzcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVgogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgbG9uZyBsb25nIG5h
dGl2ZVZhbHVlID0gdG9JbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBA
IC0yMTU3LDcgKzIxNTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25n
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUs
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMTc3LDcgKzIxNzcsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1ZhbAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJzdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRl
KS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CkBAIC0yMTk3LDcgKzIxOTcsNyBAQCB2b2lkIHNldEpTVGVzdE9i
alRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNv
ZGVkSlNWYQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjIxNyw3ICsyMjE3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1M
T2JqQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHQKICAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGJvb2wgbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjU3LDcgKzIyNTcsNyBA
QCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1
ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNzcs
NyArMjI3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQg
bmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTIyOTcsNyArMjI5Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2ln
bmVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIHVuc2lnbmVkIG5hdGl2ZVZhbHVlID0gdG9VSW50MzIoc3RhdGUsIHZhbHVl
LCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMxNyw3ICsyMzE3LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9v
bGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIzMzcsNyArMjMzNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVm
bGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5j
b2RlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InJlZmxlY3RlZFVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxs
Q2hlY2soc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM1Nyw3ICsyMzU3LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3Ry
aW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzc3LDcgKzIzNzcsNyBAQCB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iagogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZh
bHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzk3
LDcgKzIzOTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFu
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxNyw3
ICsyNDE3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmlu
ZyBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI0MzcsNyArMjQzNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlB
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFJlZlB0cjxGbG9hdDMyQXJyYXk+IG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0yNDU3LDcgKzI0NTcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI0NzcsNyArMjQ3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCBuYXRp
dmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTI0OTksNyArMjQ5OSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0y
NTE5LDcgKzI1MTksNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTI1NDEsNyArMjU0MSw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBiYXNlT2JqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkpIHsK
ICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
Y3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm47CkBA
IC0yNTc3LDcgKzI1NzcsNyBAQCB2b2lkIHNldEpTVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aAogICAgICAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvbmZvbyIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUsICpj
YXN0ZWRUaGlzLCBjYXN0ZWRUaGlzLT5pbXBsKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCwgdmFs
dWUpOworICAgIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBj
YXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCwgdmFsdWUpOwogfQog
CiAKQEAgLTI1OTMsNyArMjU5Myw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0CiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI2MTMsNyArMjYxMyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0
aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRv
SW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYzMyw3ICsyNjMz
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTI2NTYsNyArMjY1Niw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY3Niw3ICsyNjc2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBKU08K
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUg
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OTksNyArMjY5OSw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI3MjIsNyArMjcyMiw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0
aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NDUsNyArMjc0
NSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNzY4LDcgKzI3NjgsNyBAQCB2b2lkIHNldEpT
VGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoq
IG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNzg5LDcg
KzI3ODksNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVW
YWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgx
MSw3ICsyODExLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0
aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI4MzMsNyArMjgzMyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50
IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yODk5LDcgKzI4OTksNyBAQCB2b2lkIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVgogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgbmF0aXZlVmFsdWUgPSB7IHN0YXRlLT52bSgpLCB2YWx1ZSB9
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0yOTE5LDcgKzI5MTksNyBAQCB2b2lkIHNldEpTVGVzdE9iak11dGFibGVQb2ludChF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVgogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9p
bnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0
b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CkBAIC0yOTM5LDcgKzI5MzksNyBAQCB2b2lkIHNldEpTVGVzdE9i
akltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBF
bmNvZGVkSgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJpbW11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1
ZSA9IEpTU1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NTksNyArMjk1OSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTc5LDcgKzI5NzksNyBAQCB2
b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBFbmNvZGVkSlNWYQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBmbG9hdCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRv
RmxvYXQoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0yOTk5LDcgKzI5OTksNyBAQCB2b2lkIHNldEpTVGVzdE9iaklk
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lv
bik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVl
LCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA1Niw3ICszMDU2LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwNzYsNyArMzA3Niw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDk4LDcg
KzMwOTgsNyBAQCB2b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJlZjxUZXN0Tm9kZT4gZm9yd2FyZGVkSW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKS5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpOworICAgIFJlZjxUZXN0
Tm9kZT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wdXRGb3J3YXJkc0F0
dHJpYnV0ZSgpOwogICAgIGF1dG8mIGltcGwgPSBmb3J3YXJkZWRJbXBsLmdldCgpOwogICAgIFN0
cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMzExOSw3ICszMTE5
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJlZlB0cjxUZXN0Tm9kZT4gZm9yd2FyZGVk
SW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKS5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKCk7
CisgICAgUmVmUHRyPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpLnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKTsKICAgICBpZiAoIWZvcndhcmRlZElt
cGwpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBpbXBsID0gKmZvcndhcmRlZEltcGw7CkBA
IC0zMTQyLDcgKzMxNDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIHN0YQogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ2b2lkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGltcGwudm9pZE1ldGhvZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4
ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbG9uZ0FyZyA9IHRv
SW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
MTc3LDcgKzMxNzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YQogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJieXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlTWV0aG9kKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMxODksNyArMzE4OSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRl
TWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVN
ZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGludDhfdCBieXRlQXJnID0gdG9JbnQ4KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1h
bENvbnZlcnNpb24pOwpAQCAtMzIxMiw3ICszMjEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSog
c3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9j
dGV0TWV0aG9kKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTMyMjQsNyArMzIyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1aW50OF90IG9jdGV0QXJnID0gdG9VSW50OChzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMyNDcsNyArMzI0Nyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Mb25nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImxvbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzI1OSw3ICszMjU5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJn
cyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ01ldGhvZFdpdGhBcmdz
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdBcmcg
PSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMzI4Miw3ICszMjgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0YXQKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAib2JqTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKGltcGwub2JqTWV0aG9kKCkpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMjk0LDcgKzMyOTQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFy
Z3MoRXhlY1N0YQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvYmpNZXRob2RXaXRoQXJn
cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBsb25nQXJn
ID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsK
QEAgLTMzMTcsNyArMzMxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4+
IHNlcXVlbmNlQXJnID0gKHRvUmVmUHRyTmF0aXZlQXJyYXk8U2NyaXB0UHJvZmlsZSwgSlNTY3Jp
cHRQcm9maWxlPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNTY3JpcHRQcm9maWxlOjp0
b1dyYXBwZWQpKTsKQEAgLTMzMzQsNyArMzMzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShF
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFJldHVybmluZ1NlcXVlbmNlIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdBcmcgPSB0
b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAt
MzM1MSw3ICszMzUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICAvLyBLZWVwIHBvaW50ZXIgdG8gdGhlIEpTU3RyaW5nIGluIGEg
bG9jYWwgc28gd2UgZG9uJ3QgbmVlZCB0byByZWYgdGhlIFN0cmluZy4KQEAgLTMzNzIsNyArMzM3
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM0MDEsNyArMzQwMSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM0MjQsNyAr
MzQyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInNlcmlhbGl6ZWRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRBcmcgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAw
LCAwKTsKQEAgLTM0NDEsNyArMzQ0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSoKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3B0aW9uc09iamVjdCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIERpY3Rpb25hcnkgb28gPSB7IHN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCkgfTsKQEAgLTM0NjEsNyArMzQ2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4
ZWNTCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3Rh
dGUsIGVjKTsKQEAgLTM0OTUsNyArMzQ5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSoKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHJpdmF0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmluZyBhcmd1bWVudCA9IHN0YXRlLT5hcmd1
bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKQEAgLTM1MTIsNyArMzUxMiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25BZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImFkZEV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFkoIWxp
c3RlbmVyLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMzUyNyw3ICszNTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFy
Z3VtZW50KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTQyLDcgKzM1
NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0U3RhdGVWb2lkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGltcGwud2l0aFNjcmlwdFN0YXRlVm9pZCgqc3RhdGUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0zNTU0LDcgKzM1NTQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dFN0YXRlT2JqKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
U3RhdGVPYmoiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
aW1wbC53aXRoU2NyaXB0U3RhdGVPYmooKnN0YXRlKSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMzU2OCw3ICszNTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHQK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKnN0YXRlLCBlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC0zNTgyLDcgKzM1ODIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlT2JqRXhjZXB0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2Ny
aXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24oKnN0YXRlLCBlYykpKTsKIApAQCAtMzU5OSw3ICszNTk5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYg
KCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtMzYxNCw3ICszNjE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENv
bnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0zNjI5LDcgKzM2MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
T2JqRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKQEAgLTM2NDksNyArMzY0OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2NjYsNyArMzY2Niw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVu
dHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoc3RhdGUsIDApKTsKICAgICBpbXBs
LndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soc2NyaXB0QXJndW1lbnRzLnJlbGVhc2Uo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2Nzks
NyArMzY3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwog
ICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzcwMSw3ICszNzAxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEFyZ0FuZEQKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9w
dGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYg
KGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zNzIzLDcgKzM3MjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGludCBub25PcHQgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5v
cm1hbENvbnZlcnNpb24pOwpAQCAtMzc1MCw3ICszNzUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0EKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgaW50IG5vbk9wdCA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwg
Tm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNzg1LDcgKzM3ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0Nv
dW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsK
QEAgLTM4MDcsNyArMzgwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1
ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQg
PSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAt
MzgyOSw3ICszODI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIHN0ciA9IHN0YXRlLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTM4NDQsNyArMzg0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJ
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lz
TnVsbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgc3Ry
ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM4NTksNyArMzg1OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tBcmcoRXhlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhD
YWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlm
ICghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCkBAIC0zODc2LDcgKzM4NzYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRo
b2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBub25DYWxsYmFjayA9IHRvSW50MzIoc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODk2LDcgKzM4OTYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIXN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmICghc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCkBAIC0zOTE0LDcgKzM5MTQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3RpbwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKQEAgLTM5
MzEsNyArMzkzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25B
cmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9uQ2Fs
bGJhY2sgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pOwpAQCAtMzk1MSw3ICszOTUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW8KICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRp
b25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8VGVzdENh
bGxiYWNrRnVuY3Rpb24+IGNhbGxiYWNrOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkuaXNGdW5jdGlvbigpKQpAQCAtMzk5Myw3ICszOTkzLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9k
MShFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2Qx
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQwMDgsNyArNDAwOCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE1ldGhvZDIoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRp
dGlvbmFsTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmNv
bmRpdGlvbmFsTWV0aG9kMigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC00MDIzLDcgKzQwMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEV4ZWNTdAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDAzNyw3ICs0
MDM3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5h
cmd1bWVudCgwKSk7CkBAIC00MDU3LDcgKzQwNTcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qy
KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQwODQsNyArNDA4NCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBTdHJpbmcgc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwpAQCAtNDEwMSw3ICs0MTAxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
NCgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9JbnQz
MihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTQxMTgs
NyArNDExOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQpAQCAtNDEz
NSw3ICs0MTM1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0QXJnID0gdG9ET01TdHJp
bmdMaXN0KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDE1Miw3ICs0MTUyLDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kNygKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IFZlY3RvcjxTdHJpbmc+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDE2OSw3ICs0MTY5LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kOCgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFy
ZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MTg2LDcg
KzQxODYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmlu
Zz4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjAzLDcgKzQyMDMsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9h
ZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDIyMCw3ICs0MjIwLDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMTEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmluZyBzdHJBcmcg
PSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00
MjM3LDcgKzQyMzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMgogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKS5pbmhlcml0cyhKU0Jsb2I6Omlu
Zm8oKSkpCkBAIC00Mjg5LDcgKzQyODksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFy
YW1ldGVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9i
aiogb2JqQXJnMSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBA
IC00MzE2LDcgKzQzMTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaQogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJn
ID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ0MzMsNyAr
NDQzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChFeGVjCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgdW5zaWduZWQgc2hvcnQgb2JqQXJnc1Nob3J0ID0gMDsKQEAgLTQ0NjMs
NyArNDQ2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gdW5zaWduZWRMb25n
U2VxdWVuY2UgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKQEAgLTQ0ODAsNyArNDQ4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAg
LTQ1MDAsNyArNDUwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDUyMCw3
ICs0NTIwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhcnJheUFy
ZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpA
QCAtNDU0MCw3ICs0NTQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKQEAgLTQ1NjAsNyArNDU2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImdldFNWR0RvY3VtZW50Iik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmICghc2hv
dWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIGltcGwuZ2V0U1ZHRG9jdW1lbnQoZWMpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC00NTc3LDcgKzQ1Nzcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb252ZXJ0MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRl
c3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkp
OwpAQCAtNDU5NCw3ICs0NTk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEV4ZWNTdGF0ZSogc3RhdGUKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQo
c3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ2MTEsNyArNDYxMSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3Rh
dGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQ0Iik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNU
ZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NjI4LDcgKzQ2Mjgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDUoRXhlY1N0YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb252ZXJ0NSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRl
c3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkp
OwpAQCAtNDY0NSw3ICs0NjQ1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWMKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50Pjo6Y3JlYXRlKGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00NjU3LDcgKzQ2NTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxl
UG9pbnRGdW5jdGlvbihFeAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQ
b2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBv
aW50RnVuY3Rpb24oKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC00NjY5LDcgKzQ2NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbXBsLmJhbmFuYSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC00NjgxLDcgKzQ2ODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oRXhlY1N0YXRlKgog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
NDcwNyw3ICs0NzA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmMKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ3
MzIsNyArNDczMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhBcnJheShFCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFycmF5Iik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NzU3LDcg
KzQ3NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFN0cmluZyBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtNDc3Nyw3ICs0Nzc3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91Ymxl
TWV0aG9kKEV4ZWMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNEb3VibGVN
ZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBkb3VibGUg
aGVhZCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7CkBAIC00Nzk3LDcgKzQ3
OTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ2YXJpYWRpY05vZGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBOb2RlKiBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDApKTsKQEAgLTQ4MjAsNyArNDgyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgZmxvYXQgYSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Zsb2F0KHN0YXRlKTsK
QEAgLTQ4NDYsNyArNDg0Niw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uKERlZmVycmVkV3JhcHBl
cihzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC00ODY0LDcg
KzQ4NjQsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBmbG9hdCBhID0gc3RhdGUtPmFyZ3VtZW50
KDApLnRvRmxvYXQoc3RhdGUpOwpAQCAtNDg5MSw3ICs0ODkxLDcgQEAgc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoRXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
bihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9t
aXNlRGVmZXJyZWQpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC00
OTExLDcgKzQ5MTEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcAogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0g
c3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTQ5
NDYsNyArNDk0Niw3IEBAIHZvaWQgSlNUZXN0T2JqT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIGF1dG8qIGpzVGVz
dE9iaiA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0g
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPYmotPmltcGwoKSwganNUZXN0T2JqKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE9iai0+d3JhcHBlZCgpLCBqc1Rlc3RP
YmopOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtNDk5Niw3ICs0OTk2
LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0T2JqKiBpbXAKIFRlc3RPYmoqIEpTVGVzdE9iajo6dG9XcmFw
cGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmlt
cGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAppbmRleCBkZDUwYmEyNmUxZWMyZDI4OTM4ZDA2YjA3MmY5NzFiNTk0Y2JiMzkzLi5kZTRhYmZh
Y2Y4NGFhZjcxMDU4ZjNiYmVhMDkxMjkxOGYyZWQzZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGwKIHsKICAgICBhdXRvKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuc2xvdCgpLT5h
c0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxk
Kj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLT5pbXBsKCksIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+d3Jh
cHBlZCgpLCBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKIH0KIAogI2lmIEVOQUJMRShC
SU5ESU5HX0lOVEVHUklUWSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVy
bG9hZAogVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPih2YWx1
ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IDNkOTdiMTNjYWJiMDczZDE0MWI2NGE1OTc0NzMy
N2YxZjhlZTg2YTQuLjQxZjNmMjQ5MjIxMWI0NGRhYmNmZjk3MmFkMmI0MjVjN2MwNjc2ODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2
b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBzdAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmpl
Y3QtPmltcGwoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCisgICAgICAgIGZvciAoYXV0byYg
cHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFt
ZXMoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJp
bmcoc3RhdGUsIHByb3BlcnR5TmFtZSkpOwogICAgIH0KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKQEAgLTE5Miw3
ICsxOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVtIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmFtZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50
b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaQogewogICAg
IGF1dG8qIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWls
dGlucyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdE92ZXJyaWRlQnVpbHRpbnMtPmltcGwoKSwganNUZXN0T3ZlcnJpZGVCdWls
dGlucyk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LT53cmFwcGVkKCksIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMpOwogfQogCiAjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQpAQCAtMjYxLDcgKzI2MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJy
aWRlCiBUZXN0T3ZlcnJpZGVCdWlsdGlucyogSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6dG9XcmFw
cGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJu
ICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGJjNzVkMmVhNWNlZmZjZGM0ZWE3
ZGI4NmFmMjliOTQ4NWM3MjE0ZjguLjNhMzI3MjFlYjFlOTJiYzE5MGEzZDBhZmVlNTI0ZDE1NTYz
MWM4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnZhbHVlKCkgPyBpbXBsLnZhbHVlKCktPmRlc2Vy
aWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTQsNyArMTU0LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVh
ZG9ubHlWYWx1ZShFeGVjU3RhdGUqIHN0YXQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRv
bmx5VmFsdWUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaW1wbC5yZWFkb25seVZhbHVlKCkgPyBpbXBsLnJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJp
YWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNo
ZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLAogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRW
YWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkVmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGltcGwuY2FjaGVkVmFsdWUoKSA/IGltcGwuY2FjaGVkVmFsdWUoKS0+
ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVs
bCgpOwogICAgIGNhc3RlZFRoaXMtPm1fY2FjaGVkVmFsdWUuc2V0KHN0YXRlLT52bSgpLCBjYXN0
ZWRUaGlzLCByZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTE5MSw3ICsxOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQb3J0cyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iagogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIiwgInBvcnRzIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwg
InBvcnRzIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnBvcnRz
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIxMCw3ICsy
MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDYWNoZWRSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBj
YWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkUmVhZG9ubHlWYWx1ZS5nZXQoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5jYWNoZWRSZWFkb25seVZhbHVlKCkg
PyBpbXBsLmNhY2hlZFJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIGNhc3RlZFRoaXMtPm1fY2Fj
aGVkUmVhZG9ubHlWYWx1ZS5zZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZv
aWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQg
c2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHZv
aWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93CiB7CiAgICAgYXV0byoganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS0+aW1wbCgpLCBqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCAmanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLT53cmFwcGVkKCksIGpz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CiB9CiAKICNpZiBFTkFCTEUoQklO
RElOR19JTlRFR1JJVFkpCkBAIC0zNDAsNyArMzQwLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2VyaWFs
aXoKIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwo
KTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGMyM2RmZTJkYzk3OGE0YmE0MjYzMjhk
MzQ1MzY0NzIzMDA5MzFiN2YuLjRlNGNmZTg1YTIwN2VlMWE3NmYyM2JjY2FmODAyYzI3OWYxZTgw
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
InVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjM3LDcgKzIzNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlw
dFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1w
bC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA/IGltcGwuaW1tdXRhYmxlU2VyaWFs
aXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjgzLDcg
KzI4Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwuYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRl
ZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMTksNyArMzE5LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBKU08KICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlw
ZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgc2V0SlNU
ZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU9iamVjCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG5hdGl2
ZVZhbHVlID0gdG9VSW50NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MzY1LDcgKzM2NSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFs
aXplZFNjcmlwdFZhbHVlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZl
cnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm47CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2IKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgbmF0aXZl
VmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00MjcsNyArNDI3LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC00
NDcsNyArNDQ3LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0
YXRlKiBzdGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0
YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC00OTEs
NyArNDkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSoKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RUeXBlZGVmcyIsICJzZXRTaGFkb3ciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGZsb2F0IHdpZHRoID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvRmxvYXQo
c3RhdGUpOwpAQCAtNTMyLDcgKzUzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8UmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IHNlcXVlbmNlQXJnID0gKHRvUmVmUHRyTmF0aXZlQXJy
YXk8U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBKU1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSwgJkpTU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1dyYXBwZWQp
KTsKQEAgLTU0OSw3ICs1NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKEV4ZQogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm51bGxhYmxlQXJyYXlBcmciKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5QXJn
ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAt
NTY2LDcgKzU2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZzEgPSAwOwpAQCAt
NjAzLDcgKzYwMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3RpCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxT
VkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC02MTUsNyArNjE1LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nQXJyYXlGdW5jdGlvbigKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJz
dHJpbmdBcnJheUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTYzNSw3ICs2MzUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
dHJpbmdBcnJheUZ1bmN0aW9uMgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0
cmluZ0FycmF5RnVuY3Rpb24yIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTY1NSw3ICs2NTUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25D
YWxsV2l0aFNlcXVlbmNlVGhhdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImNh
bGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8UmVmUHRyPFRlc3RFdmVudFRhcmdldD4+
IHNlcXVlbmNlQXJnID0gKHRvUmVmUHRyTmF0aXZlQXJyYXk8VGVzdEV2ZW50VGFyZ2V0LCBKU1Rl
c3RFdmVudFRhcmdldD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgJkpTVGVzdEV2ZW50VGFy
Z2V0Ojp0b1dyYXBwZWQpKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0
aW9uKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhFeGNlcHRp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5
cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtNjkwLDcgKzY5MCw3IEBAIHZvaWQgSlNUZXN0VHlwZWRl
ZnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
IGNvbnRlCiB7CiAgICAgYXV0byoganNUZXN0VHlwZWRlZnMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3RUeXBlZGVmcy0+aW1wbCgpLCBqc1Rlc3RUeXBlZGVmcyk7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RUeXBlZGVmcy0+d3JhcHBlZCgpLCBqc1Rlc3RUeXBlZGVm
cyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC03NDAsNyArNzQwLDcg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0VHlwZWRlZnMKIFRlc3RUeXBlZGVmcyogSlNUZXN0VHlwZWRlZnM6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odmFsdWUpKQotICAgICAgICByZXR1cm4g
JndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCmluZGV4IDY0YWYzMTg0YWJlYjYz
OWY2NGU4M2NmNzI1YmU4NmMxMzUwMDFiMjYuLmUyZmNiYWZiMjBlM2E0YWNlNmM4MWRmZDFiYTRk
ZjE5YTZmZGMxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzYXR0cmlidXRlUmVhZG9ubHkoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpzdGF0ZSwgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCBpbXBsLnJlYWRvbmx5KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEpTYXR0cmlidXRlT3du
ZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250
ZXh0KQogewogICAgIGF1dG8qIGpzYXR0cmlidXRlID0ganNDYXN0PEpTYXR0cmlidXRlKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNh
dHRyaWJ1dGUtPmltcGwoKSwganNhdHRyaWJ1dGUpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNhdHRyaWJ1dGUtPndyYXBwZWQoKSwganNhdHRyaWJ1dGUpOwogfQogCiAjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYXR0cmli
dXRlKiBpCiBhdHRyaWJ1dGUqIEpTYXR0cmlidXRlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZh
bHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0
ZSo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJl
dHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25s
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25s
eS5jcHAKaW5kZXggNTRmY2E4Yzc3OTBiNzhkYmUxNjM4YWQ5NmQ5Yzg0NTEzYWU3NWQ2NS4uY2Vl
ODI1Mjc2NjU3ZjU2YzM3ZWM4ZDIzY2VlYmM4OWEyMmY0MTRkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcApAQCAt
MTMxLDcgKzEzMSw3IEBAIHZvaWQgSlNyZWFkb25seU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBhdXRvKiBqc3Jl
YWRvbmx5ID0ganNDYXN0PEpTcmVhZG9ubHkqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAg
ICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc3JlYWRvbmx5LT5pbXBsKCksIGpzcmVhZG9u
bHkpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNyZWFkb25seS0+d3JhcHBlZCgpLCBq
c3JlYWRvbmx5KTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCByZWFkb25seSogaW1wbCkK
QEAgLTE2MCw3ICsxNjAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5KiBpbQogcmVhZG9ubHkqIEpT
cmVhZG9ubHk6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTcmVhZG9ubHkqPih2YWx1ZSkpCi0gICAgICAgIHJl
dHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAKaW5kZXggMzkxNDA4NTFjMjdhZDljMzg2ZTM4MTg0ODk0ODU0ZTM5OWQwOTM5
NC4uYjEyNjEyN2VkMmY0NDdiNDQ2YzhhYTE1ZmEwZDBmNjY5YzNjOTJhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYWxsaW5nIGEgcnVudGltZSBvYmplY3Qg
b2YgYSBwbHVnaW4gZWxlbWVudD8KICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0hU
TUxFbGVtZW50OjppbmZvKCkpKQotICAgICAgICAgICAgaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5j
ZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpLT5pbXBsKCkpOwor
ICAgICAgICAgICAgaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVu
dCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpLT53cmFwcGVkKCkpOwogICAgICAgICBpZiAoIWluc3Rh
bmNlKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDkwMDc1MTEzOWM3ZDc2NTY1YjJjOGZjY2E2MjhkYjU5YWM0YjJmMzAuLmNkN2E3YjM4Nzkz
YTgwNzQxYWZjMDMzZmM1Yjc2YTA5NWFhOTIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBib29s
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdAogICAgIGlmICghaW5zcGVjdGVkV2luZG93KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KHNjcmlwdFN0YXRlLCBpbnNwZWN0ZWRXaW5kb3ctPmltcGwoKSwgRG9O
b3RSZXBvcnRTZWN1cml0eUVycm9yKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHNjcmlwdFN0YXRlLCBpbnNwZWN0ZWRXaW5kb3ctPndy
YXBwZWQoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKTsKIH0KIAogSW5zcGVjdG9yRnVuY3Rp
b25DYWxsSGFuZGxlciBJbnNwZWN0b3JDb250cm9sbGVyOjpmdW5jdGlvbkNhbGxIYW5kbGVyKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CmluZGV4IGY4MDBjMjJmY2Y1MmM3YjM2NjY4MTRkZGEyNmI3NDQyYTFjNjQwYjcuLmY5YzI2MDY4
MWVhZDg2NjdjNjBmOTNkNzhiODQzNTdmNmM0NmM3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNjgzLDcgKzY4Myw3IEBAIFdlYkZy
YW1lKiBXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQogICAg
IGlmIChzdHJjbXAoZ2xvYmFsT2JqZWN0T2JqLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiSlNE
T01XaW5kb3dTaGVsbCIpICE9IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9iaiktPndp
bmRvdygpLT5pbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd1NoZWxsKj4oZ2xvYmFsT2JqZWN0T2JqKS0+d2luZG93KCktPndyYXBwZWQoKS5m
cmFtZSgpOwogICAgIHJldHVybiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogfQog
CkBAIC03MjgsNyArNzI4LDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpjb3VudGVyVmFsdWUoSlNPYmpl
Y3RSZWYgZWxlbWVudCkKICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKEpTRWxlbWVu
dDo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIGNvdW50
ZXJWYWx1ZUZvckVsZW1lbnQoJmpzQ2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+aW1w
bCgpKTsKKyAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxlbWVudCgmanNDYXN0PEpTRWxlbWVu
dCo+KHRvSlMoZWxlbWVudCkpLT53cmFwcGVkKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OnBy
b3Zpc2lvbmFsVVJMKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264181</attachid>
            <date>2015-10-27 17:24:55 -0700</date>
            <delta_ts>2015-10-27 17:41:16 -0700</delta_ts>
            <desc>Updating mm files</desc>
            <filename>bug-150613-20151028012353.patch</filename>
            <type>text/plain</type>
            <size>419573</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1NGIxNDgyYWUxNWJh
ZjBhNzlhZjI3ZjliNTcwYWFmYjE2NGQ2My4uYjJhZTE2NTA1MTBkZWQzNDUwZGIxYjUxZGYzOTQ2
ZWRlZGU2YTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3MyBAQAorMjAxNS0xMC0yNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFw
cGVkIGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBdHRyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXR0cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZm
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xp
c3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
cXVhZEZpbHRlck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCaXF1YWRGaWx0
ZXJOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9wZXJ0eVZhbHVlRmFsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NTU1ZhbHVlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSFRNTENhbnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRMaW5lRGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0V2Via2l0TGluZURh
c2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRh
dGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjphZnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6ZGF0YWJhc2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0Nv
bW1hbmRMaW5lQVBJSG9zdDo6c3RvcmFnZUlkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0bzo6Z2V0UmFuZG9tVmFs
dWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleTo6YWxnb3JpdGhtKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG9LZXlQYWlyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUV2
ZW50OjpkZXRhaWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29r
dXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
YWN0aXZlRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0RE9NV2luZG93KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSFRNTEZvcm1FbGVtZW50T3JOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
Rm9ybURhdGE6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFy
cmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTWltZVR5cGVBcnJheTo6bmFt
ZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6
bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVBsdWdpbkFycmF5OjpuYW1lR2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVBsdWdpbjo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5n
TGlzdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93
blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFsbG93
QWNjZXNzRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2lu
ZG93QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnByaW50RXJyb3JN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9m
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1JpY2hT
b3VyY2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50
ZXJydXB0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJFdmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2lu
ZG93V2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93SW5kZXhlZERCKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvdzo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0RW51bWVyYWJs
ZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJv
cGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
dzo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6d3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjp3cmFwcGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6SlNET01XcmFwcGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNEYXRhQ3VlOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFDdWU6OnNldFZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RhdGFUcmFuc2Zlcjo6dHlwZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6cm90YXRpb25SYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2FtbWEpOgorICAgICAgICAo
V2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBh
c3NBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6
OmFic29sdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6cHJlcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjphcHBlbmQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50RnJhZ21lbnQ6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVu
dEZyYWdtZW50OjphcHBlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRUeXBlOjpiZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6OmFmdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6YmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6YWZ0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNFbGVtZW50OjpyZXBsYWNlV2l0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6
OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNF
dmVudDo6Y2xpcGJvYXJkRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0ZpbGVSZWFkZXI6OnJlc3VsdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJy
ZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3Np
dGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNh
bGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0
aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBw
b3J0c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6dG9E
YXRhVVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTERvY3VtZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENhbGxpbmdEb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgIChX
ZWJDb3JlOjpkb2N1bWVudFdyaXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEVsZW1lbnQ6OnB1c2hFdmVu
dEhhbmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEZyYW1lRWxlbWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hU
TUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0
RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRF
bGVtZW50OjpzZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNI
VE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TE1lZGlhRWxlbWVudDo6c2V0Q29udHJvbGxlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbjo6aW5kZXhTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTZWxlY3RF
bGVtZW50OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MU2VsZWN0RWxlbWVudDo6
aW5kZXhTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNv
bnRlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rv
cnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpzdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RT
dG9yZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNo
b3dDb250ZXh0TWVudSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
ZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6
OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8p
OgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjp2b2x1bWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTWVzc2FnZUV2ZW50OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUluaXRNZXNz
YWdlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY2lzaW9u
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6ZGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbk9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6Omlu
c2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlcGxhY2VDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvTm9kZU9yU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3Nj
aWxsYXRvck5vZGU6OnNldFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFubmVyTm9k
ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdN
b2RlbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cGx1Z2luU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBsdWdpbkVsZW1lbnRHZXRDYWxsRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUG9wU3RhdGVFdmVudDo6
c3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JUQ1N0YXRzUmVzcG9uc2U6Om5hbWVHZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTVkdMZW5ndGhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1N0b3JhZ2U6Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTU3R5bGVTaGVldDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86
OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmRlY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTdWJ0bGVDcnlwdG86OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNy
eXB0bzo6d3JhcEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dW53cmFw
S2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFja0N1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFja0N1ZTo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFjazo6c2V0S2luZCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1RleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFj
a0xpc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVHJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1RyYWNrRXZlbnQ6OnRyYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VmlkZW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2s6OnNl
dExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliM2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyOjpwb3N0TWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1dvcmtlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OndyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
WE1MSHR0cFJlcXVlc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2Up
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hT
TFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhl
Y3V0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb21XaW5kb3dG
cm9tRXhlY1N0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbik6
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKE5hdGl2ZVRvSlNW
YWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNp
dGluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25Bbm90aGVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVj
dG9yT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXQ6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXRPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFeGNl
cHRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5h
bGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
Mik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZU93bmVyOjpm
aW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25l
cjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWlu
aXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRl
YWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQnl0ZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNp
Z25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0T2JqQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZs
ZWN0ZWRTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZElu
dGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29s
ZWFuQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0
ZTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11
dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialN0cmljdEZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5
dGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9uZ0xvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
U2VxdWVuY2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1
bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVt
b3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0
YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRp
b25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
Myk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
MCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGhPcHRpb25hbFBhcmFtZXRlcjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21T
dHJpbmdMaXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51
bGxhYmxlU2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uR2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RG
dW5jdGlvbldpdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
blByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE9iak93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPYmo6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZUZ1bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ2FjaGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNo
ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdM
b25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVm
c0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVBcnJheUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
QXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzT3du
ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjp0b1dyYXBw
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc2F0dHJpYnV0ZVJlYWRvbmx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTYXR0cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0
cmlidXRlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHlPd25lcjo6ZmluYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6dG9XcmFwcGVkKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1l
dGhvZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2Ny
aXB0U3RhdGUpOgorCiAyMDE1LTEwLTI1ICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtUZXhNYXBdIEZpeCBhIG1pc3VzZWQgZmxhZyBmb3IgR3N0R0wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAxZWYzNzExMWM3MjNhZmU2NWRhOGZhYWI5NzIzNWMwNzc4MTMwYTZiLi4wYWU5
ZTNjYjI4ZTk5MWRkY2QwYTYzODY2MjU4NDhmOWQxMTdkMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTUtMTAtMjcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KKworICAgICAgICBSZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8gSlNET01XcmFw
cGVyLndyYXBwZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmZyYW1lRm9yQ29udGV4dCk6IFJlbmFtaW5nIGltcGwoKSB0byB3cmFwcGVkKCku
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb3VudGVyVmFsdWUpOiBEaXR0by4KKwogMjAx
NS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSysgYnVpbGQgYWZ0ZXIgcjE5MTU0My4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbQppbmRleCAxNmJiMThiYTViMjZlMTY5ZmJjZWZhYzVlNDZhYzZlMTIzODk1
NWRiLi5lNDUzMmM4YTE1ZmQ1NjI5ZDJhMTg1ODhmOTdiMTU0YTIwOGYwZGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFs
dWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW1UeXBlICppdGVtLCBK
U0MKIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFE
YXRhKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gaW1wbCgpLnBhcmVudEVsZW1lbnQoKTsKKyAg
ICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwog
ICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAgICAgICByZXR1cm4gSlND
Ojpqc051bGwoKTsKIApAQCAtMzk0LDcgKzM5NCw3IEBAIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFEYXRhKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkK
IEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjphY2Nlc3NMb2coSlND
OjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBIVE1M
VmlkZW9FbGVtZW50KiBwYXJlbnQgPSBpbXBsKCkucGFyZW50RWxlbWVudCgpOworICAgIEhUTUxW
aWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQoKS5wYXJlbnRFbGVtZW50KCk7CiAgICAgaWYg
KCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVs
bCgpOwogCkBAIC00MTYsNyArNDE2LDcgQEAgSlNDOjpKU1ZhbHVlIEpTUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6OmFjY2Vzc0xvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnMKIEpTQzo6
SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplcnJvckxvZyhKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEhUTUxWaWRlb0Vs
ZW1lbnQqIHBhcmVudCA9IGltcGwoKS5wYXJlbnRFbGVtZW50KCk7CisgICAgSFRNTFZpZGVvRWxl
bWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVu
dCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCmluZGV4IDQyZjEy
ZjBlZDJkMTNjNGU3NWUwNjRhMzM2YmI3M2MwYWQ1MzVkMzUuLmQ0NWNmNmQyYzhhOGVlMmFkN2Mz
N2FkYmRlNzA4ZjRkZGU0YTViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXR0ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dHRyQ3VzdG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgSlNBdHRyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLm93bmVyRWxlbWVudCgp
KQorICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gd3JhcHBlZCgpLm93bmVyRWxlbWVudCgpKQog
ICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlQ3VzdG9tLmNwcAppbmRleCAxYzljMzI4YjEyMTI1ZDliYmUzOTJjZTMxZTI2MzgxNmUy
ZjEzNGVkLi4zM2Y3NjhlM2M4MzQ1M2RhZTk3NTAyZjUzNDgzY2QzZGQyOWJlODdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNv
dXJjZU5vZGVDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnNldEJ1ZmZlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmICghaW1wbCgpLnNldEJ1ZmZlcihidWZm
ZXIpKQorICAgIGlmICghd3JhcHBlZCgpLnNldEJ1ZmZlcihidWZmZXIpKQogICAgICAgICBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIkF1
ZGlvQnVmZmVyIHVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyIpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKaW5kZXgg
MzZmMzFkOWQ2MmVjZDc4ZmQxYWFmMTkxYzIyYjlhNTUwMDIyNzczZC4uMTUzMTgxNWFjNjM3NWQ5
NjBmZWIyMzc1ZjVmYzNlMTU3YzZhOWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdm9pZCBKU0F1ZGlvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7
CiB9CiAKIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0gdmFsdWUu
dG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0S2luZChzdHJpbmcpOworICAg
IHdyYXBwZWQoKS5zZXRLaW5kKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBKU0F1
ZGlvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAg
ICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBs
KCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5n
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcAppbmRleCA4MzFlNDI1Yzg2NWQ0Yjg1N2QzYWM0MGE4ZWU5N2FmYmFhZDI1
YzNhLi42ZmQxYTUwNDAyNTBlN2Q0Nzc2YzZlOThmNTQ2MmU5ODNiMTU4ZjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNBdWRpb1Ry
YWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKaW5kZXggZjZmYTg2ZjVjMzc0ZmVi
YmMwYjgxYmZmY2FmYzVlZWRjYTQxYjMxZS4uOTIxYmFlZjNiZGUyOTNkOGExN2MyMzZmMjY0ZTIx
MWI5OGJjNjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1
YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgSlNCaXF1
YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAj
aWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsK
ICAgICAgICAgdWludDMyX3QgdHlwZSA9IHZhbHVlLnRvVUludDMyKCZzdGF0ZSk7Ci0gICAgICAg
IGlmICghaW1wbCgpLnNldFR5cGUodHlwZSkpCisgICAgICAgIGlmICghd3JhcHBlZCgpLnNldFR5
cGUodHlwZSkpCiAgICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEpTQmlxdWFk
RmlsdGVyTm9kZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdmFsdWUudG9T
dHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICAgICAgaWYgKHR5cGUgPT0gImxvd3Bh
c3MiIHx8IHR5cGUgPT0gImhpZ2hwYXNzIiB8fCB0eXBlID09ICJiYW5kcGFzcyIgfHwgdHlwZSA9
PSAibG93c2hlbGYiIHx8IHR5cGUgPT0gImhpZ2hzaGVsZiIgfHwgdHlwZSA9PSAicGVha2luZyIg
fHwgdHlwZSA9PSAibm90Y2giIHx8IHR5cGUgPT0gImFsbHBhc3MiKSB7Ci0gICAgICAgICAgICBp
bXBsKCkuc2V0VHlwZSh0eXBlKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5zZXRUeXBlKHR5cGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggZmYyNjMwNzg4MzFmM2M5
NzExOWM3YTA5OWE0NGQwMjJjZjNiOWFlMi4uMGQzMzc3Nzk2OTMxMTBmY2E5N2JjYTFjYzMxZTY5
ODIxZDgxZDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NS
dWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVD
dXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBK
U0NTU1J1bGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDU1NSdWxlKiBydWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNw
cAppbmRleCA4OWU5OTIxNTA2ZmY1MGU4MWUwYzhiOGI4MzlmMmU5ODZiZGE5M2I0Li4wMjg0NDRm
ZTNkZDkxOGJjMGQwODA1MGU5ZGJjMjg2MjkyN2E1ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcApAQCAtNDEsOSArNDEsOSBA
QCBib29sIEpTQ1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYQogICAgIEpTQ1NTUnVsZUxpc3QqIGpzQ1NTUnVsZUxp
c3QgPSBqc0Nhc3Q8SlNDU1NSdWxlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAg
ICBpZiAoIWpzQ1NTUnVsZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0ganNDU1NSdWxl
TGlzdC0+aW1wbCgpLnN0eWxlU2hlZXQoKSkKKyAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVT
aGVldCA9IGpzQ1NTUnVsZUxpc3QtPndyYXBwZWQoKS5zdHlsZVNoZWV0KCkpCiAgICAgICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0eWxlU2hlZXQpKTsKLSAgICBp
ZiAoQ1NTUnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QtPmltcGwoKS5pdGVtKDApKQorICAg
IGlmIChDU1NSdWxlKiBjc3NSdWxlID0ganNDU1NSdWxlTGlzdC0+d3JhcHBlZCgpLml0ZW0oMCkp
CiAgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGNzc1J1bGUp
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCBkZTJmOTA3
MzQ1YTc2OGY1Y2VmMzY4ODQ5NjI3Y2I0MmQ1ZTQ1MWVjLi45MWJhMzEyMjk5MDlkNjQ4ZmM5MGE3
ZGY0MmYzYTVlNjkyM2NlOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogY2xhc3MgQ1NTUHJvcGVydHlJbmZvIHsKQEAgLTI3
OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgZ2V0UHJvcGVydHlWYWx1ZUZhbGxi
YWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcgogewogICAgIC8vIElmIHRoZSBw
cm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLAogICAg
IC8vIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFsdWUuCi0gICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaW5kZXgpKSk7CisgICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPndyYXBwZWQoKS5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaW5kZXgpKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVm
aXgoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmosIHVuc2ln
bmVkIHByb3BlcnR5SUQpCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NT
U3QKICAgICAvLyBwb3NUb3AgcmV0dXJucyAiQ1NTIHRvcCIgYXMgbnVtYmVyIHZhbHVlIGluIHVu
aXQgcGl4ZWxzIF9pZl8gaXRzIGEKICAgICAvLyBwb3NpdGlvbmVkIGVsZW1lbnQuIGlmIGl0IGlz
IG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCwgcmV0dXJuIDAKICAgICAvLyBmcm9tIE1TSUUgZG9j
dW1lbnRhdGlvbiBGSVhNRTogSU1QTEVNRU5UIFRIQVQgKERpcmspCi0gICAgUmVmUHRyPENTU1Zh
bHVlPiB2ID0gdGhpc09iai0+aW1wbCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiB2ID0gdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CiAgICAgaWYgKHYpIHsKICAgICAg
ICAgaWYgKHYtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBqc051bWJl
cihzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2KS0+Z2V0RmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ1NTU3QKIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNp
Z25lZCBwcm9wZXJ0eUlEKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPmlt
cGwoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcGVydHlJRCkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPndyYXBw
ZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcGVydHlJRCkpOwogICAgIGlmICh2KQogICAgICAgICByZXR1cm4ganNTdHJpbmdPck51
bGwoZXhlYywgdi0+Y3NzVGV4dCgpKTsKIApAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8u
cHJvcGVydHlJRCk7Ci0gICAgaW1wbCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwg
cHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1MywxMSArMzUzLDEx
IEBAIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBp
bXBsKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gY3NzVmFsdWUgPSB3cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5h
bWUpOwogICAgIGlmICghY3NzVmFsdWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAg
IGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5hZGQoY3NzVmFsdWUuZ2V0
KCksIHJvb3QoJmltcGwoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6OmZpbmFs
aXplKCkuCisgICAgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkubV9jc3NWYWx1ZVJvb3RzLmFkZChj
c3NWYWx1ZS5nZXQoKSwgcm9vdCgmd3JhcHBlZCgpKSk7IC8vIEJhbGFuY2VkIGJ5IEpTQ1NTVmFs
dWVPd25lcjo6ZmluYWxpemUoKS4KICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCkBAIC0zNjYsNyArMzY2LDcgQEAgdm9p
ZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGUKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NWYWx1ZUN1c3RvbS5jcHAKaW5kZXggZWQ1MTI1MzNlZDMzYTM5MjI1MmJmNjQ1MmMyMWViYzlh
ZWE5YTE3Ni4uZDhmNDcwNWFlYmQyYWM0ZjcyYWNiMDliMDI4YmQ1MzczMjEwMmVhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgYm9vbCBKU0NTU1ZhbHVlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKICAgICBpZiAoIWpzQ1NTVmFsdWUt
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIERPTVdy
YXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKLSAgICB2b2lkKiByb290ID0gd29ybGQtPm1fY3NzVmFsdWVSb290cy5nZXQoJmpzQ1NTVmFs
dWUtPmltcGwoKSk7CisgICAgdm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nzc1ZhbHVlUm9vdHMuZ2V0
KCZqc0NTU1ZhbHVlLT53cmFwcGVkKCkpOwogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKQEAg
LTYwLDggKzYwLDggQEAgdm9pZCBKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTQ1NTVmFsdWUq
IGpzQ1NTVmFsdWUgPSBqc0Nhc3Q8SlNDU1NWYWx1ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTsKICAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOwotICAgIHdvcmxkLm1fY3NzVmFsdWVSb290cy5yZW1vdmUoJmpzQ1NT
VmFsdWUtPmltcGwoKSk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLT5p
bXBsKCksIGpzQ1NTVmFsdWUpOworICAgIHdvcmxkLm1fY3NzVmFsdWVSb290cy5yZW1vdmUoJmpz
Q1NTVmFsdWUtPndyYXBwZWQoKSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1Zh
bHVlLT53cmFwcGVkKCksIGpzQ1NTVmFsdWUpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUqIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCmluZGV4IGI5OTNiZGMyNDJiNDJjNzkzYzIxZTlkMDQ3
MjE5NDZiMzkwY2U3YjcuLmRhNzU4MDJlZGZmYTE2NzAyOGVkOGUwYjEyNGFjYTFjNDg0MzIzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgc3RhdGlj
IENhbnZhc1N0eWxlIHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFsdWUp
CiAgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNDYW52YXNHcmFkaWVu
dDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNH
cmFkaWVudCo+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgm
anNDYXN0PEpTQ2FudmFzR3JhZGllbnQqPihvYmplY3QpLT53cmFwcGVkKCkpOwogICAgIGlmIChv
YmplY3QtPmluaGVyaXRzKEpTQ2FudmFzUGF0dGVybjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2JqZWN0KS0+aW1wbCgpKTsK
KyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2Jq
ZWN0KS0+d3JhcHBlZCgpKTsKICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKIH0KIApAQCAtNjcs
MTIgKzY3LDEyIEBAIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbW1pdChF
eGVjU3RhdGUmKQogCiBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VT
dHlsZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwg
Z2xvYmFsT2JqZWN0KCksIGltcGwoKS5zdHJva2VTdHlsZSgpKTsKKyAgICByZXR1cm4gdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuc3Ryb2tlU3R5bGUoKSk7CiB9CiAKIHZv
aWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJiBj
b250ZXh0ID0gaW1wbCgpOworICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9
IHdyYXBwZWQoKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTgyLDEyICs4MiwxMiBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTdHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBK
U1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBp
bXBsKCkuZmlsbFN0eWxlKCkpOworICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5maWxsU3R5bGUoKSk7CiB9CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZpbGxTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
ewotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9IGltcGwoKTsKKyAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKHZh
bHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYXNTdHJpbmco
dmFsdWUpLT52YWx1ZSgmc3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTcsNyArOTcsNyBA
QCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6d2Via2l0TGluZURhc2goRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiBkYXNoID0gaW1wbCgpLmdldExpbmVEYXNoKCk7CisgICAgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgZGFzaCA9IHdyYXBwZWQoKS5nZXRMaW5lRGFzaCgpOwogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRv
ciBlbmQgPSBkYXNoLmVuZCgpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFdlYmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsCiAgICAgICAgIGRhc2guYXBwZW5kKGVsZW0pOwogICAgIH0KIAotICAgIGltcGwoKS5z
ZXRXZWJraXRMaW5lRGFzaChkYXNoKTsKKyAgICB3cmFwcGVkKCkuc2V0V2Via2l0TGluZURhc2go
ZGFzaCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCmluZGV4IGU1ZGQ2ZTg4MTI3NmM4NTYwYWZiZDVkOTUxM2IyMDdmMjIyZGRkZmQuLjdmNTA0
MzVmNWE2M2QyNThkMmMwM2ZjY2EwZjM3ODVkNmI5ZjRiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkuY2Fu
dmFzKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuY2FudmFz
KCkpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9t
LmNwcAppbmRleCBjYjgzMWQwNGNmYjhlZjg1Njg0NzZiZDhmZGUzZjhmODJlOWE3YzkxLi42MDE3
ZjFmNjA5ZmM2ZGYzZWJkOTUzZTQ4NTAzMzhhYmQzZDkxYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmJl
Zm9yZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGltcGwoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3Jh
cHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmJlZm9yZShFeGVjU3RhdGUm
IHN0YXRlKQogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBK
U0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTQ2hhcmFj
dGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpbXBsKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCmluZGV4IGIwNjVkNWNmZjFj
ZjFiNTA2NDc0NTk2MmJkY2Q4ZDYxZGY3NjdmNTIuLjU1Yzc5MjEyYTEyNDBmMmZiYmI4MGZiNmZl
MGY1NGNjZGRlMmI3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0
ZWRPYmplY3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb21tYW5kTGluZUFQSUhvc3Q6Oklu
c3BlY3RhYmxlT2JqZWN0KiBvYmplY3QgPSBpbXBsKCkuaW5zcGVjdGVkT2JqZWN0KCk7CisgICAg
Q29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0ID0gd3JhcHBlZCgp
Lmluc3BlY3RlZE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQ
SUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCiAgICAgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiBsaXN0ZW5l
cnNBcnJheTsKLSAgICBpbXBsKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3RlbmVy
c0FycmF5KTsKKyAgICB3cmFwcGVkKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3Rl
bmVyc0FycmF5KTsKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dCgmc3RhdGUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdGVuZXJzQXJyYXkuc2l6
ZSgpOyArK2kpIHsKQEAgLTEyOSw3ICsxMjksNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElI
b3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA+PSAyKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG9iamVjdChzdGF0
ZS52bSgpLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGhpbnRzKHN0YXRlLnZtKCksIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEp
KTsKLSAgICAgICAgaW1wbCgpLmluc3BlY3RJbXBsKG9iamVjdC50b0luc3BlY3RvclZhbHVlKCZz
dGF0ZSksIGhpbnRzLnRvSW5zcGVjdG9yVmFsdWUoJnN0YXRlKSk7CisgICAgICAgIHdyYXBwZWQo
KS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpLCBoaW50cy50b0lu
c3BlY3RvclZhbHVlKCZzdGF0ZSkpOwogICAgIH0KIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpAQCAtMTQyLDcgKzE0Miw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6OmRhdGFi
YXNlSWQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IEpTRGF0
YWJhc2U6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKGRh
dGFiYXNlKQotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbXBsKCku
ZGF0YWJhc2VJZEltcGwoZGF0YWJhc2UpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgd3JhcHBlZCgpLmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBKU1ZhbHVlIEpTQ29t
bWFuZExpbmVBUElIb3N0OjpzdG9yYWdlSWQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIFN0b3Jh
Z2UqIHN0b3JhZ2UgPSBKU1N0b3JhZ2U6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZSgmc3RhdGUsIGltcGwoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgd3JhcHBlZCgpLnN0b3JhZ2VJZEltcGwoc3RvcmFn
ZSkpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKaW5kZXggZDA3YmVhY2ExNWE1NDcyYjQ2OTBh
YWM0NWMxYWQ3NTRjZjVkOWEzOS4uNjg3ZWNkMWI1YjU3M2ZiYmIyYjUwOTlkYzdlYjFmNDU4Nzg5
NmE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuZ2V0UmFuZG9tVmFsdWVzKGFy
cmF5QnVmZmVyVmlldy5nZXQoKSwgZWMpOworICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1ZXMo
YXJyYXlCdWZmZXJWaWV3LmdldCgpLCBlYyk7CiAKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCmluZGV4IGFkODFlNGQ0NWIxZTYxZWFlMTg3MGFhZWM3
M2RlM2FlNWRiYzg5ZjUuLjU4NTk0YmVmMmRiMjlhMmYwOTc1ZWM5OWZmY2FmODQwNTFkYjlkNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0NyeXB0
b0tleTo6YWxnb3JpdGhtKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBKU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIgYnVpbGRlcigmc3RhdGUpOwotICAgIGltcGwoKS5idWlsZEFs
Z29yaXRobURlc2NyaXB0aW9uKGJ1aWxkZXIpOworICAgIHdyYXBwZWQoKS5idWlsZEFsZ29yaXRo
bURlc2NyaXB0aW9uKGJ1aWxkZXIpOwogICAgIHJldHVybiBidWlsZGVyLnJlc3VsdCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3Vz
dG9tLmNwcAppbmRleCA5ZmRiODliYzI3ZjY4YTIyYTMyZDljOTk0YmVmMjhkYzEyMzI5NzlmLi5i
NGFkMDQ2MjJjZmZkZjI4ODI1MDNkNTYyODk1MzBjYTE5M2M1YjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAKQEAgLTM0
LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ3J5cHRvS2V5UGFpcjo6
dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpLnB1YmxpY0tleSgpKTsKLSAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QoaW1wbCgpLnByaXZhdGVLZXkoKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHdyYXBwZWQoKS5wdWJsaWNLZXkoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHdyYXBwZWQoKS5wcml2YXRlS2V5KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3Bw
CmluZGV4IGFmMTQ5ZGFhZjA1NDI1MTIzZmU4ODY5NDk5ZDViN2JlZjU4MDNlNWEuLmM1NTZjOWUy
ZTUwMGE1NzU3YjcyYzMwYmRhZjVjNjBiNTFiMGUwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEpTVmFsdWUgSlNDdXN0b21FdmVudDo6ZGV0YWls
KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgQ3VzdG9tRXZlbnQmIGV2ZW50ID0gaW1w
bCgpOworICAgIEN1c3RvbUV2ZW50JiBldmVudCA9IHdyYXBwZWQoKTsKICAgICAKICAgICBpZiAo
ZXZlbnQuZGV0YWlsKCkuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKaW5kZXggYjI4N2M2Yjg5OTYyN2I0MTgwODk5OGIyNjc2YTkxZTViNzgxMjUyYS4u
NjBjNTdmOGQzYTE5M2Q4MmRjM2M2MTE0NTFkNDhlNjI3MjMzYmQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApA
QCAtODEsNyArODEsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5h
bWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICAgICAgY2FsbFR5cGUgPSBtX2N1
c3RvbVJlc29sdmVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtX2N1c3RvbVJlc29sdmVy
LmdldCgpLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTQzMTI+IEpT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkgQ29uc29sZSBNZXNzYWdl
IHNob3VsZCBpbmNsdWRlIExpbmUsIENvbHVtbiwgYW5kIFNvdXJjZVVSTAotICAgICAgICAgICAg
aWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxPYmplY3QtPmltcGwoKS5j
b25zb2xlKCkpCisgICAgICAgICAgICBpZiAoUGFnZUNvbnNvbGVDbGllbnQqIGNvbnNvbGUgPSBt
X2dsb2JhbE9iamVjdC0+d3JhcHBlZCgpLmNvbnNvbGUoKSkKICAgICAgICAgICAgICAgICBjb25z
b2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBB
U0NJSUxpdGVyYWwoIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZlIGEgbG9va3VwTmFtZXNw
YWNlVVJJIG1ldGhvZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDMw
MmM3YTlhMDY3NGEwZjhlMGRhMWMxY2VjMDM3YTU0ZDYyNDkzODAuLjIwZWY2MDkxMzE5MDZlMzhm
M2QyMzdlNzJlYzlhMjdmNDM1ZDMxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogY2Fj
aGVkCiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoSlNE
T01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmpl
Y3QpKSB7Ci0gICAgICAgIGlmICghd2luZG93LT5pbXBsKCkuaXNDdXJyZW50bHlEaXNwbGF5ZWRJ
bkZyYW1lKCkpCisgICAgICAgIGlmICghd2luZG93LT53cmFwcGVkKCkuaXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTUsMTIg
KzUxNSwxMiBAQCB1aW50NjRfdCB0b1VJbnQ2NChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogCiBET01XaW5kb3cmIGFjdGl2ZURP
TVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOworICAgIHJldHVybiBhc0pTRE9NV2lu
ZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKTsKIH0KIAogRE9NV2lu
ZG93JiBmaXJzdERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFzSlNE
T01XaW5kb3coZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOworICAgIHJldHVy
biBhc0pTRE9NV2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKTsK
IH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50KEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50LCBTZWN1cml0eVJlcG9ydGluZ09wdGlv
biByZXBvcnRpbmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcAppbmRleCAxM2ZkYjUy
ZDZjMjUzMTljMTkzOGE3NDI5MjI0MjIwNmFjZmVjNjc4Li5iMDQ4YWY5MTNkMmZiOTY3MTZkNTE1
YWYzMDVlYmI5NDZiNjY3NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHRvSFRNTEZvcm1FbGVtZW50T3JOdWxs
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoSlNIVE1M
Rm9ybUVsZW1lbnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmpl
Y3QodmFsdWUpKS0+aW1wbCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMo
SlNIVE1MRm9ybUVsZW1lbnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4o
YXNPYmplY3QodmFsdWUpKS0+d3JhcHBlZCgpIDogbnVsbHB0cjsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RPTUZvcm1EYXRhKEV4ZWNTdGF0ZSogZXhlYykK
QEAgLTY0LDkgKzY0LDkgQEAgSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjphcHBlbmQoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZTsKICAgICAgICAgICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgPj0gMyAmJiAhc3RhdGUuYXJndW1lbnQoMikuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN0YXRlLmFyZ3VtZW50KDIp
LnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgICAgICAgICBpbXBsKCkuYXBw
ZW5kKG5hbWUsIEpTQmxvYjo6dG9XcmFwcGVkKHZhbHVlKSwgZmlsZW5hbWUpOworICAgICAgICAg
ICAgd3JhcHBlZCgpLmFwcGVuZChuYW1lLCBKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSksIGZpbGVu
YW1lKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpbXBsKCkuYXBwZW5kKG5hbWUsIHZh
bHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgICAgICAgICAgd3JhcHBl
ZCgpLmFwcGVuZChuYW1lLCB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsK
ICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCmluZGV4IDQz
MTJhZTI3Njk1ZTI4NmY3NzkyYjQwZTNkZDVjNzg2ZTgzNjljMDIuLjc1OGNiNThkMmIwZmM2ZDA1
YWZhYjViMTk2YmJjNmE5NzNlYmRiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcApAQCAtMzEsNyArMzEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NTWltZVR5cGVBcnJheTo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUm
IHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgp
Lm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3Rv
bS5jcHAKaW5kZXggMGRkNTQ1MTIxN2RjODA4ZGQzZTlmNTJhYmQyYjRmZmNkNjRmOGIzZi4uNGZm
MTI2MjkyN2NkY2FkYzJhYTJhOWViYjA2YTQxZDQzMDgzMDQyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25D
dXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wg
SlNET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byBpdGVt
ID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQXJyYXlDdXN0b20uY3BwCmluZGV4IDI2NjlkODM3ZGYyOTM0NjUyMzVhODk0MjUxNDJl
ZjZjMTc0OTgzMDYuLjUzYjRiNDU3MzI3M2U1MjM0ZGIzNjhkMGIwNmI1OTVjYjI5ZGM0ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlD
dXN0b20uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wg
SlNET01QbHVnaW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20u
Y3BwCmluZGV4IDFhNzU4NmRiZmZjMDMyM2I4MTFiNTU3ZTM5ZjU1OGI3MGJjZjAzZTcuLmNjZmNh
MzQ5ZjJmZGY4NzQ0ZWRhODgzYTA5MjlhZGVhYzViMjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTVBsdWdpbjo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQog
ewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0
ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKaW5kZXggZmQ0MDFiMjkwNWY2OTFm
NmRmZmZkYjVkODVkZDQyNTM0YWRmMjg5Yi4uNWJkMzNjYjJlNTAzODNjYjczZWZhN2IyMWVlNWM2
MWI3YjZlYWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ0xpc3RDdXN0b20uY3BwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFJlZlB0cjxET01TdHJpbmdMaXN0PiBKU0RPTVN0cmluZ0xpc3Q6OnRvV3JhcHBlZChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpT
RE9NU3RyaW5nTGlzdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01TdHJp
bmdMaXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2Fz
dDxKU0RPTVN0cmluZ0xpc3QqPihhc09iamVjdCh2YWx1ZSkpLT53cmFwcGVkKCk7CiAKICAgICBp
ZiAoIWlzSlNBcnJheSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4
IDlhZjg0NWMxODIwYjZhNDQ5MTg5MzRlZTMxMDIxNWU2OGQ3NGQzNTUuLjIyNzFmZDlhYjlhN2Nh
ZDBlM2EzYjU4YzliOTBlMzg3ZjA4MDk3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgYm9v
bCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHIKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIG5hbWVJc1ZhbGlkOwotICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgaXRlbSA9IGltcGwoKS5pdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3Bl
cnR5TmFtZSksIG5hbWVJc1ZhbGlkKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGl0ZW0gPSB3
cmFwcGVkKCkuaXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lSXNW
YWxpZCk7CiAgICAgaWYgKG5hbWVJc1ZhbGlkKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCksIGl0ZW0pKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01Miw3ICs1Miw3IEBAIHZv
aWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5h
bWVzOwotICAgIHRoaXNPYmplY3QtPmltcGwoKS5nZXROYW1lcyhuYW1lcyk7CisgICAgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFt
ZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZXNb
aV0pKTsKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIEpTRE9N
U3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+aW1wbCgpLmRlbGV0ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPndyYXBwZWQoKS5kZWxldGVJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCiBib29sIEpTRE9NU3RyaW5n
TWFwOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluZGV4KQpAQCAtODMsNyArODMsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBpbXBsKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJp
bmdWYWx1ZSwgZWMpOworICAgIHdyYXBwZWQoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKICAgICByZXR1cm4gIWVjOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCmluZGV4IGJkZDQ4Nzc4NDllY2E3Y2Nj
OTFiYjZkYTViYzQzZDE2NjI4ZGRkY2UuLjU0Zjc1ZDBhMTllNjRlNzI1ZDU0YjA5NDMxMDdmNjA5
ZTI1M2JkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9r
ZW5MaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRv
a2VuTGlzdEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgSlNWYWx1ZSBKU0RPTVRva2VuTGlz
dDo6dG9nZ2xlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgT3B0aW9uYWw8Ym9vbD4gZm9yY2UgPSBz
dGF0ZS5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gTnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+
KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsKCkudG9nZ2xlKHRva2Vu
LCBmb3JjZSwgZWMpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih3cmFwcGVkKCku
dG9nZ2xlKHRva2VuLCBmb3JjZSwgZWMpKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYmRkYzIwY2ZlNjI3NmQ1NmJjY2NkOTk3MWM0NmI1
ZmQyOTU4NzhlZS4uZjE3NjRlMTcwNDdiZjM4YzM5ZTAzNjY5ODc3MDU4OTZiYTYyZTk4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgc2hvdWxkQWxs
b3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhleGVjLCBhc0pTRE9NV2luZG93KHRoaXNPYmplY3QpLT5pbXBsKCkpOworICAg
IHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KS0+d3JhcHBlZCgpKTsKIH0KIAogY29uc3QgQ2xh
c3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFs
T2JqZWN0OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dCYXNlKSB9
OwpAQCAtNzAsNyArNzAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdp
bmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaAogSlNET01XaW5kb3dC
YXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1Jl
ZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBK
U0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmc2hlbGwtPndvcmxkKCksICZzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKQogICAgICwgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzKCh3aW5k
b3cgJiYgd2luZG93LT5mcmFtZSgpKSA/IElzV2F0Y2hlZCA6IElzSW52YWxpZGF0ZWQpCi0gICAg
LCBtX2ltcGwod2luZG93KQorICAgICwgbV93cmFwcGVkKHdpbmRvdykKICAgICAsIG1fc2hlbGwo
c2hlbGwpCiAgICAgLCBtX3ByaXZhdGVGdW5jdGlvbnModm0pCiB7CkBAIC0xMzEsMjUgKzEzMSwy
NSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIHZvaWQg
SlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAgQVNTRVJUKG1faW1wbC0+
ZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSk7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gZ2xvYmFsRXhlYygpOwotICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5h
bWVzLT5kb2N1bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX2ltcGwtPmRvY3VtZW50KCkpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3Vj
aFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1
bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jh
c2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ltcGwt
PmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKTsKIH0KIAogdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OnByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgY29uc3QKIHsKLSAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKGltcGwoKS5mcmFtZSgp
LCBtZXNzYWdlKTsKKyAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHdyYXBwZWQoKS5mcmFt
ZSgpLCBtZXNzYWdlKTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmls
aW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5k
b3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4o
b2JqZWN0KTsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsK
KyAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCBi
b29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIG9iamVjdCkKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZv
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dC
YXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2Jq
ZWN0KTsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5MiwxNiArMTkyLDE2IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJl
Y3Vyc2lvbldoZW5DbG9zaW5nUGFnCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJy
dXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNE
T01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dC
YXNlKj4ob2JqZWN0KTsKLSAgICBBU1NFUlQodGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpOwot
ICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+cGFnZSgpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSk7CisgICAgUGFnZSogcGFnZSA9
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT5wYWdlKCk7CiAgICAgcmV0dXJuIHNob3Vs
ZEludGVycnVwdFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJzaW9uV2hlbkNsb3NpbmdQYWdl
KHBhZ2UpOwogfQogCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
QmVmb3JlVGltZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0
IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2lu
ZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgp
KTsKLSAgICBQYWdlKiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnBhZ2UoKTsK
KyAgICBBU1NFUlQodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpOworICAgIFBhZ2UqIHBh
Z2UgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgpOwogCiAgICAgaWYgKHNo
b3VsZEludGVycnVwdFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJzaW9uV2hlbkNsb3NpbmdQ
YWdlKHBhZ2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBib29s
IEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25z
dCBKU0dsb2JhbE9iamVjdCogbwogUnVudGltZUZsYWdzIEpTRE9NV2luZG93QmFzZTo6amF2YVNj
cmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNv
bnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9N
V2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1w
bCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFJ1bnRpbWVGbGFncygpOwog
ICAgIHJldHVybiBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CkBA
IC0zMjUsNyArMzI1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRX
YXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKIEpTQzo6SlNJbnRlcm5hbFBy
b21pc2UqIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUg
bW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIEpTRE9N
V2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGds
b2JhbE9iamVjdCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2Jq
ZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVu
dCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9j
dW1lbnQtPm1vZHVsZUxvYWRlcigpLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxl
TmFtZSwgaW1wb3J0ZXJNb2R1bGVLZXkpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShl
eGVjLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGpz
VW5kZWZpbmVkKCkpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2Uq
IEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0
CiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZl
dGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXkpCiB7CiAgICAgSlNET01XaW5kb3dCYXNlKiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKLSAg
ICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS5kb2N1
bWVudCgpKQorICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+
d3JhcHBlZCgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBkb2N1bWVudC0+bW9kdWxlTG9h
ZGVyKCktPmZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlS2V5KTsKICAgICBKU0M6OkpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJy
ZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTM0Myw3ICszNDMsNyBAQCBKU0M6
OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKEpT
Qzo6SlNHbG9iYWxPYmplY3QqCiBKU0M6OkpTVmFsdWUgSlNET01XaW5kb3dCYXNlOjptb2R1bGVM
b2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxl
UmVjb3JkKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0
PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVu
dD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVm
UHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5ldmFsdWF0ZShnbG9i
YWxPYmplY3QsIGV4ZWMsIG1vZHVsZUtleSwgbW9kdWxlUmVjb3JkKTsKICAgICByZXR1cm4gSlND
Ojpqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAppbmRleCAxMDc2NDBjMTc2OGZiN2Q4MmU3OTRiMTA2ZjAyM2IyOTE0Mzg5Zjlm
Li5kNjk5YTVhZTU3YjdmNzIyZWFiYTQ4ODI3MDZjMWE0ZTEwMWYzY2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNDYsNyArNDYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHVwZGF0ZURvY3Vt
ZW50KCk7CiAKLSAgICAgICAgRE9NV2luZG93JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1w
bDsgfQorICAgICAgICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFw
cGVkOyB9CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKIAogICAgICAgICAvLyBDYWxsZWQganVzdCBiZWZvcmUgcmVtb3Zpbmcg
dGhpcyB3aW5kb3cgZnJvbSB0aGUgSlNET01XaW5kb3dTaGVsbC4KQEAgLTg0LDcgKzg0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlz
ZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9pbXBs
OworICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dyYXBwZWQ7CiAgICAgICAgIEpTRE9NV2lu
ZG93U2hlbGwqIG1fc2hlbGw7CiAKICAgICAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMg
bV9wcml2YXRlRnVuY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDBiYzMzNzU0YWExZmJjNWEzNjkzMTczNGY3ZDE1OWU0
MjQ5MDQ0NmUuLjAwZTYyYTQyYjY0OWJmNzg1NjNkNjA4OGVhMzhkZjgxMDU5NjIzOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTYyLDIxICs2MiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNET01XaW5kb3c6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlm
IChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmcmFtZSk7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganND
YXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVj
LCBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSktPndyYXBwZWQoKS5mcmFtZSgpLT50cmVl
KCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBu
YW1lZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93
QmFzZSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHNsb3RCYXNlKTsKLSAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT53cmFwcGVkKCkuZnJhbWUoKS0+ZG9jdW1l
bnQoKTsKIAotICAgIEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iai0+aW1wbCgpKSk7CisgICAgQVNTRVJUKEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqLT53cmFwcGVk
KCkpKTsKICAgICBBU1NFUlQoaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCkpOwogCiAgICAgQXRv
bWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKTsKQEAgLTk2LDkgKzk2LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIG5hbWVkSXRlbUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1dlYktpdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01X
aW5kb3cqIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3RlZFRoaXMtPndyYXBwZWQo
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBjYXN0ZWRUaGlzLT5pbXBsKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGNh
c3RlZFRoaXMtPndyYXBwZWQoKS53ZWJraXROYW1lc3BhY2UoKSkpOwogfQogI2VuZGlmCiAKQEAg
LTExMSw5ICsxMTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dJbmRleGVk
REIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IHRvSlNET01XaW5kb3coSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbmRleGVkREJFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6aW5kZXhl
ZERCKCZpbXBsKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTEyOSw3ICsxMjksNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIFdlIGRvbid0
IHdhbnQgYW55IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBh
IGZyYW1lbGVzcyB3aW5kb3cgKGkuZS4gb25lIHdob3NlIHBhZ2UgZ290IGNsb3NlZCwKICAgICAv
LyBvciB3aG9zZSBpZnJhbWUgZ290IHJlbW92ZWQpLgogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNu
J3QgZnVsbHkgbWF0Y2ggRmlyZWZveCwgd2hpY2ggYWxsb3dzIGF0IGxlYXN0IHRvU3RyaW5nIGlu
IGFkZGl0aW9uIHRvIHRob3NlLgotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkp
IHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAgIC8v
IFRoZSBmb2xsb3dpbmcgY29kZSBpcyBzYWZlIGZvciBjcm9zcy1kb21haW4gYW5kIHNhbWUgZG9t
YWluIHVzZS4KICAgICAgICAgLy8gSXQgaWdub3JlcyBhbnkgY3VzdG9tIHByb3BlcnRpZXMgdGhh
dCBtaWdodCBiZSBzZXQgb24gdGhlIERPTVdpbmRvdyAoaW5jbHVkaW5nIGEgY3VzdG9tIHByb3Rv
dHlwZSkuCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNsb3NlZCkgewpAQCAtMTQ1LDE0ICsxNDUsMTUgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkK
ICAgICAgICAgLy8gbm90IGFsbG93ZWQuIAogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2xvdC5zZXRXYXRjaHBv
aW50U2V0KHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyk7CisgICAgfQorCisg
ICAgc2xvdC5zZXRXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBv
aW50cyk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBjcm9zcy1kb21haW4gYWNjZXNz
IGhlcmUgd2l0aG91dCBwcmludGluZyB0aGUgZ2VuZXJpYyB3YXJuaW5nIG1lc3NhZ2UKICAgICAv
LyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8gc29tZSBmdW5jdGlvbiwganVzdCBk
aWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nlc3MKICAgICAvLyBpcyBhbGxvd2Vk
LgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpOwogICAgIAog
ICAgIC8vIExvb2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3VyIG93
biBwcm9wZXJ0aWVzLCBidXQgaWdub3JlIG92ZXJyaWRlcyBjb21wbGV0ZWx5CiAgICAgLy8gaWYg
dGhpcyBpcyBjcm9zcy1kb21haW4gYWNjZXNzLgpAQCAtMTc2LDcgKzE3Nyw3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0
ZXI8anNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlLCAyPik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5zaG93TW9kYWxEaWFsb2cpIHsKLSAgICAgICAgaWYgKCFET01XaW5kb3c6OmNh
blNob3dNb2RhbERpYWxvZyh0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpIHsKKyAgICAgICAg
aWYgKCFET01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZyh0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKSkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjA3LDcgKzIwOCw3IEBAIGJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5CiAgICAgfQogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykK
LSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS53ZWJraXQgJiYg
dGhpc09iamVjdC0+aW1wbCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlz
T2JqZWN0LT53b3JsZCgpKSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLndlYmtpdCAmJiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2hvdWxkSGF2ZVdlYktp
dE5hbWVzcGFjZUZvcldvcmxkKHRoaXNPYmplY3QtPndvcmxkKCkpKSB7CiAgICAgICAgIHNsb3Qu
c2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGFsbG93c0FjY2VzcyA/IERvbnREZWxldGUg
fCBSZWFkT25seSA6IFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBqc0RPTVdpbmRv
d1dlYktpdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIzNyw3ICsyMzgsNyBA
QCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRo
YXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1v
eiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8K
ICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgp
LnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7
CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSB8IERvbnRFbnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMjQ3LDkgKzI0OCw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAKICAgICAv
LyBhbGxvdyB3aW5kb3dbMV0gb3IgcGFyZW50WzFdIGV0Yy4gKCM1Njk4MykKICAgICBPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGlu
ZGV4ICYmIGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgp
LnNjb3BlZENoaWxkQ291bnQoKSkgeworICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkp
IHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxl
dGUgfCBEb250RW51bSwKLSAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+aW1wbCgp
LmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1ZSgpKS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCkpKTsKKyAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1ZSgpKS0+ZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNjAs
NyArMjYxLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICB9CiAKICAgICAvLyBBbGxv
dyBzaG9ydGN1dHMgbGlrZSAnSW1hZ2UxJyBpbnN0ZWFkIG9mIGRvY3VtZW50LmltYWdlcy5JbWFn
ZTEKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVk
KCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTERvY3VtZW50PigqZG9jdW1l
bnQpKSB7CiAgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUg
JiYgZG93bmNhc3Q8SFRNTERvY3VtZW50PigqZG9jdW1lbnQpLmhhc1dpbmRvd05hbWVkSXRlbSgq
YXRvbWljUHJvcGVydHlOYW1lKSkgewpAQCAtMjc2LDcgKzI3Nyw3IEBAIGJvb2wgSlNET01XaW5k
b3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCB1CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihvYmplY3QpOwogICAgIAotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCkpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIG1lc3NhZ2UgaGVyZSB0aGF0IGV4cGxhaW5zIHdo
eSB0aGUgcHJvcGVydHkgYWNjZXNzL2Z1bmN0aW9uIGNhbGwgd2FzCiAgICAgICAgIC8vIG5vdCBh
bGxvd2VkLiAKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKQEAgLTI4Nyw3ICsyODgsNyBA
QCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIGJlY2F1c2Ugd2UgYWx3YXlzIGFsbG93
IGFjY2VzcyB0byBzb21lIGZ1bmN0aW9uLCBqdXN0IGRpZmZlcmVudCBvbmVzIGRlcGVuZGluZyB3
aGV0aGVyIGFjY2VzcwogICAgIC8vIGlzIGFsbG93ZWQuCiAgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKLSAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
ZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLCBlcnJvck1lc3NhZ2UpOworICAgIGJvb2wgYWxsb3dz
QWNjZXNzID0gc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCksIGVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgYmVm
b3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcywgYnV0IGlnbm9yZSBvdmVy
cmlkZXMgY29tcGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMgY3Jvc3MtZG9tYWluIGFjY2Vzcy4K
QEAgLTMwMSw3ICszMDIsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIG5hbWlu
ZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0
CiAgICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhl
c2UsIHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09i
amVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVk
KCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzIzLDkgKzMyNCw5IEBAIGJvb2wgSlNET01XaW5k
b3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCB1CiAgICAgLy8gV2UgbmVlZCB0byB0ZXN0IHRoZSBjb3JyZWN0IHByaW9yaXR5IG9y
ZGVyLgogCiAgICAgLy8gYWxsb3cgd2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMp
Ci0gICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29w
ZWRDaGlsZENvdW50KCkpIHsKKyAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkQ291bnQoKSkgewogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLAotICAgICAg
ICAgICAgdG9KUyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKGluZGV4KS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsKKyAgICAgICAgICAgIHRv
SlMoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGls
ZChpbmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMzM2LDcgKzMzNyw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAg
ICAgfQogCiAgICAgLy8gQWxsb3cgc2hvcnRjdXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBk
b2N1bWVudC5pbWFnZXMuSW1hZ2UxCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVj
dC0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhU
TUxEb2N1bWVudD4oKmRvY3VtZW50KSkgewogICAgICAgICAvLyBUaGlzIHByb3BlcnR5TmFtZSBp
cyBnZW5lcmF0ZWQgYnkgSWRlbnRpZmllcjo6ZnJvbS4KICAgICAgICAgLy8gVGhpcyBmdW5jdGlv
biBnZW5lcmF0ZXMgSWRlbnRpZmllciBmcm9tIFN0cmluZyBhbmQgYWx3YXlzIHJldHVybnMgdGhl
IG5vbi1zeW1ib2wgSWRlbnRpZmllci4KQEAgLTM1NCwxMiArMzU1LDEyIEBAIGJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCB1CiB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RPTVdpbmRvdyo+KGNlbGwpOwotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCkpCisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gT3B0aW1pemF0aW9uOiBhY2Nlc3MgSmF2YVNjcmlwdCBnbG9iYWwgdmFy
aWFibGVzIGRpcmVjdGx5IGJlZm9yZSBpbnZvbHZpbmcgdGhlIERPTS4KICAgICBpZiAodGhpc09i
amVjdC0+SlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoZXhlYywgcHJvcGVy
dHlOYW1lKSkgewotICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgICAgIGlmIChCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVj
dC0+d3JhcHBlZCgpKSkKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0zNjcsMjYgKzM2OCwyNiBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAgICAgaWYg
KGxvb2t1cFB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZv
LnN0YXRpY1Byb3BIYXNoVGFibGUsIHNsb3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNP
YmplY3QtPmltcGwoKSkpCisgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
IHZvaWQgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewog
ICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7
Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAoIXRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KTsKIAogICAg
IC8vIE9wdGltaXphdGlvbjogYWNjZXNzIEphdmFTY3JpcHQgZ2xvYmFsIHZhcmlhYmxlcyBkaXJl
Y3RseSBiZWZvcmUgaW52b2x2aW5nIHRoZSBET00uCiAgICAgaWYgKHRoaXNPYmplY3QtPkpTR2xv
YmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKGV4ZWMsIHByb3BlcnR5TmFtZSkpIHsK
LSAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQo
KSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkp
KQogICAgICAgICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOwogfQogCkBAIC0zOTQsNyArMzk1LDcgQEAgYm9vbCBKU0RPTVdpbmRv
dzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm8KIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBm
cmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwog
fQpAQCAtNDAzLDcgKzQwNCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8v
IE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3Jp
Z2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6
OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTQxMiw3ICs0
MTMsNyBAQCB1aW50MzJfdCBKU0RPTVdpbmRvdzo6Z2V0RW51bWVyYWJsZUxlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhl
IHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAg
ICByZXR1cm4gMDsKICAgICByZXR1cm4gQmFzZTo6Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0
aGlzT2JqZWN0KTsKIH0KQEAgLTQyMSw3ICs0MjIsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpnZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UAogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBm
cmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFN0
cnVjdHVyZVByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CkBAIC00MzAsNyArNDMxLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm8KIHsKICAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7
CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAg
LTQzOSw3ICs0NDAsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogewogICAgIEpTRE9NV2lu
ZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBP
bmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUg
b3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBl
ZCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00NDgsNyArNDQ5LDcgQEAg
dm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnQKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2lu
ZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlz
T2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtNDU3LDcgKzQ1OCw3IEBAIGJvb2wgSlNET01XaW5k
b3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBp
biB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0
dGVycyB0byBiZSBpbnRyb2R1Y2VkLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhp
c09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG9u
J3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCkBA
IC00NzYsNyArNDc3LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAvLyBhIHByb3BlcnR5IG5hbWVkICJsb2NhdGlv
biIgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIGEgbmF2aWdhdGlvbiAoPHJkYXI6Ly9wcm9ibGVtLzU2
ODgwMzk+KS4KICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlRE9NV2luZG93KCZz
dGF0ZSkuZnJhbWUoKSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkudXNl
c0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkgewotICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIGltcGwoKSkpCisgICAgICAgICAgICBpZiAo
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCZzdGF0ZSwgd3Jh
cHBlZCgpKSkKICAgICAgICAgICAgICAgICBwdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTQ4Nyw3ICs0ODgsNyBAQCB2b2lkIEpTRE9NV2luZG93Ojpz
ZXRMb2NhdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKExvY2F0aW9uKiBs
b2NhdGlvbiA9IGltcGwoKS5sb2NhdGlvbigpKQorICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24g
PSB3cmFwcGVkKCkubG9jYXRpb24oKSkKICAgICAgICAgbG9jYXRpb24tPnNldEhyZWYoYWN0aXZl
RE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSksIGxvY2F0aW9uU3RyaW5n
KTsKIH0KIApAQCAtNTMwLDcgKzUzMSw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6Om9wZW4oRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPERPTVdpbmRvdz4gb3BlbmVkV2luZG93
ID0gaW1wbCgpLm9wZW4odXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5n
LCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSk7CisgICAg
UmVmUHRyPERPTVdpbmRvdz4gb3BlbmVkV2luZG93ID0gd3JhcHBlZCgpLm9wZW4odXJsU3RyaW5n
LCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRl
KSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSk7CiAgICAgaWYgKCFvcGVuZWRXaW5kb3cpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgb3BlbmVk
V2luZG93LmdldCgpKTsKQEAgLTU4NSw3ICs1ODYsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpz
aG93TW9kYWxEaWFsb2coRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIERpYWxvZ0hhbmRsZXIgaGFu
ZGxlcihzdGF0ZSk7CiAKLSAgICBpbXBsKCkuc2hvd01vZGFsRGlhbG9nKHVybFN0cmluZywgZGlh
bG9nRmVhdHVyZXNTdHJpbmcsIGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLCBmaXJzdERPTVdpbmRv
dygmc3RhdGUpLCBbJmhhbmRsZXJdKERPTVdpbmRvdyYgZGlhbG9nKSB7CisgICAgd3JhcHBlZCgp
LnNob3dNb2RhbERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVE
T01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSwgWyZoYW5kbGVyXShET01X
aW5kb3cmIGRpYWxvZykgewogICAgICAgICBoYW5kbGVyLmRpYWxvZ0NyZWF0ZWQoZGlhbG9nKTsK
ICAgICB9KTsKIApAQCAtNjM1LDEyICs2MzYsMTIgQEAgc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9z
dE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpT
RE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShpbXBsKCksIHN0YXRlKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1l
c3NhZ2Uod3JhcHBlZCgpLCBzdGF0ZSk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRp
bWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGltcGwoKS5kb2N1bWVudCgpID8gaW1wbCgpLmRvY3VtZW50
KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKKyAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1bWVudCgpID8g
d3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRB
Y3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50U2Vj
dXJpdHlQb2xpY3kpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02NTEsNyArNjUyLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGludCBkZWxheSA9IHN0YXRlLmFy
Z3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGludCByZXN1bHQgPSBpbXBsKCkuc2V0VGltZW91dChXVEY6Om1vdmUoYWN0aW9uKSwgZGVs
YXksIGVjKTsKKyAgICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldFRpbWVvdXQoV1RGOjptb3Zl
KGFjdGlvbiksIGRlbGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
CiAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NTksNyArNjYwLDcgQEAgSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gaW1wbCgpLmRvY3VtZW50KCkg
PyBpbXBsKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOwor
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBl
ZCgpLmRvY3VtZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFj
dGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndv
cmxkKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTY2OSw3ICs2NzAsNyBAQCBK
U1ZhbHVlIEpTRE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogICAgICAg
ICByZXR1cm4ganNOdW1iZXIoMCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
bnQgcmVzdWx0ID0gaW1wbCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSwg
ZWMpOworICAgIGludCByZXN1bHQgPSB3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFj
dGlvbiksIGRlbGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAg
ICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NzcsNyArNjc4LDcgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEZyYW1l
KiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5m
cmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CkBAIC02ODUsMTMgKzY4NiwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjphZGRFdmVudExpc3Rl
bmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS5hZGRFdmVudExpc3RlbmVy
KHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0
ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFs
c2UsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFu
KCZzdGF0ZSkpOworICAgIHdyYXBwZWQoKS5hZGRFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50
KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVj
dCgpLT53b3JsZCgpKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVF
dmVudExpc3RlbmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1w
bCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTY5OSw3ICs3
MDAsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS5yZW1vdmVFdmVudExpc3RlbmVyKHN0YXRlLmFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2Jh
bE9iamVjdCgpLT53b3JsZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZz
dGF0ZSkpOworICAgIHdyYXBwZWQoKS5yZW1vdmVFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50
KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVj
dCgpLT53b3JsZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkp
OwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC03MDksOSArNzEwLDkgQEAgRE9N
V2luZG93KiBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYg
KG9iamVjdC0+aW5oZXJpdHMoSlNET01XaW5kb3c6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAm
anNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpz
Q2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICBpZiAob2JqZWN0LT5p
bmhlcml0cyhKU0RPTVdpbmRvd1NoZWxsOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2Fz
dDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpz
Q2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwCmluZGV4IDU0Y2I1ZTU0MDQyMDE1MDVkNWRhN2VhNDdlNzRmYTBjMmVmMGUwNjQuLjExMjA2
Njg1MjIyMjlmN2QxNmRlZjg2OWRmOTE3OTY3ZjUxY2E3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiB7CiAgICAgLy8gUmVwbGFjaW5nIEpTRE9NV2luZG93IHZpYSB0ZWxsaW5nIEpTRE9N
V2luZG93U2hlbGwgdG8gdXNlIHRoZSBzYW1lIERPTVdpbmRvdyBpdCBhbHJlYWR5IHVzZXMgbWFr
ZXMgbm8gc2Vuc2UsCiAgICAgLy8gc28gd2UnZCBiZXR0ZXIgbmV2ZXIgdHJ5IHRvLgotICAgIEFT
U0VSVCghd2luZG93KCkgfHwgZG9tV2luZG93LmdldCgpICE9ICZ3aW5kb3coKS0+aW1wbCgpKTsK
KyAgICBBU1NFUlQoIXdpbmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAhPSAmd2luZG93KCktPndy
YXBwZWQoKSk7CiAgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3Mg
cHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUg
dGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAg
Ly8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKQEAgLTk0LDkg
Kzk0LDkgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01X
aW5kb3c+IGRvbVdpbmRvdykKIC8vIEpTRE9NV2luZG93IG1ldGhvZHMKIC8vIC0tLS0KIAotRE9N
V2luZG93JiBKU0RPTVdpbmRvd1NoZWxsOjppbXBsKCkgY29uc3QKK0RPTVdpbmRvdyYgSlNET01X
aW5kb3dTaGVsbDo6d3JhcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpbmRvdygpLT5pbXBs
KCk7CisgICAgcmV0dXJuIHdpbmRvdygpLT53cmFwcGVkKCk7CiB9CiAKIC8vIC0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBjZWRiNTlj
NzM1MmFjZGYxMGEzMTc2YTA3YjIxODNhZTc1MmM2OGE4Li4wMWYwNDhkNjdhNGY1YjhkMGYxZWU5
NjlkNWQyNzU0NWYxMjc0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBERUNMQVJFX0lORk87CiAKLSAgICAgICAgRE9NV2luZG93JiBpbXBsKCkgY29uc3Q7
CisgICAgICAgIERPTVdpbmRvdyYgd3JhcHBlZCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBK
U0RPTVdpbmRvd1NoZWxsKiBjcmVhdGUoSlNDOjpWTSYgdm0sIFBhc3NSZWZQdHI8RE9NV2luZG93
PiB3aW5kb3csIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgK
aW5kZXggZTQ5NDE1ZTJiYzQyNDU4MGMyYmM5MDBiZDMyM2Y2N2IwODA5NTIzNS4uMjYyNmY1OGFl
ZWE5MDI0NTEwMGJkMmRiOWFlMTA3ZGUwYzMzZGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTUyLDE2ICs1MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbXBsZW1lbnRhdGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNET01P
YmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3QgQmFzZTsKIAotICAgIElt
cGxlbWVudGF0aW9uQ2xhc3MmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAg
fkpTRE9NV3JhcHBlcigpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigp
OyB9CisgICAgSW1wbGVtZW50YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8SW1wbGVtZW50YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KIAogcHJv
dGVjdGVkOgogICAgIEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxJbXBsZW1lbnRhdGlvbkNsYXNzPiYm
IGltcGwpCiAgICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAgICAg
LCBtX2ltcGwoJmltcGwubGVha1JlZigpKSB7IH0KKyAgICAgICAgLCBtX3dyYXBwZWQoV1RGOjpt
b3ZlKGltcGwpKSB7IH0KIAogcHJpdmF0ZToKLSAgICBJbXBsZW1lbnRhdGlvbkNsYXNzKiBtX2lt
cGw7CisgICAgUmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+IG1fd3JhcHBlZDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGF0YUN1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFD
dWVDdXN0b20uY3BwCmluZGV4IDdhYjMyNDVkMGJiYzJiZDdkZjU3ZjJiNzU5YjM0YjA0ODBmMzM1
YTEuLmJlNTNlYmVkOTUxNDFiZjY4NTYxOTc1YzQxNjdhZTUyYzAxZTJlYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcApAQCAtMzgsMTIgKzM4
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKIEpT
VmFsdWUgSlNEYXRhQ3VlOjp2YWx1ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJl
dHVybiBpbXBsKCkudmFsdWUoJnN0YXRlKTsKKyAgICByZXR1cm4gd3JhcHBlZCgpLnZhbHVlKCZz
dGF0ZSk7CiB9CiAKIHZvaWQgSlNEYXRhQ3VlOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIGltcGwoKS5zZXRWYWx1ZSgmc3RhdGUsIHZhbHVlKTsKKyAg
ICB3cmFwcGVkKCkuc2V0VmFsdWUoJnN0YXRlLCB2YWx1ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwCmlu
ZGV4IDBiMGZhOTA3NjAxNjU2NzEzMWNiOGQ3MDMzYzljODYxOGMwYTFkZTguLmRmYzhkNDRjZjY2
ZDVkZTJlZDkyZDJlY2RiYTFmMzY1NjYyOGU3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTRGF0YVRyYW5zZmVyOjp0eXBlcyhFeGVj
U3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gaW1wbCgp
LnR5cGVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSB3cmFwcGVkKCkudHlwZXMoKTsK
ICAgICByZXR1cm4gdHlwZXMuaXNFbXB0eSgpID8ganNOdWxsKCkgOiBqc0FycmF5KCZzdGF0ZSwg
Z2xvYmFsT2JqZWN0KCksIHR5cGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcAppbmRleCA4Mzg5ZDYxZTU4MzEzODU0ZjU1NjMzYzJjOTNkNTExNzMwYzNlYTBlLi4wZTli
OTc2N2ZjMzI5Y2Q5ZWM1NjNiZDliZTRjMWZlZmYxNjg1OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEpTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0
YXRlLCAmaW1wbCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZ3cmFw
cGVkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4
IDdkODBmNmYxYjhmZWExZDBhNzdlZGY4ODg2YjNlZDMzMGY2NmJmMDAuLjczNzYyY2FhMTNjNTRm
ZTVjZmI5NjM3ODA5MTkwZjQ4YzY2ODllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCkBAIC0xMzYsNyAr
MTM2LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QoY29uc3Qg
RGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKgogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9u
RXZlbnQ6OmFjY2VsZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIERldmlj
ZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9
IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmFjY2VsZXJhdGlv
bigpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUFjY2VsZXJh
dGlvbk9iamVjdChpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVyYXRpb24oKSwgc3RhdGUp
OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxl
cmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25F
dmVudDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eShFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogewotICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90
aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRh
KCktPmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSkKICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwogICAgIHJldHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmplY3QoaW1wLmRldmljZU1vdGlv
bkRhdGEoKS0+YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSgpLCBzdGF0ZSk7CkBAIC0xNTIs
NyArMTUyLDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnMKIAogSlNWYWx1ZSBKU0RldmljZU1v
dGlvbkV2ZW50Ojpyb3RhdGlvblJhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBE
ZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50JiBp
bXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5yb3RhdGlv
blJhdGUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBjcmVhdGVSb3Rh
dGlvblJhdGVPYmplY3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+cm90YXRpb25SYXRlKCksIHN0
YXRlKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OnJv
dGF0aW9uUmF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90
aW9uRXZlbnQ6OmludGVydmFsKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlTW90aW9u
RXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gd3JhcHBl
ZCgpOwogICAgIGlmICghaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+Y2FuUHJvdmlkZUludGVydmFs
KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLmRl
dmljZU1vdGlvbkRhdGEoKS0+aW50ZXJ2YWwoKSk7CkBAIC0xODksNyArMTg5LDcgQEAgSlNWYWx1
ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnQoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICBib29sIGludGVydmFsUHJvdmlkZWQgPSAhc3RhdGUuYXJndW1lbnQoNikuaXNV
bmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgaW50ZXJ2YWwgPSBzdGF0ZS5hcmd1bWVudCg2
KS50b051bWJlcigmc3RhdGUpOwogICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBkZXZpY2VN
b3Rpb25EYXRhID0gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKGFjY2VsZXJhdGlvbiwgYWNjZWxl
cmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgcm90YXRpb25SYXRlLCBpbnRlcnZhbFByb3ZpZGVkLCBp
bnRlcnZhbCk7Ci0gICAgaW1wbCgpLmluaXREZXZpY2VNb3Rpb25FdmVudCh0eXBlLCBidWJibGVz
LCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdldCgpKTsKKyAgICB3cmFwcGVkKCkuaW5p
dERldmljZU1vdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRldmljZU1vdGlv
bkRhdGEuZ2V0KCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Q3VzdG9tLmNwcAppbmRleCAxMTI3MDUyYmM2MDVlN2FjZGY2ZDVkYTY2ZGM0MjhmOGE4YmY4
ZWM2Li41NmFiZDliMjQxODAyMmUxNmUzOTg0ZGMzNzUwY2I1NTIyNmY3MWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRp
b25FdmVudEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEoRXhlY1N0YXRlJikgY29u
c3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2
aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAgIGlmICghaW1wLm9yaWVu
dGF0aW9uKCktPmNhblByb3ZpZGVBbHBoYSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAg
ICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5hbHBoYSgpKTsKQEAgLTQ4LDcg
KzQ4LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKEV4ZWNTdGF0
ZSYpIGNvbnN0CiAKIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQmV0YSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5iZXRhKCkpOwpA
QCAtNTYsNyArNTYsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YShF
eGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2Ft
bWEoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAg
PSBpbXBsKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwog
ICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVHYW1tYSgpKQogICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5n
YW1tYSgpKTsKQEAgLTY1LDcgKzY1LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZl
bnQ6OmdhbW1hKEV4ZWNTdGF0ZSYpIGNvbnN0CiAjaWYgUExBVEZPUk0oSU9TKQogSlNWYWx1ZSBK
U0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NIZWFkaW5nKEV4ZWNTdGF0ZSYp
IGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAg
IERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5v
cmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Y29tcGFz
c0hlYWRpbmcoKSk7CkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlv
bkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVl
IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0FjY3VyYWN5KEV4ZWNTdGF0
ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOwor
ICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlt
cC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KCkpCiAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9yaWVudGF0aW9uKCktPmNv
bXBhc3NBY2N1cmFjeSgpKTsKQEAgLTgzLDcgKzgzLDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NBY2N1cmFjeShFeGVjU3RhdGUmKSBjb25zdAogI2lm
ICFQTEFURk9STShJT1MpCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1
dGUoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAg
PSBpbXBsKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwog
ICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVBYnNvbHV0ZSgpKQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihpbXAub3JpZW50YXRpb24o
KS0+YWJzb2x1dGUoKSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgYm9vbCBhYnNvbHV0ZSA9IHN0YXRlLmFyZ3VtZW50KDYpLnRvQm9vbGVhbigmc3RhdGUp
OwogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG9yaWVudGF0aW9uID0gRGV2aWNl
T3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYWxwaGFQcm92aWRlZCwgYWxwaGEsIGJldGFQcm92aWRl
ZCwgYmV0YSwgZ2FtbWFQcm92aWRlZCwgZ2FtbWEsIGFic29sdXRlUHJvdmlkZWQsIGFic29sdXRl
KTsKICNlbmRpZgotICAgIGltcGwoKS5pbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCh0eXBlLCBi
dWJibGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5nZXQoKSk7CisgICAgd3JhcHBlZCgpLmlu
aXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIG9yaWVu
dGF0aW9uLmdldCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBlYzBiOWMy
YmEzMGU4NjBmNmUyYmE5ODAxNzBkOGY3MDJiNDQ1MmQ3Li4wOTRjZTNlMzIyZGIwZDcwYjIwYThk
YmEzMGU0YjEyMzU5Yzk4NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBEb2N1CiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucHJlcGVuZCh0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBKU1ZhbHVl
IEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVu
dDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgaW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAg
ICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHAKaW5kZXggYzM1MmQ1ZGI5N2JiY2RlMGM2Y2ZjOTYxZGJhZWE0ODFjYjcy
MTVjNS4uN2RhMzg0N2MxNzZmMDY3MGM3Y2NkNTkxMmYzNjkwMmZkOWMwNDg5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0
b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNE
b2N1bWVudEZyYWdtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00Niw3ICs0Niw3IEBAIEpTVmFsdWUgSlNEb2N1bWVudEZy
YWdtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFn
bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsK
KyAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwog
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5
cGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVD
dXN0b20uY3BwCmluZGV4IDgzMzM4NzIwMWJiZjYwMmI1NTUzNjA4YmViNTUxMDYyOWNlY2I5NWEu
LmE5M2Q2NzE3M2Q5NDI1NTZiMGYyMjYyY2I0MDgxOTIyMGIzZmU5ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6
YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaW1wbCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3
cmFwcGVkKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpA
QCAtNDUsNyArNDUsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpiZWZvcmUoRXhlY1N0YXRl
JiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBK
U0RvY3VtZW50VHlwZTo6YWZ0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVu
dFR5cGU6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IGZlZmRlMzU3YTdkY2I2ZWI3YzVkNmY2NjFlN2I1N2Y1YzAw
ZTk0MzEuLjFkNjUyNDJmMTYxYThiZTY2MmJmNzM2ZmY4MmQ1ZjhhNjZlMTk4YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyAr
NzAsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRWxlbWVudCogZQogSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9y
ZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBl
ZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTc5
LDcgKzc5LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQog
SlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucmVw
bGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgp
LnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAt
OTcsNyArOTcsNyBAQCBKU1ZhbHVlIEpTRWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBz
dGF0ZSkKIEpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgSlNWYWx1ZSBK
U0VsZW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNFbGVtZW50Ojph
cHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBpbXBsKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdy
YXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCmluZGV4IDUxZTlm
MGQ5MzBmNmM5ZjY5OGZkMjBhY2E5YjgwMWE2ODdhZjg3ZTAuLjYwOTk1NDE2OTU2ZmJkZTE1MThh
NTlhZGRjMGE1ZjQwNjY5NWY1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SlNWYWx1ZSBKU0V2ZW50OjpjbGlwYm9hcmREYXRhKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGltcGwoKS5pc0NsaXBib2FyZEV2ZW50KCkgPyB0b0pTKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCksIGltcGwoKS5jbGlwYm9hcmREYXRhKCkpIDoganNVbmRlZmluZWQoKTsKKyAg
ICByZXR1cm4gd3JhcHBlZCgpLmlzQ2xpcGJvYXJkRXZlbnQoKSA/IHRvSlMoJnN0YXRlLCBnbG9i
YWxPYmplY3QoKSwgd3JhcHBlZCgpLmNsaXBib2FyZERhdGEoKSkgOiBqc1VuZGVmaW5lZCgpOwog
fQogCiAjZGVmaW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IDI4MGNhMTJkZWJkMGYwMGY4NWVhYjMwYzk4Y2RiMzc4ZWRmMzcwY2IuLjgzZWNhOTRhNDA3ZTNh
MTI5OWNhYmY3Mjk4ODI2NDdjZWY2ODVmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIHZvaWQgSlNFdmVu
dExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0CiAKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0Nhc3Q8SlNET01XaW5kb3cq
PihnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoIXdpbmRvdy0+aW1wbCgpLmlzQ3VycmVudGx5
RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3Vy
cmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAv
LyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPwotICAgICAg
ICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQgPSB3aW5kb3ctPmltcGwoKS5mcmFtZSgpLT5zY3Jp
cHQoKTsKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0ID0gd2luZG93LT53cmFwcGVk
KCkuZnJhbWUoKS0+c2NyaXB0KCk7CiAgICAgICAgIGlmICghc2NyaXB0LmNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQuaXNQYXVzZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IGM3Yzc0NTA1YTZhMWZhZWYwY2M3ZGE5YjJjNjY1
MzI0ZTJkNGY3OWMuLmU4ZWFkMWMxZDQyZjBkZGZmZWU5NjZlMTgyMGVkMDI1MDg4MmY0YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20u
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAKICNkZWZpbmUg
VFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCiAgICAgaWYgKHZh
bHVlLmluaGVyaXRzKEpTIyNpbnRlcmZhY2VOYW1lOjppbmZvKCkpKSAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTIyNpbnRlcmZhY2VOYW1lKj4oYXNPYmpl
Y3QodmFsdWUpKS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKUyMjaW50ZXJmYWNl
TmFtZSo+KGFzT2JqZWN0KHZhbHVlKSktPndyYXBwZWQoKTsKIAogRXZlbnRUYXJnZXQqIEpTRXZl
bnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcAppbmRleCA1MWZiZjRm
YTE4MmY0YzNiYzQ2YmE1OGZiZGUwN2M1ZWY1OGYxMDY5Li5hM2MwOWIxODMwNDExOWE4ZWU4ZGQ3
N2I0ZDdkZmY1NDgyZDNiMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBKU1ZhbHVlIEpTRmlsZVJlYWRlcjo6cmVzdWx0KEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiB7Ci0gICAgRmlsZVJlYWRlciYgaW1wID0gaW1wbCgpOworICAgIEZpbGVSZWFkZXImIGlt
cCA9IHdyYXBwZWQoKTsKICAgICBpZiAoaW1wLnJlYWRUeXBlKCkgPT0gRmlsZVJlYWRlckxvYWRl
cjo6UmVhZEFzQXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcC5hcnJheUJ1ZmZlclJlc3VsdCgpKSk7CiAgICAgcmV0
dXJuIGpzT3duZWRTdHJpbmdPck51bGwoJnN0YXRlLCBpbXAuc3RyaW5nUmVzdWx0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCBlYmM1YmE3YWI2MzBjZmE1M2QwMTViMmM2ZDM0MjM4OTQ1MjgwOTE3Li5iMDFiZTdkYmQw
ZjAzZWNhODBjNmQwOTVmMGFlYzhjNzc2ZTg1MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbk9w
dGlvbnMpOwogCi0gICAgaW1wbCgpLmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNr
LnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRp
b25zLnJlbGVhc2UoKSk7CisgICAgd3JhcHBlZCgpLmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlv
bkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9z
aXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
QEAgLTEzNiw3ICsxMzYsNyBAQCBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24o
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNT
RVJUKHBvc2l0aW9uT3B0aW9ucyk7CiAKLSAgICBpbnQgd2F0Y2hJRCA9IGltcGwoKS53YXRjaFBv
c2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2su
cmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAgICBpbnQgd2F0Y2hJRCA9
IHdyYXBwZWQoKS53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3Np
dGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsK
ICAgICByZXR1cm4ganNOdW1iZXIod2F0Y2hJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXgg
MjU5MmY0NjcyZThhMjE3MGViZmZlYTIyZDgzMzU1ODEzMzlmMjFmOS4uOTRiYzMyNGFlZGUzODBm
MGFkOTI5Yzg0MzRjNWI5ZGFhOTliMGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1zKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVt
cyA9IGNvbGxlY3Rpb24tPmltcGwoKS5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMg
PSBjb2xsZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICAvLyBEbyBub3QgdXNlIHRoaXNPYmogaGVyZS4gSXQgY2FuIGJlIHRoZSBK
U0hUTUxEb2N1bWVudCwgaW4gdGhlIGRvY3VtZW50LmZvcm1zKGkpIGNhc2UuCiAgICAgSlNIVE1M
QWxsQ29sbGVjdGlvbioganNDb2xsZWN0aW9uID0ganNDYXN0PEpTSFRNTEFsbENvbGxlY3Rpb24q
PihleGVjLT5jYWxsZWUoKSk7Ci0gICAgSFRNTEFsbENvbGxlY3Rpb24mIGNvbGxlY3Rpb24gPSBq
c0NvbGxlY3Rpb24tPmltcGwoKTsKKyAgICBIVE1MQWxsQ29sbGVjdGlvbiYgY29sbGVjdGlvbiA9
IGpzQ29sbGVjdGlvbi0+d3JhcHBlZCgpOwogCiAgICAgLy8gQWxzbywgZG8gd2UgbmVlZCB0aGUg
VHlwZUVycm9yIHRlc3QgaGVyZSA/CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIEpTSFRNTEFs
bENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZQogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
KnN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkuaW1wbCgp
KSkKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLml0
ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCB3cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAgICAgcmV0dXJuIG5hbWVk
SXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAKaW5kZXggZTZlYzhkYzNjZWFmNGZhZjEzM2U0OGU5NDU5Yjk4YTYyODhkYzY4MS4u
MTRhZDk1YmIxNzYzNTI4OTc4NjAzMTdjODIwMjgxZjA4ZGZkMGI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250ZXh0QXR0cmlidXRlcyhF
eGVjU3RhdGUmIHN0YXRlLCBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJpYnUKIAogSlNWYWx1ZSBK
U0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAg
SFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAgICBIVE1MQ2FudmFzRWxlbWVu
dCYgY2FudmFzID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gc3Rh
dGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICAKICAg
ICBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJzOwpAQCAtODgsNyArODgsNyBA
QCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlJiBzdGF0
ZSkKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojpwcm9iYWJseVN1cHBvcnRzQ29udGV4
dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSBp
bXBsKCk7CisgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQoKTsKICAgICBp
ZiAoIXN0YXRlLmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxz
ZSk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwpAQCAtMTA5LDcgKzEwOSw3IEBA
IEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkwo
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gaW1w
bCgpOworICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBjb25zdCBTdHJpbmcmIHR5cGUgPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAppbmRleCA3Mjc5YTk0NTBhMTcxMzQwNTNmNjgzMDI1YzNjMTA4N2RhNTA3OTBiLi44
ODk3MDVhZmUwZDgzNmZjNmViNWI5MTgyOWY5ODAwODMxMmE2YmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAt
NDIsMTAgKzQyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbXBsKCkudHlw
ZSgpICE9IEZvcm1Db250cm9scywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRl
ciIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW1wbCgpLnR5cGUoKSAhPSBTZWxlY3RPcHRp
b25zLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNsYXNzJyBuYW1lR2V0dGVyIik7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSh3cmFwcGVkKCkudHlwZSgpICE9IEZvcm1Db250cm9scywgIlNob3VsZCBj
YWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
d3JhcHBlZCgpLnR5cGUoKSAhPSBTZWxlY3RPcHRpb25zLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNs
YXNzJyBuYW1lR2V0dGVyIik7CiAKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9
IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRl
eCA0MzE3NDI4NTQ2OGFlYWY3MTg3MWUwOTY0ZjQyNjExMmVjNWE2MDA5Li4xOTEyYzBiNmJlM2I4
OTYyNDRjNjJiZTE2ZmUxNTE5OTY0ZmUwMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJv
b2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlCiAKIGJvb2wgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1
ZSkKIHsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGltcGwoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IHdyYXBwZWQoKTsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFhdG9taWNQcm9wZXJ0eU5hbWUg
fHwgIWRvY3VtZW50Lmhhc0RvY3VtZW50TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5hbWUpKQpA
QCAtMTE1LDcgKzExNSw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUm
IHN0YXRlKSBjb25zdAogICAgIGlmICh2KQogICAgICAgICByZXR1cm4gdjsKIAotICAgIHJldHVy
biB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5hbGwoKSk7CisgICAgcmV0dXJu
IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmFsbCgpKTsKIH0KIAogdm9p
ZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIERvY3VtZW50KiBmaW5kQ2FsbGluZ0RvY3VtZW50
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFjYWxsZXJGcmFtZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhmdW5jdG9yLmNhbGxlckZyYW1l
KCktPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS5kb2N1bWVudCgpOworICAgIHJldHVy
biBhc0pTRE9NV2luZG93KGZ1bmN0b3IuY2FsbGVyRnJhbWUoKS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+d3JhcHBlZCgpLmRvY3VtZW50KCk7CiB9CiAKIC8vIEN1c3RvbSBmdW5jdGlvbnMKQEAg
LTE0MSw3ICsxNDEsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93c2Vycywg
cGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUgd2luZG93
LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7Ci0gICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
d3JhcHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdyYXBw
ZXIgPSB0b0pTRE9NV2luZG93U2hlbGwoZnJhbWUsIGN1cnJlbnRXb3JsZCgmc3RhdGUpKTsKICAg
ICAgICAgICAgIGlmICh3cmFwcGVyKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IHdyYXBwZXItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAi
b3BlbiIpKTsKQEAgLTE1NywxMCArMTU3LDEwIEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9w
ZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIC8vIGRvY3VtZW50Lm9wZW4gY2xvYmJlcnMgdGhl
IHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGRvY3VtZW50IGFuZAogICAgIC8vIGFsaWFzZXMgaXQg
d2l0aCB0aGUgYWN0aXZlIHNlY3VyaXR5IGNvbnRleHQuCi0gICAgRG9jdW1lbnQqIGFjdGl2ZURv
Y3VtZW50ID0gYXNKU0RPTVdpbmRvdyhzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBhc0pTRE9NV2lu
ZG93KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKS5kb2N1bWVudCgpOwog
CiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdHdvIHBhcmFtZXRlcnMgb3IgZmV3ZXIsIGRvIGEgbm9y
bWFsIGRvY3VtZW50IG9wZW4uCi0gICAgaW1wbCgpLm9wZW4oYWN0aXZlRG9jdW1lbnQpOworICAg
IHdyYXBwZWQoKS5vcGVuKGFjdGl2ZURvY3VtZW50KTsKICAgICByZXR1cm4gdGhpczsKIH0KIApA
QCAtMTY4LDcgKzE2OCw3IEBAIGVudW0gTmV3bGluZVJlcXVpcmVtZW50IHsgRG9Ob3RBZGROZXds
aW5lLCBEb0FkZE5ld2xpbmUgfTsKIAogc3RhdGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNIVE1MRG9jdW1lbnQqIHRoaXNEb2N1bWVudCwgTmV3bGluZVJl
cXVpcmVtZW50IGFkZE5ld2xpbmUpCiB7Ci0gICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9ICZ0
aGlzRG9jdW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gJnRoaXNE
b2N1bWVudC0+d3JhcHBlZCgpOwogICAgIC8vIERPTSBvbmx5IHNwZWNpZmllcyBzaW5nbGUgc3Ry
aW5nIGFyZ3VtZW50LCBidXQgYnJvd3NlcnMgYWxsb3cgbXVsdGlwbGUgb3Igbm8gYXJndW1lbnRz
LgogCiAgICAgc2l6ZV90IHNpemUgPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDNk
NDhkZjA0NDYwOTMzZWNjZjQ1NTM0YmI3Y2NhMTdjM2Q2YzU2ZjUuLjU4MzZhMTA3NGJlMjk1Njdl
MTZjYjg2ZTU1NDJkM2NjMjIwZDgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIEpTU2NvcGUqIEpTSFRNTEVsZW1lbnQ6OnB1c2hFdmVudEhhbmRsZXJT
Y29wZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlKSBjb25zdAogewotICAgIEhUTUxF
bGVtZW50JiBlbGVtZW50ID0gaW1wbCgpOworICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gd3Jh
cHBlZCgpOwogCiAgICAgLy8gVGhlIGRvY3VtZW50IGlzIHB1dCBvbiBmaXJzdCwgZmFsbCBiYWNr
IHRvIHNlYXJjaGluZyBpdCBvbmx5IGFmdGVyIHRoZSBlbGVtZW50IGFuZCBmb3JtLgogICAgIHNj
b3BlID0gSlNXaXRoU2NvcGU6OmNyZWF0ZShleGVjLCBhc09iamVjdCh0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCgpLCAmZWxlbWVudC5kb2N1bWVudCgpKSksIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggOGI1NWZhN2RlMzZlNWM2MDc4ODljOWIxZTlhNTFjM2Vj
OGE2OGI3Ni4uM2FmYjMyNjA3MjZkZGY1ZjM1ODBkMmY0MmI2ZjlhYmVkZjA2ZjViNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+
PiBuYW1lZEl0ZW1zID0gY29sbGVjdGlvbi0+aW1wbCgpLm5hbWVkSXRlbXMobmFtZSk7CisgICAg
VmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rpb24tPndyYXBwZWQoKS5u
YW1lZEl0ZW1zKG5hbWUpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwg
bmFtZWRJdGVtc1swXS5wdHIoKSk7CiAKLSAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1wbCgpLnR5
cGUoKSA9PSBGb3JtQ29udHJvbHMpOwotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlv
bi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPmltcGwoKS5vd25lck5vZGUoKS5yYWRpb05v
ZGVMaXN0KG5hbWUpLmdldCgpKTsKKyAgICBBU1NFUlQoY29sbGVjdGlvbi0+d3JhcHBlZCgpLnR5
cGUoKSA9PSBGb3JtQ29udHJvbHMpOworICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlv
bi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPndyYXBwZWQoKS5vd25lck5vZGUoKS5yYWRp
b05vZGVMaXN0KG5hbWUpLmdldCgpKTsKIH0KIAogYm9vbCBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGUzNGMwMzU0NmRkZWE2Y2Fk
ZWQxYTNjYWM5ZjdiZjdmMzM4OGJiYTQuLjNhZWQ3MDUyZjQ2MTVlZjBhYzkzNTllNzFhOTE1ODc4
MGIzYmQ1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgVmVj
dG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGltcGwoKS5uYW1lZEVsZW1lbnRzKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxl
bWVudD4+IG5hbWVkSXRlbXMgPSB3cmFwcGVkKCkubmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAKICAgICBpZiAobmFtZWRJdGVtcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGFiMDAw
ZjcxMzAxOWU5YjhhMGJmNThlMjM1ZDc0MTNhOWFjYjk1NDIuLjZmZDVhOTdiMjU3YzYwODU4Zjg5
MjliMmU5YTI5OTFiNTdkZjFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVSTChFeGVjU3RhdGUmIHN0
YXRlLCBIVE1MRnJhbWVFbGVtZW50KgogCiB2b2lkIEpTSFRNTEZyYW1lRWxlbWVudDo6c2V0TG9j
YXRpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBIVE1MRnJhbWVF
bGVtZW50JiBpbXAgPSBpbXBsKCk7CisgICAgSFRNTEZyYW1lRWxlbWVudCYgaW1wID0gd3JhcHBl
ZCgpOwogICAgIFN0cmluZyBsb2NhdGlvblZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hl
Y2soJnN0YXRlLCB2YWx1ZSk7CiAKICAgICBpZiAoIWFsbG93U2V0dGluZ0phdmFzY3JpcHRVUkwo
c3RhdGUsICZpbXAsIGxvY2F0aW9uVmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNzA4
NTZlNTUzYzRmZDZjN2QwMjBmYjk3MzU4OTg2YTI2NTI1MzU2YS4uMTI1YWVmN2VjMWQ3MzFmMjJl
MTE2NDBlODBmMzJiYjcwYWFlZWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkBAIC00MCw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvKiBmcmFtZUVsZW1lbnQgPSBpbXBsKCkuY2hpbGRy
ZW4oKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIGF1dG8qIGZyYW1lRWxlbWVudCA9IHdyYXBwZWQoKS5jaGlsZHJlbigpLT5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFp
czxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IDhmNDJkYmVmNTI0ZmQ2ZmQ4Y2UzZGFhMTExOWRkZmRiM2I5
YjAxNTUuLjM3MmYzNDI5ODE0Y2E4NTJmYTM1YTcyOGRhZGNmZTBiYTM2NDVmMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVj
dGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIApAQCAtNDQs
NyArNDQsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVj
dGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRNTElu
cHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQg
PSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKU0hUTUxJ
bnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwo
KTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlu
cHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CiAKQEAgLTYyLDcgKzYyLDcgQEAgSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNl
bGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiB2b2lkIEpTSFRNTElucHV0RWxl
bWVudDo6c2V0U2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxl
bWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9u
KCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTcxLDcgKzcxLDcgQEAg
dm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
RGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgSFRNTElucHV0RWxlbWVu
dCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC04MCw3ICs4MCw3IEBAIEpTVmFsdWUgSlNIVE1M
SW5wdXRFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
IAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0
ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU0hUTUxJ
bnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFu
Z2UoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGlt
cGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDQ0MDA5NzYxZDEzOWQxMzE4NjQ2YjVjOGU1
MWUyNWJhZDBlYjE0MDMuLjJmNDFjZmU1ZTI0YmY5ODgxYjYwM2UwNWY1ZDJlM2E5NzlhMGU1MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFF
bGVtZW50Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCB2b2lkIEpTSFRNTE1lZGlhRWxlbWVu
dDo6c2V0Q29udHJvbGxlcihFeGVjU3RhdGUmLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIC8vIDQu
OC4xMC4xMS4yIE1lZGlhIGNvbnRyb2xsZXJzOiBjb250cm9sbGVyIGF0dHJpYnV0ZS4KICAgICAv
LyBPbiBzZXR0aW5nLCBpdCBtdXN0IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3Jv
dXAgYXR0cmlidXRlLCBpZiBhbnksIAotICAgIGltcGwoKS5zZXRNZWRpYUdyb3VwKFN0cmluZygp
KTsKKyAgICB3cmFwcGVkKCkuc2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CiAgICAgLy8gYW5kIHRo
ZW4gc2V0IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgot
ICAgIGltcGwoKS5zZXRDb250cm9sbGVyKEpTTWVkaWFDb250cm9sbGVyOjp0b1dyYXBwZWQodmFs
dWUpKTsKKyAgICB3cmFwcGVkKCkuc2V0Q29udHJvbGxlcihKU01lZGlhQ29udHJvbGxlcjo6dG9X
cmFwcGVkKHZhbHVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA5MTVl
MDI4N2M3OGNkYzA5NWRiMWFkZTMzNWQ3NjBjZDNiNTgzZTdkLi45MjM0NWU2YjU3ZmNjNTAzMzg2
YTkwYzNhMTc3OTRjNGMxMzE2ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxPcHRpb25zQ29sbGVj
dGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVt
ID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjEs
MTMgKzYxLDEzIEBAIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aChFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgbmV3TGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aFZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFlYykKLSAg
ICAgICAgaW1wbCgpLnNldExlbmd0aChuZXdMZW5ndGgsIGVjKTsKKyAgICAgICAgd3JhcHBlZCgp
LnNldExlbmd0aChuZXdMZW5ndGgsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBl
Yyk7CiB9CiAKIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4U2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc2VsZWN0
SW5kZXhTZXR0ZXIoJmltcGwoKS5zZWxlY3RFbGVtZW50KCksIGV4ZWMsIGluZGV4LCB2YWx1ZSk7
CisgICAgc2VsZWN0SW5kZXhTZXR0ZXIoJndyYXBwZWQoKS5zZWxlY3RFbGVtZW50KCksIGV4ZWMs
IGluZGV4LCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJl
bW92ZShFeGVjU3RhdGUmIHN0YXRlKQpAQCAtNzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpTSFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAvLyBUaGUgYXJn
dW1lbnQgY2FuIGJlIGFuIEhUTUxPcHRpb25FbGVtZW50IG9yIGFuIGluZGV4LgogICAgIEpTVmFs
dWUgYXJndW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBpZiAoSFRNTE9wdGlvbkVsZW1l
bnQqIG9wdGlvbiA9IEpTSFRNTE9wdGlvbkVsZW1lbnQ6OnRvV3JhcHBlZChhcmd1bWVudCkpCi0g
ICAgICAgIGltcGwoKS5yZW1vdmUob3B0aW9uKTsKKyAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShv
cHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgaW1wbCgpLnJlbW92ZShhcmd1bWVudC50b0ludDMy
KCZzdGF0ZSkpOworICAgICAgICB3cmFwcGVkKCkucmVtb3ZlKGFyZ3VtZW50LnRvSW50MzIoJnN0
YXRlKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5k
ZXggYjNkZjEzZjcyZWFhOGZiYWEwNzg2MDVmNDc2MzM5MjdlYmUwMmNjNi4uMzBlM2ViYmI4OWE0
ZWYyM2E1OTY5NGMzYWJlZTU3YTgwYTYyMzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSlNWYWx1ZSBKU0hUTUxTZWxl
Y3RFbGVtZW50OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MU2VsZWN0RWxl
bWVudCYgc2VsZWN0ID0gaW1wbCgpOworICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QgPSB3
cmFwcGVkKCk7CiAKICAgICBpZiAoIXN0YXRlLmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICAv
LyBXaGVuIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50LCB3ZSBzaG91bGQgY2FsbCBFbGVtZW50Ojpy
ZW1vdmUoKSB0byBkZXRhY2guCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgc2VsZWN0SW5kZXhTZXR0
ZXIoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkCiAKIHZvaWQgSlNIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc2Vs
ZWN0SW5kZXhTZXR0ZXIoJmltcGwoKSwgZXhlYywgaW5kZXgsIHZhbHVlKTsKKyAgICBzZWxlY3RJ
bmRleFNldHRlcigmd3JhcHBlZCgpLCBleGVjLCBpbmRleCwgdmFsdWUpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCAxYmI4NmRmODhjOWRlZWFiMDliYTA2ZjMyNWRlN2JkZjY2ZDQ0
OGFmLi45N2FiZTc3YzBiMDNhYjE2NWRiNmQ0NzZkOGVhMTk4ZDE4N2JjMGNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU0hUTUxUZW1wbGF0ZUVsZW1l
bnQ6OmNvbnRlbnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBKU0xvY2tIb2xkZXIg
bG9jaygmc3RhdGUpOwogCi0gICAgRG9jdW1lbnRGcmFnbWVudCogY29udGVudCA9IGltcGwoKS5j
b250ZW50KCk7CisgICAgRG9jdW1lbnRGcmFnbWVudCogY29udGVudCA9IHdyYXBwZWQoKS5jb250
ZW50KCk7CiAKICAgICBKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFs
T2JqZWN0KCktPndvcmxkKCksIGNvbnRlbnQpOwogICAgIGlmICh3cmFwcGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggYTJjNjllYmVl
M2RhODhhMzliNzRlODcyZGJlNGM5MmQ3NWY1YTlkMi4uMmJkMmY2ZDhlMzg0N2IzMDRmZTk1OGM0
MjgyZjIwMTk3YTIzOWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hp
c3RvcnlDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpnZXRPd25Q
cm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
CiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlzIG9ubHkgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUg
V2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUsIHNvIGlmIGFjY2VzcyBpcwogICAgIC8vIGFsbG93
ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9ybWFsIGxvb2t1cCB3aWxsIHRha2UgcGxhY2UuCiAg
ICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCBpbXBsKCkuZnJhbWUoKSwgbWVzc2FnZSkpCisgICAgaWYgKHNob3VsZEFsbG93QWNjZXNzVG9G
cmFtZShleGVjLCB3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93
LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KQEAgLTY5LDE0ICs2OSwxNCBAQCBib29s
IEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBw
cmludEVycm9yTWVzc2FnZUZvckZyYW1lKGltcGwoKS5mcmFtZSgpLCBtZXNzYWdlKTsKKyAgICBw
cmludEVycm9yTWVzc2FnZUZvckZyYW1lKHdyYXBwZWQoKS5mcmFtZSgpLCBtZXNzYWdlKTsKICAg
ICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEpTSGlz
dG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
ZXhlYywgaW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIHdyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpAQCAtODQsNyArODQsNyBAQCBib29sIEpTSGlzdG9yeTo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5Uwog
Ym9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9yeSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC05Miw3ICs5Miw3IEBA
IGJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiBib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSGlzdG9yeSo+KGNl
bGwpOwotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3Qt
PmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMDAsMTQgKzEwMCwxNCBAQCBib29sIEpTSGlzdG9yeTo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcgogdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTSGlzdG9yeSo+KG9iamVjdCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpzdGF0
ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEhpc3RvcnkmIGhpc3RvcnkgPSBpbXBs
KCk7CisgICAgSGlzdG9yeSYgaGlzdG9yeSA9IHdyYXBwZWQoKTsKIAogICAgIEpTVmFsdWUgY2Fj
aGVkVmFsdWUgPSBtX3N0YXRlLmdldCgpOwogICAgIGlmICghY2FjaGVkVmFsdWUuaXNFbXB0eSgp
ICYmICFoaXN0b3J5LnN0YXRlQ2hhbmdlZCgpKQpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTVmFsdWUg
SlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTSGlz
dG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0
ZS5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgSlNWYWx1ZSBKU0hpc3Rv
cnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxl
YXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UHVzaCwgZWMpOwor
ICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRp
dGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UHVzaCwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3RhdGUuY2xlYXIoKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIGltcGwoKS5mcmFtZSgp
KSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIHdyYXBwZWQoKS5m
cmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCAwLCAwKTsKQEAgLTE2OSw3ICsxNjks
NyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnN0YXRlT2JqZWN0
QWRkZWQoaGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVP
YmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQo
aGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RU
eXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAg
ICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCBlNTM1MDhmMWI2NWQzYWFhYzg2Y2MzZTU0OTBj
MGE5M2U4M2E0MGViLi5jZGViNjg5MjRmM2U0NzEyMjgzNzFmZGU0NmIxYWJlYzcyZjg4MTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9t
LmNwcApAQCAtNzYsNyArNzYsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGlt
cGwoKS5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBlYyku
Z2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCB3cmFwcGVkKCkuY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVu
dCwgZWMpLmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggMDEyODhjNmVhY2FmNzU3ODQzNGM0MTIxODVk
MDU0ZDU2ODI4YjlkYS4uMThmMDI0ZmYyMWNhZjNiNGY3YzA0OGFkZjk0MTU5ZDRjMzIyOTg5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpj
cmVhdGVJbmRleChFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCBpbXBsKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0
aUVudHJ5LCBlYykuZ2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0
aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBlYykuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
CmluZGV4IGUyNmJiZTc4ZDlmYmJjNDkyMGNlMWVmY2I0YzM1MGZkN2ExMzI0YjguLjllNjllMWJm
ZDY2NGI2NmE4YzNkYWRmMTcyNWZhNDg4Njk5Mzg4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpz
aG93Q29udGV4dE1lbnUoRXhlY1N0YXRlJiBzdGF0ZSkKICNlbHNlCiAgICAgVmVjdG9yPENvbnRl
eHRNZW51SXRlbT4gaXRlbXMgPSBtZW51Lml0ZW1zKCk7CiAjZW5kaWYKLSAgICBpbXBsKCkuc2hv
d0NvbnRleHRNZW51KGV2ZW50LCBpdGVtcyk7CisgICAgd3JhcHBlZCgpLnNob3dDb250ZXh0TWVu
dShldmVudCwgaXRlbXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmlu
ZGV4IDEzMWUyODcwYmRiNTlkNjA1MzZhOTEwYTc3MWRkNTA3NzJjMDZlNDkuLjAwODNlMGNmMTU5
Y2MxZjg5MDBjZmExOGRkN2I0MjU1ZTA5MzQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAg
IHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzMsNyArNzMs
NyBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcgogCiBib29sIEpTTG9jYXRpb246OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwo
KS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9v
bCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3AKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZy
YW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wg
SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwCiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFt
ZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93
QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTG9jYXRpb24qPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIGxvY2F0
aW9uIG9iamVjdCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0g
ICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgp
LmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CiB9CkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiBKU1Zh
bHVlIEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFw
cGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoJnN0YXRlLCBmcmFtZSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLnRvU3RyaW5nKCkpOworICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS50b1N0cmluZygpKTsK
IH0KIAogYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3Rh
dGVzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VT
dGF0ZXNDdXN0b20uY3BwCmluZGV4IDgwMThiMjYzM2I3OGU5Y2UxZGUyOTEzM2Q5ZDk0ZTY3MDJl
YTM1MWUuLjc1ZTljYWJiYzM4OTdlMTYwMWVkNmM2NTNjNDVmOWNiNWYyNTI3N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXND
dXN0b20uY3BwCkBAIC0zNyw1NCArMzcsNTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OndpZHRoKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAg
aWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRl
b1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBq
c051bWJlcihpbXBsKCkud2lkdGgoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS53
aWR0aCgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0
YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlm
ICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuaGVpZ2h0KCkpOworICAgIHJl
dHVybiBqc051bWJlcih3cmFwcGVkKCkuaGVpZ2h0KCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFT
b3VyY2VTdGF0ZXM6OmZyYW1lUmF0ZShFeGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmICghaW1w
bCgpLmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2Uo
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAgcmV0dXJuIGpzTnVt
YmVyKGltcGwoKS5mcmFtZVJhdGUoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5m
cmFtZVJhdGUoKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0
aW8oRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgp
KQorICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuYXNwZWN0UmF0
aW8oKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5hc3BlY3RSYXRpbygpKTsKIH0K
IAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAo
IXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IGltcGwoKS5mYWNpbmdNb2RlKCk7
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gd3JhcHBlZCgpLmZhY2luZ01vZGUoKTsK
ICAgICBpZiAobW9kZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwoKS5mYWNpbmdN
b2RlKCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5m
YWNpbmdNb2RlKCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShF
eGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmIChpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAg
ICBpZiAod3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkudm9sdW1lKCkpOworICAg
IHJldHVybiBqc051bWJlcih3cmFwcGVkKCkudm9sdW1lKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwCmluZGV4IDAxOTY1ZTRiNDI3MjY2ZmZkMjc4OWM4YjliMjg0OGE5
YWUyZGE4N2EuLjM3NWRkNGI1ZjAzNjM5M2ZhYmVmYzMzODg3N2E2N2JlZTI3ZmJiNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0
b20uY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpT
TWVzc2FnZUNoYW5uZWw6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgpLnBvcnQxKCkp
CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gd3JhcHBlZCgpLnBvcnQxKCkpCiAgICAgICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IGltcGwoKS5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHdyYXBwZWQo
KS5wb3J0MigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cAppbmRleCA0NGQ5NTQ3ZjY3NmU5ODU2ZTlkNWE0MWI0NzQyNTIzZDRjNzIxNTMzLi5iNTVkYzRl
YTI1MjQ0MDJlNWJlNGE4MmQyMjU2NjEwMGY2MjMxYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3
IEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgTWVzc2FnZUV2ZW50
JiBldmVudCA9IGltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAg
IGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7CkBAIC03OCw3ICs3OCw3
IEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
IAogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZToK
ICAgICAgICAgaWYgKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1
ZSA9IGV2ZW50LmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBN
ZXNzYWdlUG9ydEFycmF5IHBvcnRzID0gaW1wbCgpLnBvcnRzKCk7CisgICAgICAgICAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRzID0gd3JhcHBlZCgpLnBvcnRzKCk7CiAgICAgICAgICAgICAvLyBG
SVhNRTogV2h5IGRvZXMgdGhpcyBzdXBwcmVzcyBleGNlcHRpb25zPwogICAgICAgICAgICAgcmVz
dWx0ID0gc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCAmcG9ydHMsIE5vblRocm93aW5nKTsKICAgICAgICAgfSBlbHNlCkBAIC0xMjQsNyArMTI0LDcg
QEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2
ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZUV2ZW50JiBldmVu
dCA9IGpzRXZlbnQtPmltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0ganNFdmVudC0+
d3JhcHBlZCgpOwogICAgIGV2ZW50LmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxl
QXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBz
b3VyY2VBcmcsIFdURjo6bW92ZShtZXNzYWdlUG9ydHMpKTsKICAgICBqc0V2ZW50LT5tX2RhdGEu
c2V0KHN0YXRlLnZtKCksIGpzRXZlbnQsIGRhdGFBcmcuanNWYWx1ZSgpKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggMjM5ZjQ3YWZkNmRhNWViZTUxOTBlN2NiYjU5M2UzM2Jl
YmY5MWUxZi4uNmIyMTI0NDk4NzVlNzhlOGNiYmRkNzJmYzIzZDBmNjliODM5NjkwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAK
QEAgLTQ4LDEzICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIEpTTWVzc2FnZVBv
cnQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAg
IC8vIElmIHdlIGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBwb3J0LCB3ZSBjYW4gZGlyZWN0bHkg
bWFyayBpdCBhcyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJlIHJlbW90ZWx5IGVudGFuZ2xlZCBh
cmUgbWFya2VkIGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoKS4KLSAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAg
ICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB3cmFwcGVkKCkubG9jYWxseUVudGFuZ2xlZFBvcnQo
KSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCiBKU0M6OkpTVmFs
dWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewot
ICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmltcGwoKSk7CisgICAgcmV0dXJu
IGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsKIH0KIAogdm9pZCBmaWxsTWVz
c2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
TWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5LCBBcnJheUJ1ZmZlckFycmF5JiBhcnJheUJ1ZmZl
cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAppbmRleCBjNDY4YWFkNmE2MTRlNDlm
MmE3ZmM5OTIyZWMyYmFkMjQyNDJlYzVkLi5kZWFiYzU0MWRiMDZmMTA5ZTRkMGJmYzZjNzE5NDA5
YjUxODliOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgdXNpbmcgRGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uUG9pbnQ7CiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNp
c2lvblBvaW50KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGVjaXNpb25Qb2ludCBkZWNpc2lv
blBvaW50ID0gaW1wbCgpLmRlY2lzaW9uUG9pbnQoKTsKKyAgICBEZWNpc2lvblBvaW50IGRlY2lz
aW9uUG9pbnQgPSB3cmFwcGVkKCkuZGVjaXNpb25Qb2ludCgpOwogICAgIHN3aXRjaCAoZGVjaXNp
b25Qb2ludCkgewogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3Q6
CiAgICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0OgpAQCAtNjksNyArNjksNyBA
QCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJB
ZGREYXRhOgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGE6
CiAgICAgY2FzZSBEZWNpc2lvblBvaW50OjpOZXZlcjoKLSAgICAgICAgaW1wbCgpLnNldERlY2lz
aW9uUG9pbnQoZGVjaXNpb25Qb2ludCk7CisgICAgICAgIHdyYXBwZWQoKS5zZXREZWNpc2lvblBv
aW50KGRlY2lzaW9uUG9pbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcsNyAr
MTA3LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpkZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAogewotICAgIHJldHVybiB0b0pTVmFsdWUoaW1w
bCgpLmRlY2lzaW9uKCkpOworICAgIHJldHVybiB0b0pTVmFsdWUod3JhcHBlZCgpLmRlY2lzaW9u
KCkpOwogfQogCiB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZv
aWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLnNldERlY2lzaW9uKGRlY2lzaW9uKTsKKyAgICB3cmFw
cGVkKCkuc2V0RGVjaXNpb24oZGVjaXNpb24pOwogfQogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAog
ewotICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgpLnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSk7
CisgICAgcmV0dXJuIHRvSlNWYWx1ZSh3cmFwcGVkKCkudW5ibG9ja1JlcXVlc3REZWNpc2lvbigp
KTsKIH0KIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKUwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLnNldFVuYmxvY2tSZXF1ZXN0RGVj
aXNpb24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgd3JhcHBlZCgpLnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CiB9CiAKIH07IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAzODA1NTcyNDcyMDI2YjJhNDhkNDIzMzZh
NmNiMDlkNDhiZGE2Yjg1Li5jNmM1NzI0MDNhZTZiNzgzMjQ2MmUwNjFiNmMzMjYxMzI0NDMyN2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25P
YnNlcnZlckN1c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlKiBleGVjKQogCiBi
b29sIEpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRp
b25PYnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+aW1wbCgpOworICAgIE11dGF0
aW9uT2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlcio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKS0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JzZXJ2ZWROb2RlcyA9
IG9ic2VydmVyLmdldE9ic2VydmVkTm9kZXMoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBvYnNlcnZl
ZE5vZGVzLmJlZ2luKCksIGVuZCA9IG9ic2VydmVkTm9kZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBpZiAodmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCgqaXQpKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcAppbmRleCA4NDZjZjhmYWE4YzUxMWVmODIxNTE3MDFiNGEwMDhiYWZhMWJmY2QxLi5hMzFl
NDZhODQzMjE4Yzk4NmE4NDEyYTQ4MDc2ZjA5ODliYjg0NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU05hbWVkTm9kZU1hcDo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUm
IHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBl
ZCgpLmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDNkNWZlMTI0
ODY0ODYzNGE2NGExZDg5NzVjNGFjMWJjM2QxYmQ5YjguLmYyNGMwNTVmYzg5YjlkZTdiOWE1NWM0
ZTYwZTQ5MDcyY2FkOTU2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTY4LDEzICs2OCwxMyBAQCBKU1ZhbHVlIEpTTmF2aWdh
dG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaWYgKCFpbXBsKCkuZnJhbWUoKSkgeworICAg
IGlmICghd3JhcHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICB9CiAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBwcm90ZWN0IHRoZSBjb250ZXh0IChpLmUu
IGRvY3VtZW50KSBoZXJlIGFzIFVzZXJNZWRpYVJlcXVlc3QgaXMgb2JzZXJ2aW5nIGNvbnRleHQg
ZGVzdHJ1Y3Rpb24gYW5kIHdpbGwgY2hlY2sgdmFsaWRpdHkgYmVmb3JlIHJlc29sdmluZy9yZWpl
Y3RpbmcgcHJvbWlzZS4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCkuZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3cmFwcGVkKCkuZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKIAogICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
OjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBnbG9iYWxPYmpl
Y3QoKSk7CiAgICAgYXV0byByZXNvbHZlQ2FsbGJhY2sgPSBbc3VjY2Vzc0NhbGxiYWNrLCBkb2N1
bWVudF0oY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFtPiYgc3RyZWFtKSBtdXRhYmxlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDJjMWE5ZjgzMGUz
NTI3MTU1YTZjZjM3ZDY3N2RjYjIwMmQxMzZjZTguLjMxMjNjOTQ2MDk1NGViZGIzNWQyMjhmOThk
OTYxY2Y0N2ZjM2YyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcApAQCAtMTA4LDEzICsxMDgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVhY2hh
YmxlRnJvbURPTShOb2RlKiBub2RlLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIGJvb2wgSlNOb2Rl
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNOb2RlKiBq
c05vZGUgPSBqc0Nhc3Q8SlNOb2RlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIHJl
dHVybiBpc1JlYWNoYWJsZUZyb21ET00oJmpzTm9kZS0+aW1wbCgpLCB2aXNpdG9yKTsKKyAgICBy
ZXR1cm4gaXNSZWFjaGFibGVGcm9tRE9NKCZqc05vZGUtPndyYXBwZWQoKSwgdmlzaXRvcik7CiB9
CiAKIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmluc2VydEJlZm9y
ZShKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVk
KHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkuaW5zZXJ0
QmVmb3JlKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0b1dy
YXBwZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpA
QCAtMTI0LDcgKzEyNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRl
JiBzdGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLnJlcGxh
Y2VDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9X
cmFwcGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCku
cmVwbGFjZUNoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2Rl
Ojp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50
KDEpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0
YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgb2sgPSBpbXBsKCku
cmVtb3ZlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7Cisg
ICAgYm9vbCBvayA9IHdyYXBwZWQoKS5yZW1vdmVDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0
ZS5hcmd1bWVudCgwKSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgaWYgKG9rKQogICAgICAgICByZXR1cm4gc3RhdGUuYXJndW1lbnQoMCk7CkBAIC0xNDQsNyAr
MTQ0LDcgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmFwcGVuZENoaWxkKEpTTm9k
ZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFw
cGVkKCkuYXBwZW5kQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAg
ICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTU2NvcGUq
IEpTTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSog
bm9kZSkgY29uc3QKIAogdm9pZCBKU05vZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwo
KSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKSkpOwogfQogCiBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
CmluZGV4IDJiNDA0MGUzZDk2ZjE2N2U4NjViNjY4MDVhZjNkOTlhMDNiNDMwOGYuLmIzZjAzNjEz
OWZhMGZiMTgwNjQ4NGE2MTBkODRhYzVhYzU3Y2E0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChOb2Rl
RmlsdGVyKiBmaWx0ZXIgPSBpbXBsKCkuZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZp
bHRlciA9IHdyYXBwZWQoKS5maWx0ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KGZpbHRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlz
dEN1c3RvbS5jcHAKaW5kZXggZjdkODYzYjhlMzk1ZGJmY2YxMTNjYzY4NmIzNWY0Njg3NGQ1MDBh
Mi4uYmEwNjJiZWEyOWI0NjAzZDRiNzE5YmNkNzdmYjZmMjcxZTMxZDA0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTQyLDEyICs0
MiwxMiBAQCBib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxp
c3QgPSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBp
ZiAoIWpzTm9kZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNMaXZlTm9kZUxpc3QoKSkKLSAgICAg
ICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8TGl2
ZU5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChq
c05vZGVMaXN0LT5pbXBsKCkuaXNDaGlsZE5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNp
dG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PENoaWxkTm9kZUxpc3QmPihq
c05vZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7Ci0gICAgaWYgKGpzTm9kZUxpc3QtPmlt
cGwoKS5pc0VtcHR5Tm9kZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8RW1wdHlOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmlt
cGwoKSkub3duZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzTGl2
ZU5vZGVMaXN0KCkpCisgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChy
b290KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPndyYXBwZWQoKSkub3du
ZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzQ2hpbGROb2RlTGlz
dCgpKQorICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0
aWNfY2FzdDxDaGlsZE5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+d3JhcHBlZCgpKS5vd25lck5vZGUo
KSkpOworICAgIGlmIChqc05vZGVMaXN0LT53cmFwcGVkKCkuaXNFbXB0eU5vZGVMaXN0KCkpCisg
ICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0
PEVtcHR5Tm9kZUxpc3QmPihqc05vZGVMaXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVPclN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHAKaW5kZXggMzQzNjFhZjQ5NmE4ZGM5N2VjN2IzNDZhNWMwNDNkOTZmY2Ri
Yjk1Zi4uNDQ3YzVkNzAwZDU2NTFlYWRmMTQwNGJkM2E3YjFmNDg2MTEzMzI2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBWZWN0b3I8Tm9kZU9yU3RyaW5nPiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUm
IHN0YXRlKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7
CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKTsKICAg
ICAgICAgaWYgKGF1dG8qIG5vZGUgPSBqc0R5bmFtaWNDYXN0PEpTTm9kZSo+KHZhbHVlKSkKLSAg
ICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoJm5vZGUtPmltcGwoKSk7CisgICAgICAg
ICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCZub2RlLT53cmFwcGVkKCkpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSB2YWx1ZS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgICAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAppbmRl
eCA5OGM4ODE0OWYzOWUyYjBjYmE4MWQzNTJlNWI5YmRiMjkwNWNiMjk3Li4zYWRmODAyMjVjNDNi
ZmIzZGRiNTY3YjE2OTVjYWU3ZDAyNmJlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZShF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIE9zY2lsbGF0b3JOb2RlJiBp
bXAgPSBpbXBsKCk7CisgICAgT3NjaWxsYXRvck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lm
IEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcApp
bmRleCA4NmMwM2VkM2ZiODkyNTlhY2Y5OGNlMzMyYTY5MjQyODdlZTNiMDFkLi42NzkwZjg0YTdj
ZWU5ZjE2NjEyNmNmNjQxNDUwYzFiNDM0Njg0MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUGFubmVyTm9kZSYgaW1wID0g
aW1wbCgpOworICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShM
RUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CkBAIC02Myw3ICs2
Myw3IEBAIHZvaWQgSlNQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogdm9pZCBKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBQYW5uZXJOb2RlJiBpbXAg
PSBpbXBsKCk7CisgICAgUGFubmVyTm9kZSYgaW1wID0gd3JhcHBlZCgpOwogCiAjaWYgRU5BQkxF
KExFR0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwCmluZGV4IGM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRjODRkYTkwY2EuLjgzMGMz
MDU1ODg0MWMwMjIyYmRmMmQ4ODEzZWRkN2IyMTc5MDVkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVn
aW5WaWV3QmFzZShIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRQogCiBzdGF0aWMgSlNPYmplY3Qq
IHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hU
TUxFbGVtZW50KQogewotICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+
aW1wbCgpOworICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+d3JhcHBl
ZCgpOwogICAgIGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdp
blNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxFbGVt
ZQogCiBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1M
RWxlbWVudCoganNIVE1MRWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpz
SFRNTEVsZW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVs
ZW1lbnQtPndyYXBwZWQoKTsKICAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBDYWxsVHlw
ZSBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgQ2FsbERh
dGEmIGNhbGxEYXRhKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogICAgIH0KICAgICAK
LSAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT5pbXBsKCkp
OworICAgIEluc3RhbmNlKiBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGVsZW1lbnQtPndyYXBw
ZWQoKSk7CiAgICAgaWYgKCFpbnN0YW5jZSB8fCAhaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVm
YXVsdE1ldGhvZCgpKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVOb25lOwogICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxQbHVnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA1Zjg2OWE5MTJlMDY2
ZTQ5YjUyZWU4YTBmMTRiZjY0NzVkYTJhOGE4Li45NWEwZmI3ODI1Y2IzMDZiMDQ4YmM3ODNjZmYx
YzZiOWExMTdiMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bv
cFN0YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgSlNWYWx1ZSBKU1BvcFN0
YXRlRXZlbnQ6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gaW1wbCgp
OworICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogCiAgICAgaWYgKCFldmVu
dC5zdGF0ZSgpLmhhc05vVmFsdWUoKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSBhIFBvcFN0YXRlRXZlbnQgZG9lcyBub3QgbGVhayBvYmplY3RzIGluIGl0cyBzdGF0ZSBwcm9w
ZXJ0eSBhY3Jvc3MgaXNvbGF0ZWQgRE9NIHdvcmxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCmluZGV4IDllZjVl
OTNlZDFjZTVhZmFiYmQ5YWRjYjBkY2I2YTM4YjRmNGFkMTEuLjQwZTViOTBjYzI3ZThjNGUxMzMw
MDJiNjJkOGExMThhMDE3NDU3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNSVENTdGF0c1Jlc3BvbnNlOjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlm
ICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRl
eCBiMzM2NGQyNjQ1MTQ1MjZiNTdiZmVlMGVkMThkZjVkNmQwNDBjODI0Li4zZWFlZjI2MTI1YmZh
YjhmN2Q1MmE1MjEzNjAyZGYwZjMxZmUyOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTQ3
LDE3ICs0NywxNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3Rh
dGUmIHN0YXRlKQogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBUWVBFX01JU01BVENI
X0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBpZiAoaW5k
ZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSBpbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAo
aW5kZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSB3cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5ERVhfU0laRV9FUlIpOwogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKIAotICAgIHVuc2lnbmVkIG51bUNvbHVtbnMgPSBp
bXBsKCkuY29sdW1uTmFtZXMoKS5zaXplKCk7CisgICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IHdy
YXBwZWQoKS5jb2x1bW5OYW1lcygpLnNpemUoKTsKICAgICB1bnNpZ25lZCB2YWx1ZXNJbmRleCA9
IGluZGV4ICogbnVtQ29sdW1uczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29s
dW1uczsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IGltcGwoKS52YWx1
ZXMoKVt2YWx1ZXNJbmRleCArIGldOworICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSB3
cmFwcGVkKCkudmFsdWVzKClbdmFsdWVzSW5kZXggKyBpXTsKICAgICAgICAgSlNWYWx1ZSBqc1Zh
bHVlOwogCiAgICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CkBAIC03NCw3ICs3NCw3IEBA
IEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCBpbXBsKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCB3cmFwcGVkKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERv
bnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHAKaW5kZXggOTVhOGRmY2U4NWEzMjZiYjMxNWIwZGYyYmVmMWU4NDQwYmExNTFmZi4uNzQyMTI1
NmIwNDZhOGQ3MjY4ZTIzNjdkYzJlMTNjZmFhYzIyNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCku
ZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBl
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHdyYXBwZWQoKS5leGVjdXRlU1FMKHNx
bFN0YXRlbWVudCwgc3FsVmFsdWVzLCBjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2su
cmVsZWFzZSgpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR0xlbmd0aEN1c3RvbS5jcHAKaW5kZXggYjZmMGNmODM2MTVmNzFlNjU1ODhjZTNkZTNmY2Ji
YWRkMTViNmVkZS4uNjRlMTEyODQ2Zjg3ZTI2YmE0NWY0MDMxMzA2ODNjODRiMGJhYTdlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcApA
QCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNTVkdMZW5n
dGg6OnZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgU1ZHTGVuZ3RoJiBwb2RJ
bXAgPSBpbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICBTVkdMZW5ndGgmIHBvZEltcCA9
IHdyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVsZW1l
bnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5jb250
ZXh0RWxlbWVudCgpKTsKICAgICBmbG9hdCB2YWx1ZSA9IHBvZEltcC52YWx1ZShsZW5ndGhDb250
ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6dmFsdWUoRXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoaW1wbCgpLmlzUmVhZE9ubHkoKSkg
eworICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC01NywyNyArNTcsMjcgQEAgdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7Cisg
ICAgU1ZHTGVuZ3RoJiBwb2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dChpbXBsKCkuY29udGV4dEVsZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5n
dGhDb250ZXh0KHdyYXBwZWQoKS5jb250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuc2V0VmFs
dWUodmFsdWUudG9GbG9hdCgmc3RhdGUpLCBsZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKGVj
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGltcGwoKS5jb21taXRDaGFuZ2UoKTsKKyAgICB3cmFwcGVkKCkuY29t
bWl0Q2hhbmdlKCk7CiB9CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGltcGwoKS5pc1JlYWRPbmx5KCkp
IHsKKyAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBTVkdMZW5ndGgmIHBvZEltcCA9IGltcGwo
KS5wcm9wZXJ0eVJlZmVyZW5jZSgpOworICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgp
LnByb3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKQEAgLTg3LDE0ICs4NywxNCBAQCBK
U1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3RhdGUmIHN0
YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4
dEVsZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQo
KS5jb250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuY29udmVydFRvU3BlY2lmaWVkVW5pdHMo
dW5pdFR5cGUsIGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CiAKLSAgICBpbXBsKCkuY29tbWl0Q2hhbmdlKCk7CisgICAgd3JhcHBlZCgpLmNvbW1p
dENoYW5nZSgpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA1ODVkNzI0N2I2MWJh
MDkwZDQxZDA4NjE2ZTUyZjI1MTBlM2Y0ZDNmLi5iODQyMzRiMTdlNWIxYjQ2NTEwYjBlZTVjZTIy
NTljMjEwOWFhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFn
ZUN1c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgYm9vbCBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJp
bmcgaXRlbSA9IGltcGwoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSksIGVjKTsKKyAgICBTdHJpbmcgaXRlbSA9IHdyYXBwZWQoKS5nZXRJdGVtKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOwogCiAgICAgaWYgKGl0ZW0uaXNOdWxsKCkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSlNT
dG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgdGhpc09iamVjdC0+aW1wbCgpLnJlbW92ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSwgZWMpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5yZW1vdmVJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsMTIgKzgzLDEyIEBA
IHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aChlYyk7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aChlYyk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkua2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5rZXkoaSwgZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEx
OCw3ICsxMTgsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnNldEl0ZW0ocHJvcGVy
dHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICB3cmFw
cGVkKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdW
YWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0
b20uY3BwCmluZGV4IDBhNjlhMmU2ZmQyM2MyOTgzZjc5OGY0ZDA1ZjI2MTcxNzFhZjYzNDAuLmNi
OTM5N2VmN2QzMWQ5NmUwNjVjMDJmNGY0OTA3YzYxNGMzZTgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExp
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlz
dEN1c3RvbS5jcHAKaW5kZXggZDFjNjA2NWE5NzU4MGYyOTdlNmVjMjQ3YmZmZjgxNzRiODk5NTZj
MS4uYzQyMjJhOWUzNGFmMjY1NTU4YmVlZWU3ZTg1MTJjMzU2MjExNWY0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKICAgICBpZiAocHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGl0
ZW0gPSBpbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIGF1dG8qIGl0ZW0gPSB3cmFwcGVkKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAKaW5kZXggZjViYTRkMzAyOWNkNjg4ZjkzNWVmZTMwYjc5ZDc5YmUyMjM0
N2YyOS4uYTUwZjgzOTliYTU4NjRkMDFhYjEzMGM4ZmNkNTFkZTRlYmRlZTZkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApA
QCAtMTUyLDcgKzE1Miw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0
YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAg
ICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKLSAgICAgICAgaW1w
bCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUg
J2VuY3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CiAgICAgICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjA1LDcgKzIwNSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVD
cnlwdG86OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRGVj
cnlwdCkpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1
c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZGVjcnlw
dCciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJS
KTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjU3LDcgKzI1Nyw3
IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dz
KENyeXB0b0tleVVzYWdlU2lnbikpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJ
SUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOworICAgICAgICB3
cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5j
bHVkZSAnc2lnbiciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQ
T1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMzA5
LDcgKzMwOSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0
YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAogICAgIGlmICgh
a2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnkn
IikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVz
YWdlcyBkbyBub3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CkBAIC02NDYsNyArNjQ2LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3Jh
cEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlKTsKIAogICAgIGlmICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBL
ZXkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNh
Z2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3Vt
ZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXkn
IikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBA
QCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBp
bmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKLSAgICAgICAgaW1wbCgp
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3Vu
d3JhcEtleSciKSk7CisgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFs
KCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOwogICAgICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA1N2Y4OGI5NTVjZjU4NTE4OGMyYTZiZWU0
ZGY3NzRmNGYyOTUxYmVmLi5kZWI0NDBiM2FiZWFiN2I4ZmU0MjIwYjdiYWFkMTAyMjBhNDk3Yjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVD
dXN0b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgSlNU
ZXh0VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBKU1RleHRUcmFja0N1ZSoganNUZXh0VHJhY2tDdWUgPSBqc0Nhc3Q8SlNUZXh0VHJhY2tDdWUq
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGV4dFRyYWNrQ3VlJiB0ZXh0VHJhY2tD
dWUgPSBqc1RleHRUcmFja0N1ZS0+aW1wbCgpOworICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNr
Q3VlID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAogICAgIC8vIElmIHRoZSBjdWUgaXMg
ZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UK
ICAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVu
dCBsaXN0ZW5lcnMuCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUqIGN1ZSkKIAogdm9p
ZCBKU1RleHRUcmFja0N1ZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gaW1wbCgpLnRyYWNrKCkp
CisgICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCkpCiAgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRleHRUcmFjaykpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggZWIx
OWYyNTc4NzE5OWYxZTcwZTk5YWY3YWQyZmIwNDI3Y2U5Zjc1ZC4uN2ZjZTZhZDJhZTVkNGYxZTFi
MzEyMDc4OTU1ZWEwZjY4NDBhY2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBs
KCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAK
IHZvaWQgSlNUZXh0VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBKU1RleHRUcmFjazo6c2V0S2luZChFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVk
KCkuc2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6
OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYg
c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFu
Z3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5j
cHAKaW5kZXggZTFiOGM2MzA5OTI2MWQxZjJiOWY1ZTdhNGZmNWRiNjUyYTkwYTg1NC4uM2Y0NmY0
MzMxYmJiZTY2ODEyNzcxMTRmYjNiNDJmMjRiZmU5Y2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1RleHRUcmFja0xpc3Q6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1
c3RvbS5jcHAKaW5kZXggOTc1MTQ2NzI0ZGIwMjY5MDU0NDQ1ODlhZGQ5MmY0MWJiNDUzMDhjNS4u
OWE5NDM2YWY4MDlhY2ZhYjZkYzUwOTg4NjhjNmU1OTZmODBkZjhmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCBU
cmFja0Jhc2UqIHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNUZXh0VHJhY2s6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTVGV4dFRyYWNrKj4ob2JqZWN0KS0+
aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU1RleHRUcmFjayo+KG9iamVjdCktPndy
YXBwZWQoKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0F1ZGlvVHJhY2s6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiAmanNDYXN0PEpTQXVkaW9UcmFjayo+KG9iamVjdCktPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4ob2JqZWN0KS0+d3JhcHBlZCgp
OwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTVmlkZW9UcmFjazo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuICZqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAg
ICByZXR1cm4gJmpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihvYmplY3QpLT53cmFwcGVkKCk7CiAKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNr
RXZlbnRDdXN0b20uY3BwCmluZGV4IGY1MWQzYjk2M2M4MTgwM2NmZTcxYjk0N2I0MmM5ZGJkMDJi
Yjg1YmUuLmVhYjZmZjIxMzhjNTNkN2UzZmViNjQ0OWIwNmQ3MWIzZGYyZTVjMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNUcmFja0V2ZW50
Ojp0cmFjayhFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFRyYWNrQmFzZSogdHJhY2sg
PSBpbXBsKCkudHJhY2soKTsKKyAgICBUcmFja0Jhc2UqIHRyYWNrID0gd3JhcHBlZCgpLnRyYWNr
KCk7CiAgICAgaWYgKCF0cmFjaykKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAppbmRleCBj
MWU2ODFkNDk3YjQ0YzBiNDhlMzdhN2ZlYTA4MWIxMmQwZmMzNWQ3Li4yYmUwOGE5OTFmN2RkMTRl
ZjlhMmE2MmQxOGYzMWQ5Y2YxNzE1M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4o
SlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVy
ID0gaW1wbCgpLmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB3cmFwcGVk
KCkuZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNV
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcAppbmRleCA4ZmM2ZWY4ZmIzMGQy
MGIzOWJkMDk4ZTJmMTkzMDU5MmZmNDI4YWZiLi5hZGY0OTM2NDczYjQyM2RjMTJkZWM3YWQ4MGRi
ZjcyMGFiM2VhOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTVXNlck1lc3NhZ2VI
YW5kbGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0g
ICAgaWYgKFVzZXJNZXNzYWdlSGFuZGxlciogaGFuZGxlciA9IGltcGwoKS5oYW5kbGVyKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpKSkgeworICAgIGlmIChVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSB3cmFwcGVkKCku
aGFuZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxP
YmplY3QoKS0+d29ybGQoKSkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBSZWFkT25s
eSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGFu
ZGxlcikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA2ZjBhZjVhZjVhOGVh
MWUxZWE3ZTVmZTE5MWUwYzgwN2MyMDQxZTkwLi5kODI4ZTEyZmEwYzYyZTA4M2IwMzZiOWM3NDNm
MDQwZTRjNjdmOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOwor
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogdm9pZCBK
U1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3Rh
dGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRLaW5kKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNl
dEtpbmQoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odmFsdWUpOwpAQCAtNTksNyArNTksNyBAQCB2b2lkIEpTVmlkZW9UcmFjazo6c2V0
TGFuZ3VhZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJp
bmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRMYW5ndWFn
ZShzdHJpbmcpOworICAgIHdyYXBwZWQoKS5zZXRMYW5ndWFnZShzdHJpbmcpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
CmluZGV4IDY2ZDdiZWEzZTAwZTBkZTNhZjAxODE1ZGE2YjkyMWRlZGRiYzEzMTQuLmEyYTM2MTg0
YTRlZWQ0OTU1Mjk1YTFlNTg3N2I5ZGU0MDFlNjYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNp
dEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkuZWxlbWVudCgpKSk7CisgICAgdmlzaXRvci5hZGRP
cGFxdWVSb290KHJvb3Qod3JhcHBlZCgpLmVsZW1lbnQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA5OWZmNzAzYzQ2NDlhNjMw
NGU2ODhiZmRhMDFlNmY4YjEwZmNmNDZiLi43YzRlYzA4MTg3ODFjODcyMWVjZmJkNzU1MGZkNjE2
ODFiZjJhMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
c3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFdlYkcKIAogdm9pZCBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
JndyYXBwZWQoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJ
bnRlcm5hbGZvcm1hdFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC05OSw3ICs5OSw3IEBA
IEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDIpCiAgICAg
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNv
bnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCA9IHdy
YXBwZWQoKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LnRvSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4
IDRlNGU1Y2E5OGZjMTQ5MDJhMmNjMDAwYjZhYjA2Mzg5MGEyMWIxNjUuLjgzMWNmNTkxZWQ3ZDA4
ZTlhMDhlMTY0MmE5NWEzMWM0NjYxZmRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9t
LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRl
cihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRlJiBzCiAgICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+aW1wbCgpOwor
ICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPndyYXBwZWQoKTsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMy
KCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRl
bgogCiB2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KCZpbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAog
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhF
eGVjU3RhdGUmIHN0YXRlKQpAQCAtMjczLDcgKzI3Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNX
ZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
aWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTI5Niw3
ICsyOTYsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5z
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEp
CiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCi0gICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpAQCAtMzE1LDcgKzMxNSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlCiAgICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2ln
bmVkIHRhcmdldCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpAQCAtMzM5LDcgKzMzOSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTM1Nyw3
ICszNTcsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3Jh
bVBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBK
U1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwpAQCAtMzgz
LDcgKzM4Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFk
ZXJQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS5pbmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoJnN0YXRlKTsKICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRl
cjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKQEAgLTQwMCw3ICs0MDAs
NyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1l
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmIChjb250ZXh0Lmlz
Q29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIFZlY3RvcjxTdHJp
bmc+IHZhbHVlID0gY29udGV4dC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CkBAIC00MjEsNyAr
NDIxLDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0o
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dy
YW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9n
cmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTY5MSw3NyArNjkxLDc3
IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1h
dHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTF2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICBy
ZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0xdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAK
IEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoSlND
OjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9y
bTF2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0x
diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0yZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJl
dHVybiBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTJ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0ydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpT
Qzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTJ2
LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0ydiwg
c3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0zZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTN2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4g
ZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0zdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTN2LCBz
dGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwgc3Rh
dGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm00ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25mKGZfdW5pZm9ybTR2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0
YUZ1bmN0aW9uZihmX3VuaWZvcm00diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTR2LCBzdGF0
ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm00diwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXgyZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4MmZ2LCBzdGF0ZSwgaW1wbCgpKTsK
KyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJmdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXgzZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4M2Z2LCBzdGF0ZSwgaW1wbCgpKTsK
KyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNmdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXg0ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4NGZ2LCBzdGF0ZSwgaW1wbCgpKTsK
KyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDRmdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZlcnRleEF0dHJpYjFmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0
dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9
CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJp
YjJmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYo
Zl92ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlv
bmYoZl92ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIz
diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRy
aWIzdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjRmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIGltcGwo
KSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAppbmRleCBiNmQzOWFjMDcwZjU5NzczNzg5ODkxMjk5ZGRlMDAyMzU3MjU4MGQyLi5lZGU1
YmI5N2E4NjhhNDIxZjM1NzlmNDg3Zjc1OTlkYzg3NGU1ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZpbXBsKCkpOworICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmlu
ZGV4IDA1YTllNzAyZTdjODE5YmY3Yjc1MWQ5YmU3N2MxMTJiZTM1OTRmYjMuLjBlZmJkMTJmMDMz
NDk2ZWMzY2UyY2QwNmYxOTE3YjZmMWZkM2ViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZpbXBs
KCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJndyYXBwZWQoKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0
YXRlKiBleGVjKQpAQCAtNTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgLy8gU2VlIHNlY3Rpb24gNC44LjIgc3RlcCAx
NCBvZiBXZWJXb3JrZXJzIGZvciB3aHkgdGhpcyBpcyB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4g
Ci0gICAgRE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPmltcGwoKTsKKyAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFzSlNET01XaW5k
b3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d3JhcHBlZCgpOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgQVNTRVJUKHdpbmRvdy5kb2N1bWVudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAppbmRleCBhY2Q2MTdlODY5ODkyOTA3NTM3NmU1ODMyYWIyODNmMmQyZmE3OTAwLi41OGRhNzVl
OGU3MzI5NDk1OWRlMWJhNjM3NjczYjNjNzg4NTJmOGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAKIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKICAgICA6IEpT
RE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZub3JtYWxXb3JsZCh2bSksICZzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKQotICAgICwgbV9pbXBsKGltcGwpCisgICAgLCBtX3dyYXBwZWQo
aW1wbCkKIHsKIH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2ltcGwuZ2V0KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0K
IAogYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNzRnJvbShjb25zdCBK
U0dsb2JhbE9iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAppbmRleCAwMzE1
MzBlZTU4NjEzOWZjNWFiNmY4Yjg4NTE0YjU4NDgxMWM3MmRlLi4yZGU4Y2M0ZmEwNjhlZDM0NDIw
NmYxMDA4YjRjYTZhN2U2Yjc2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAotICAgICAgICBXb3JrZXJH
bG9iYWxTY29wZSYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAgICAgICAgV29y
a2VyR2xvYmFsU2NvcGUmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFwcGVkOyB9CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKIAogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX2ltcGw7CisgICAgICAgIFJlZlB0cjxXb3Jr
ZXJHbG9iYWxTY29wZT4gbV93cmFwcGVkOwogICAgIH07CiAKICAgICAvLyBSZXR1cm5zIGEgSlNX
b3JrZXJHbG9iYWxTY29wZSBvciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCAxMjg5OGNj
OTc1YmVmNTAwYjNiMTBkYmFmMWY2NTBhODZkYzNjMzAyLi5hOTQ1NzczMmQyMjhjZmE5YWNhODAz
NTVmZTNmNDJkN2RmYTE1OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtNTMsOSArNTMsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFdvcmtlckxv
Y2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYgKFdv
cmtlckxvY2F0aW9uKiBsb2NhdGlvbiA9IHdyYXBwZWQoKS5vcHRpb25hbExvY2F0aW9uKCkpCiAg
ICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChsb2NhdGlvbik7Ci0gICAgaWYgKFdvcmtlck5h
dmlnYXRvciogbmF2aWdhdG9yID0gaW1wbCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkpCisgICAgaWYg
KFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gd3JhcHBlZCgpLm9wdGlvbmFsTmF2aWdhdG9y
KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChuYXZpZ2F0b3IpOwogfQogCkBAIC04
MCwzMSArODAsMzEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRz
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0g
ICAgaW1wbCgpLmltcG9ydFNjcmlwdHModXJscywgZWMpOworICAgIHdyYXBwZWQoKS5pbXBvcnRT
Y3JpcHRzKHVybHMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6
c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hl
ZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCktPndvcmxkKCksIGltcGwoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0
aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmICghYWN0aW9uKQogICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoMCk7CiAgICAgaW50IGRlbGF5ID0gc3RhdGUuYXJndW1lbnQoMSkudG9J
bnQzMigmc3RhdGUpOwotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuc2V0VGltZW91dChXVEY6
Om1vdmUoYWN0aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNl
dFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAKIEpTVmFsdWUgSlNXb3Jr
ZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNy
ZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBpbXBsKCkuY29udGVudFNlY3Vy
aXR5UG9saWN5KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlv
biA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxk
KCksIHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIWFj
dGlvbikKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogICAgIGludCBkZWxheSA9IHN0YXRl
LmFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgp
LnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOworICAgIHJldHVybiBqc051
bWJlcih3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggOTE1YjA2Mjg3NDBlNzdl
YTBkYTcwYTdmYmJlY2RiNzE4MGNiYTZiZC4uODliM2JjZmJiMmM2NGIyZTNiOGVmMWJmOGY2Mzc5
NmQ2YjhiMjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTU4LDE2ICs1OCwxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1
cGxvYWQgPSBpbXBsKCkub3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJlcXVlc3RV
cGxvYWQqIHVwbG9hZCA9IHdyYXBwZWQoKS5vcHRpb25hbFVwbG9hZCgpKQogICAgICAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3QodXBsb2FkKTsKIAotICAgIGlmIChEb2N1bWVudCogcmVzcG9uc2VE
b2N1bWVudCA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50
KiByZXNwb25zZURvY3VtZW50ID0gd3JhcHBlZCgpLm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKICAg
ICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlRG9jdW1lbnQpOwogCi0gICAgaWYg
KEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gaW1wbCgpLm9wdGlvbmFsUmVzcG9u
c2VBcnJheUJ1ZmZlcigpKQorICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZl
ciA9IHdyYXBwZWQoKS5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKICAgICAgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCi0gICAgaWYgKEJsb2Iq
IHJlc3BvbnNlQmxvYiA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlQmxvYigpKQorICAgIGlmIChC
bG9iKiByZXNwb25zZUJsb2IgPSB3cmFwcGVkKCkub3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAg
ICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiB9CiAKQEAgLTc3LDcg
Kzc3LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAKLSAgICBjb25zdCBVUkwmIHVybCA9IGltcGwoKS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3Ry
aW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgIGNvbnN0IFVSTCYgdXJsID0gd3JhcHBl
ZCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgU3RyaW5n
IG1ldGhvZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZh
bHVlKCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg4LDEzICs4OCwx
MyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAog
ICAgICAgICAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgpKSB7CiAgICAg
ICAgICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2so
JnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCg0KSk7Ci0gICAgICAgICAgICAgICAgaW1w
bCgpLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgZWMpOworICAgICAg
ICAgICAgICAgIHdyYXBwZWQoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dv
cmQsIGVjKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGltcGwoKS5vcGVu
KG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIHdyYXBwZWQo
KS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAg
ICAgd3JhcHBlZCgpLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYyk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5v
cGVuKG1ldGhvZCwgdXJsLCBlYyk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMzgsMzAgKzEzOCwzMCBAQCBwcml2YXRl
OgogCiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoaW1w
bCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLnVybCgpKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qod3JhcHBlZCgpLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgd3JhcHBlZCgpLnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIEpTVmFsdWUgdmFsID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYg
KHZhbC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBpbXBsKCkuc2VuZChlYyk7CisgICAg
ICAgIHdyYXBwZWQoKS5zZW5kKGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNEb2N1
bWVudDo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVk
KHZhbCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVk
KHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQot
ICAgICAgICBpbXBsKCkuc2VuZChKU0Jsb2I6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAg
IHdyYXBwZWQoKS5zZW5kKEpTQmxvYjo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlm
ICh2YWwuaW5oZXJpdHMoSlNET01Gb3JtRGF0YTo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNl
bmQoSlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgp
LnNlbmQoSlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2
YWwuaW5oZXJpdHMoSlNBcnJheUJ1ZmZlcjo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQo
dG9BcnJheUJ1ZmZlcih2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHRvQXJyYXlC
dWZmZXIodmFsKSwgZWMpOwogICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0FycmF5QnVmZmVy
Vmlldzo6aW5mbygpKSkgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB2aWV3ID0g
dG9BcnJheUJ1ZmZlclZpZXcodmFsKTsKLSAgICAgICAgaW1wbCgpLnNlbmQodmlldy5nZXQoKSwg
ZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZCh2aWV3LmdldCgpLCBlYyk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGltcGwoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
LCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpLCBlYyk7CiAKICAgICBTZW5kRnVuY3RvciBmdW5jdG9yOwogICAgIHN0YXRlLml0
ZXJhdGUoZnVuY3Rvcik7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5kTGluZUFuZENvbHVtbk51bWJl
cihmdW5jdG9yLmxpbmUoKSwgZnVuY3Rvci5jb2x1bW4oKSk7Ci0gICAgaW1wbCgpLnNldExhc3RT
ZW5kVVJMKGZ1bmN0b3IudXJsKCkpOworICAgIHdyYXBwZWQoKS5zZXRMYXN0U2VuZExpbmVBbmRD
b2x1bW5OdW1iZXIoZnVuY3Rvci5saW5lKCksIGZ1bmN0b3IuY29sdW1uKCkpOworICAgIHdyYXBw
ZWQoKS5zZXRMYXN0U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNjksNyArMTY5
LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyB0ZXh0ID0gaW1w
bCgpLnJlc3BvbnNlVGV4dChlYyk7CisgICAgU3RyaW5nIHRleHQgPSB3cmFwcGVkKCkucmVzcG9u
c2VUZXh0KGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE4MCwyNSArMTgwLDI1
IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSBDYWNoZWRBdHRyaWJ1dGUgZm9yIG90
aGVyIHR5cGVzIHRoYW4gSlNPTiBhcyB3ZWxsLgotICAgIGlmIChtX3Jlc3BvbnNlICYmIGltcGwo
KS5yZXNwb25zZUNhY2hlSXNWYWxpZCgpKQorICAgIGlmIChtX3Jlc3BvbnNlICYmIHdyYXBwZWQo
KS5yZXNwb25zZUNhY2hlSXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9yZXNwb25zZS5nZXQo
KTsKIAotICAgIGlmICghaW1wbCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgaW1wbCgpLnJlc3Bv
bnNlVHlwZUNvZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQorICAgIGlm
ICghd3JhcHBlZCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgd3JhcHBlZCgpLnJlc3BvbnNlVHlw
ZUNvZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7CiAKLSAgICBzd2l0Y2ggKGltcGwoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsK
KyAgICBzd2l0Y2ggKHdyYXBwZWQoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKICAgICBjYXNlIFhN
TEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEZWZhdWx0OgogICAgIGNhc2UgWE1MSHR0cFJlcXVl
c3Q6OlJlc3BvbnNlVHlwZVRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUp
OwogCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlSlNPTjoKICAgICAgICAg
ewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIGltcGwoKS5y
ZXNwb25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKKyAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBKU09OUGFyc2UoJnN0YXRlLCB3cmFwcGVkKCkucmVzcG9uc2VUZXh0SWdub3JpbmdS
ZXNwb25zZVR5cGUoKSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAg
IHZhbHVlID0ganNOdWxsKCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldChzdGF0ZS52bSgp
LCB0aGlzLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGltcGwoKS5kaWRDYWNoZVJlc3BvbnNlSlNP
TigpOworICAgICAgICAgICAgd3JhcHBlZCgpLmRpZENhY2hlUmVzcG9uc2VKU09OKCk7CiAKICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQpAQCAtMjA2LDcgKzIwNiw3IEBAIEpT
VmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
ICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEb2N1bWVudDoKICAgICAgICAg
ewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBpbXBsKCkucmVzcG9uc2VYTUwoZWMpOworICAgICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gd3JhcHBlZCgpLnJlc3BvbnNlWE1MKGVjKTsKICAgICAgICAgICAgIGlm
IChlYykgewogICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29u
c3QKICAgICAgICAgfQogCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlQmxv
YjoKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLnJl
c3BvbnNlQmxvYigpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3Qo
KSwgd3JhcHBlZCgpLnJlc3BvbnNlQmxvYigpKTsKIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6
OlJlc3BvbnNlVHlwZUFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCBpbXBsKCkucmVzcG9uc2VBcnJheUJ1ZmZlcigpKTsKKyAgICAgICAgcmV0
dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3BvbnNlQXJyYXlC
dWZmZXIoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCmluZGV4IDI0
MTZkNjc5MDgxMzkxM2YxM2VjMGE1MTljNWYxMDg2YzI2MzU4NTYuLjVkMzQ4NmU4NTljNjQyNTY2
NzdjZDg3YmNhYmZjN2I2YTE2MDM0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8mIHZhbHVlID0gaW1wbCgp
LnZhbHVlKCk7CisgICAgYXV0byYgdmFsdWUgPSB3cmFwcGVkKCkudmFsdWUoKTsKICAgICBpZiAo
dmFsdWUuaXNOb2RlU2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogdmFsdWUudG9O
b2RlU2V0KCkpCiAgICAgICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlLmdl
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9j
ZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vz
c29yQ3VzdG9tLmNwcAppbmRleCAzMzFiOWYxYjBiYmY1NzlhYzQ1MmQwN2VkYzFiOWY2NThmY2Y2
MTVmLi4xNTJiODczNzAwYjlhMGRjNDY4Y2MwM2ZiMDllMWE0MzI0ZGM3NjgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihF
eGVjU3RhdGUmIHN0YXRlKQogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmlu
ZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUp
LT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyB2YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnNldFBh
cmFtZXRlcihuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOworICAgIHdyYXBwZWQoKS5z
ZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nl
c3Nvcjo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2Nh
bE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOwotICAgIFN0cmluZyB2YWx1ZSA9IGltcGwoKS5nZXRQYXJhbWV0ZXIobmFtZXNw
YWNlVVJJLCBsb2NhbE5hbWUpOworICAgIFN0cmluZyB2YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJh
bWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5k
ZWZpbmVkKCZzdGF0ZSwgdmFsdWUpOwogfQogCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNY
U0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAg
U3RyaW5nIGxvY2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZz
dGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSk7CisgICAgd3JhcHBlZCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDA1OGM5
MWM5MjQ0YTVjODBhZTllOGYwZmI2NGFlMGE4NDZhM2Q1ZDMuLmZlYmQyOTAwZTYyNWU3Y2UzNmZj
NzI5MzM3YTQ5MmI4Mzk2ZDVkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0
aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIXdpbmRvdykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLmZy
YW1lKCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAw
NDMwYmE3ZmQ1M2NhYzJjNTQyZTg2MzIwNGRhYmFjNWZhMGJhZjE1Li4xY2NjZjhhZjIxMDBmMDdm
NTA1ZmU2N2JmYzAwYjU5NDQ4OTk0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9p
ZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogICAgICAgICAg
ICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ctPnZtKCksIHdpbmRvdyk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBmcmFtZS5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKTsKLSAgICAgICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygp
LT5pbXBsKCkgPT0gZG9tV2luZG93KQorICAgICAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2lu
ZG93KCktPndyYXBwZWQoKSA9PSBkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZG9tV2luZG93KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjE2
MWU2NmY4ZDkyYzgwYzRmYzhiMmI3MjZiYzI0ODY1N2RkNTJkOS4uNjI5YzQyMTNhZThmYTFiNmU5
ZDI2ZGUwMDNmZjRlMTBiNjZlOWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNjcmlwdENv
bnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wg
Z29pbmdJbnRvUAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93U2hlbGxzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gd2luZG93
U2hlbGxzW2ldLmdldCgpOwogCi0gICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5p
bXBsKCkgPT0gbmV3RE9NV2luZG93KQorICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3co
KS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50
IHdpbmRvdyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KQEAgLTM5MSw3ICszOTEsNyBA
QCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3Rvcjxz
dGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLAogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVu
ZCgpOyArK2l0ZXIpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBpdGVyLT52YWx1
ZS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biA9IGl0ZXItPnZhbHVlLT53aW5kb3coKS0+aW1wbCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCk7CisgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBpdGVyLT52YWx1ZS0+d2lu
ZG93KCktPndyYXBwZWQoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICBy
ZXN1bHQuYXBwZW5kKHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4o
ZXhlYywgb3JpZ2luKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCmluZGV4IDczMmM3Y2M2OWU0YzJmNTUwOWZkNjAwY2JmOWRhYzQyMjQyYmJm
NDkuLjMwMDdlYmEwNTg4ZGJhMWE5ZjJjOGJlYjg0NmFkMDk5NjA4MDNlZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9N
V2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSkKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRTdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0cyhK
U0RPTVdpbmRvd0Jhc2U6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+aW1wbCgp
OworICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0
KS0+d3JhcHBlZCgpOwogfQogCiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNjNm
NmI1NTJkMDRiOTU5NGJmMWUzMjk1M2NlNTFkYmZkOTg4Yzk4OC4uNDM1MmViNGUwZWI4YTlkZDM0
ODI0Y2JhMzgzNTk0YmJiZTIyNzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0K
QEAgLTU3MSw3ICs1NzEsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVu
dFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFvYmplY3QtPmluaGVyaXRzKEpTTm9kZTo6
aW5mbygpKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFdlYkNvcmU6Ok5vZGUmIG5vZGUg
PSBqc0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+aW1wbCgpOworICAgIFdlYkNvcmU6Ok5vZGUmIG5v
ZGUgPSBqc0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIHJldHVybiBraXQo
Jm5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVV0aWxpdHkubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW0K
aW5kZXggZmIxN2YwZDNkODZiMTBkYTU4MDhkMTg4Y2VjOTA0YzA5ODYyNzlhMS4uNWU1MjU2NTY0
OTg3NGE2YzhlMzk3MmNjMjg5M2I0ZmNjMmFjNjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NVXRpbGl0eS5tbQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIGlk
IGNyZWF0ZURPTVdyYXBwZXIoSlNDOjpKU09iamVjdCogb2JqZWN0KQogewogICAgICNkZWZpbmUg
V1JBUChjbGFzc05hbWUpIFwKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoV2ViQ29yZTo6
SlMjI2NsYXNzTmFtZTo6aW5mbygpKSkgXAotICAgICAgICAgICAgcmV0dXJuIGtpdCgmc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SlMjI2NsYXNzTmFtZSo+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAg
ICAgICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJDb3JlOjpKUyMjY2xhc3NOYW1lKj4ob2Jq
ZWN0LT53cmFwcGVkKCkpOwogCiAgICAgV1JBUChDU1NSdWxlKQogICAgIFdSQVAoQ1NTUnVsZUxp
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
CmluZGV4IDU3ZjMyMDJhOGMyZDYwMTRlZTFlMWFjOGZjZjdlNWJkMDYyYTc3YzguLmZiNmRmMjVh
NGM3YmY0NzhmYTMzMTEzOTcyMTJjNzFjNmYwNTc2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0yNTIsNyArMjUyLDcgQEAgc3Rh
dGljIHZvaWQgYWRkRXhjZXB0aW9uVG9Db25zb2xlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBK
U0RPTVdpbmRvd0Jhc2UqIGlzbid0IHRoZSByaWdodCBvYmplY3QgdG8gcmVwcmVzZW50IHRoZSBj
dXJyZW50bHkgZXhlY3V0aW5nCiAgICAgLy8gSmF2YVNjcmlwdC4gSW5zdGVhZCwgd2Ugc2hvdWxk
IHVzZSBFeGVjU3RhdGUsIGxpa2Ugd2UgZG8gZWxzZXdoZXJlLgogICAgIEpTRE9NV2luZG93QmFz
ZSogdGFyZ2V0ID0ganNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHJvb3QtPmdsb2JhbE9iamVjdCgp
KTsKLSAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpLCB0YXJnZXQtPmltcGwoKSk7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgdGFyZ2V0LT53cmFwcGVkKCkpOwogfQogCiAtIChKU0ds
b2JhbENvbnRleHRSZWYpX2dsb2JhbENvbnRleHRSZWYKQEAgLTU0MSw3ICs1NDEsNyBAQCBzdGF0
aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJh
eSwgUm9vdE9iamVjdCogcm9vdAogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTSFRN
TEVsZW1lbnQ6OmluZm8oKSkpIHsKICAgICAgICAgICAgIC8vIFBsdWdpbiBlbGVtZW50cyBjYWNo
ZSB0aGUgaW5zdGFuY2UgaW50ZXJuYWxseS4KLSAgICAgICAgICAgIGlmIChPYmpjSW5zdGFuY2Uq
IGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4ocGx1Z2luSW5zdGFuY2UoanND
YXN0PEpTSFRNTEVsZW1lbnQqPihvYmplY3QpLT5pbXBsKCkpKSkKKyAgICAgICAgICAgIGlmIChP
YmpjSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4ocGx1Z2lu
SW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihvYmplY3QpLT53cmFwcGVkKCkpKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE9iamVjdCgpOwogICAgICAgICB9IGVs
c2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVPYmplY3Q6OmluZm8oKSkpIHsKICAg
ICAgICAgICAgIE9iakNSdW50aW1lT2JqZWN0KiBydW50aW1lT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
T2JqQ1J1bnRpbWVPYmplY3QqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAyMTZiYzk5YzgwNTFjNmZjNmMz
MGE0YjkwNWU2MjBmZDc1ZGIxZDZkLi5iOTg0NmFlY2M5ODI0MWZlNTg5MTdjMDI0MWJiNWUyNTVh
YjU3ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtNDIxLDcgKzQyMSw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3Bl
cnR5U2xvdEJvZHkKICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnNpZ25hdHVy
ZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVy
dHlTbG90SW1wbCwgIiAgICBpZiAob3B0aW9uYWxJbmRleCkge1xuIik7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChv
cHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmltcGwo
KS5sZW5ndGgoKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJ
bXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRo
aXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgIH0KICAgICAgICAg
cHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgdW5zaWduZWQgaW5kZXggPSBv
cHRpb25hbEluZGV4LnZhbHVlKCk7XG4iKTsKICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVy
ZSdzIGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQpAQCAtMTE4MSw5ICsxMTgx
LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoTmVlZHNJbXBsZW1lbnRhdGlvbkNs
YXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlmICgkaGFzUGFyZW50KSB7Ci0gICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsKCkgY29uc3Rc
biIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkaW50ZXJmYWNlTmFt
ZSYgd3JhcHBlZCgpIGNvbnN0XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAge1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUmPihCYXNlOjppbXBsKCkpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8JGludGVyZmFjZU5hbWUmPihCYXNlOjp3cmFwcGVkKCkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc1
Miw5ICsxNzUyLDkgQEAgc3ViIEdldEluZGV4ZWRHZXR0ZXJFeHByZXNzaW9uCiB7CiAgICAgbXkg
JGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiA9IHNoaWZ0OwogICAgIGlmICgkaW5kZXhlZEdldHRlckZ1
bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKLSAgICAgICAgcmV0dXJu
ICJqc1N0cmluZ09yVW5kZWZpbmVkKHN0YXRlLCB0aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRl
eCkpIjsKKyAgICAgICAgcmV0dXJuICJqc1N0cmluZ09yVW5kZWZpbmVkKHN0YXRlLCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpIjsKICAgICB9Ci0gICAgcmV0dXJuICJ0b0pTKHN0
YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+aW1wbCgpLml0ZW0o
aW5kZXgpKSI7CisgICAgcmV0dXJuICJ0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSI7CiB9CiAKIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5z
aWduYXR1cmUtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkge1xuIik7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpKSB7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlu
ZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVy
LCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CkBAIC0y
MzE5LDkgKzIzMTksOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogICAgICAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIpOwogICAgICAgICAgICAgICAgICAgICBt
eSAkZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRob2ROYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRCeVNldHRpbmcifSkgLiAiRW5hYmxlZCI7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhp
cy0+aW1wbCgpLmZyYW1lKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSlcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT5pbXBs
KCkuZnJhbWUoKS0+c2V0dGluZ3MoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCkuZnJhbWUoKS0+c2V0dGluZ3MoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIXNldHRpbmdzLiRlbmFibGVfZnVuY3Rpb24oKSlcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KQEAg
LTIzMzQsNyArMjMzNCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAm
JgogICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSAmJgogICAgICAgICAgICAgICAgICEkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlP
bkdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNh
c3RlZFRoaXMtPmltcGwoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAgLTIzNTIsNyArMjM1Miw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJGV4Y2VwdGlvbkNvZGUg
PSAkZ2V0dGVyRXhjZXB0aW9ucyA/ICJlYyIgOiAiMCI7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gYmluZGluZ05hbWUoXCIkaW50ZXJmYWNlTmFtZS4kbmFtZVwiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkge1xuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRtZW1vaXplZFR5cGUgbWVtb2l6ZWRSZXN1
bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4o
IiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1
bWVudHMpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PCRtZW1vaXplZFR5cGU+
PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsICRleGNlcHRpb25D
b2RlKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlTmFtZSwgIm1lbW9pemVkUmVzdWx0IiwgImNhc3RlZFRoaXMiKSAuICI7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKHN0YXRlLCBlYyk7XG4iKSBpZiAkZ2V0dGVyRXhjZXB0aW9uczsKQEAgLTIzNzYs
NyArMjM3Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgqc3RhdGUpKTtcbiIpOwogICAgICAgICAgICAgfSBl
bHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tT
ZWN1cml0eUZvck5vZGUifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9N
QmluZGluZy5oIn0gPSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC4iIC4gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAiIDoganNOdWxsKCkpO1xuIik7CiAgICAg
ICAgICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnRIYW5kbGVyIikgewogICAgICAgICAgICAg
ICAgIG15ICRnZXR0ZXIgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJXaW5kb3dFdmVudEhhbmRsZXIifSA/ICJ3aW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUi
CkBAIC0yMzg0LDcgKzIzODQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgICAgICA6ICJldmVudEhhbmRsZXJBdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAg
IG15ICRldmVudE5hbWUgPSBFdmVudEhhbmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUoJGF0dHJpYnV0
ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoJGdldHRlcihjYXN0ZWRUaGlzLT5pbXBsKCksICRldmVudE5h
bWUpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoJGdldHRlcihjYXN0ZWRUaGlzLT53cmFwcGVkKCksICRldmVudE5h
bWUpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9y
VHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICAkY29u
c3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CkBAIC0yNDEyLDkgKzI0MTIsOSBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFy
Z3MgPSBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkiKTsKIAogICAgICAgICAgICAgICAgIGlmICgkc3ZnTGlzdFByb3BlcnR5VHlw
ZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVl
IHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlzLT5pbXBsKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5h
bWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4g
IjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1Zh
bHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
MCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5j
dGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhp
cyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlz
dFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGVxICJmbG9h
dCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCiAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVU
b0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwi
LCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpA
QCAtMjQzNyw3ICsyNDM3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAg
ICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOwogICAgICAg
ICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwg
IiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4i
KSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29k
ZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHR5cGU+IG9iaiA9ICRqc1R5
cGU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IG9iai5nZXQoKSk7XG4iKTsKQEAgLTI0NjMsMTAgKzI0NjMsMTAgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRl
Q2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fs
bFdpdGgifSwgXEBpbXBsQ29udGVudCwgIkpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSIp
KTsKIAogICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3Bl
cnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JM
aXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPndyYXBwZWQoKSk7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAi
IC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5h
bWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVu
dHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJl
c3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50
ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwg
QGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQogCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNr
U2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgIGRpZSBpZiAhQ29uc3RydWN0b3JTaG91bGRC
ZU9uSW5zdGFuY2UoJGludGVyZmFjZSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coc3RhdGUsIGRvbU9iamVjdC0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KHN0YXRlLCBkb21PYmplY3QtPndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgfQogCkBAIC0yNTQwLDkgKzI1NDAs
OSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlc
biIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBj
YXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUs
IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7
CiAgICAgICAgICAgICB9CkBAIC0yNjUyLDkgKzI2NTIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKVxu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKSlcbiIpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTI2NjcsMTMgKzI2NjcsMTMgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAjIEZJWE1FOiBGaW5k
IGEgd2F5IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNlIHdpdGhvdXQgaGFyZGNvZGluZyB0aGUgY2xh
c3MgYW5kIGF0dHJpYnV0ZSBuYW1lcyBoZXJlLgogICAgICAgICAgICAgICAgIGlmICgoKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSBvciAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckds
b2JhbFNjb3BlIikpIGFuZCAkbmFtZSBlcSAib25lcnJvciIpIHsKICAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siSlNFcnJvckhhbmRsZXIuaCJ9ID0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+aW1wbCgpLnNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNFcnJvckhhbmRsZXIoc3RhdGUs
IHZhbHVlLCBjYXN0ZWRUaGlzKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNFcnJvckhhbmRsZXIoc3RhdGUsIHZhbHVlLCBjYXN0
ZWRUaGlzKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAg
ICAgICAgICAgbXkgJHNldHRlciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IldpbmRvd0V2ZW50SGFuZGxlciJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0
dHJpYnV0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgIDogJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9jdW1lbnRFdmVudEhhbmRsZXIifSA/ICJzZXREb2N1
bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgIDogInNl
dEV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRzZXR0ZXIoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+aW1w
bCgpLCAkZXZlbnROYW1lLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHNldHRlcigqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlz
LT53cmFwcGVkKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29u
c3RydWN0b3IkLykgewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CkBAIC0yNjk2LDE4ICsyNjk2LDE4IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRl
ckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSB8fCAkbmFtZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9ICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmlzTnVsbGFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVk
SW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBS
ZWZQdHI8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWZvcndhcmRlZEltcGwpXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgYXV0byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXR0
cmlidXRlIGlzIG5vdCBudWxsYWJsZSwgdGhlIGltcGxlbWVudGF0aW9uIGlzIGV4cGVjdGVkIHRv
IHJldHVybiBhIHJlZmVyZW5jZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBSZWY8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWY8JHthdHRy
aWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS4ke2ltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gZm9yd2FyZGVkSW1wbC5nZXQoKTtc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
JGF0dHJpYnV0ZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBdHRyaWJ1dGVGcm9tSW50ZXJmYWNlKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSwgJHB1dEZvcndhcmRzKTsKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmICRzZXR0ZXJSYWlzZXNFeGNlcHRpb247CkBA
IC0yODE0LDEzICsyODE0LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFz
c05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAg
ICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1w
bCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT53
cmFwcGVkKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJv
bShzdGF0ZSwgaSkpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRuYW1lZEdldHRlckZ1
bmN0aW9uKSB7CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVlZCB0byBhZGQgYW4gSURM
IGV4dGVuZGVkIGF0dHJpYnV0ZSBhdCBzb21lIHBvaW50IGlmIGFuIGludGVyZmFjZSBuZWVkcyBl
bnVtZXJhYmxlIG5hbWVkIHByb3BlcnRpZXMuCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHtcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlO
YW1lIDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSlcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGZvciAoYXV0byYgcHJvcGVy
dHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSlc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBwcm9wZXJ0eU5hbWUpKTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAg
IH0KQEAgLTI5MjEsMTQgKzI5MjEsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hl
Y2tTZWN1cml0eSJ9IGFuZAogICAgICAgICAgICAgICAgICAgICAhJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgp
KSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkaXNDdXN0b20p
IHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4iIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1l
IC4gIigqc3RhdGUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGltcGwuaXNSZWFkT25seSgpKSB7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7XG4iKTsKQEAgLTI5
ODIsMTEgKzI5ODIsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7XG4iKTsKICAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8ICRpbnRlcmZhY2Ut
Pm5hbWUgZXEgIkV2ZW50VGFyZ2V0IikgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgdGhpc09iamVjdC0+aW1wbCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOwogICAgICAgICB9CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKHZpc2l0b3IpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ3VzdG9tTWFya0Z1bmN0aW9uIn07CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlDb3N0In0pIHsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVk
KHRoaXNPYmplY3QtPmltcGwoKS5tZW1vcnlDb3N0KCkpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlz
T2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpKTtcbiIpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgICAgIGZvcmVhY2ggKEB7
JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKQEAgLTMwMjgsNyArMzAyOCw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNF
eHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0IikpIHsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9
IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4i
KTsKICAgICAgICAgICAgICRlbWl0dGVkSlNDYXN0ID0gMTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5oYXNQZW5kaW5n
QWN0aXZpdHkoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKVxuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4i
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5k
ZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0IikpIHsKQEAgLTMwMzYsNyArMzAz
Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtp
bnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTtcbiIpOwogICAgICAgICAg
ICAgICAgICRlbWl0dGVkSlNDYXN0ID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5pc0Zp
cmluZ0V2ZW50TGlzdGVuZXJzKCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5pc0ZpcmluZ0V2ZW50TGlz
dGVuZXJzKCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewpAQCAtMzA1NSwzNCArMzA1
NSwzNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkcm9v
dFN0cmluZzsKICAgICAgICAgICAgIGlmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZh
Y2UpIGVxICJJbXBsIikgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgJHtp
bXBsVHlwZX0qIHJvb3QgPSAmanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCk7XG4iOworICAgICAg
ICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgJHtpbXBsVHlwZX0qIHJvb3QgPSAmanMke2lu
dGVyZmFjZU5hbWV9LT53cmFwcGVkKCk7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0R2Vu
ZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4
dCIpIHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwo
KS5jb250ZXh0KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNl
TmFtZX0tPndyYXBwZWQoKS5jb250ZXh0KCkpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdl
dEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxGcmFtZSIpIHsKLSAgICAg
ICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEZyYW1lKiByb290ID0gV1RGOjpnZXRQdHIo
anMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuZnJhbWUoKSk7XG4iOworICAgICAgICAgICAgICAg
ICRyb290U3RyaW5nICA9ICIgICAgRnJhbWUqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJm
YWNlTmFtZX0tPndyYXBwZWQoKS5mcmFtZSgpKTtcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RT
dHJpbmcgLj0gIiAgICBpZiAoIXJvb3QpXG4iOwogICAgICAgICAgICAgICAgICRyb290U3RyaW5n
IC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChHZXRH
ZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsRG9jdW1lbnQiKSB7Ci0gICAg
ICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBEb2N1bWVudCogcm9vdCA9IFdURjo6Z2V0
UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmRvY3VtZW50KCkpO1xuIjsKKyAgICAgICAg
ICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0gV1RGOjpnZXRQdHIo
anMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkuZG9jdW1lbnQoKSk7XG4iOwogICAgICAgICAg
ICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFyb290KVxuIjsKICAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iOwogICAgICAgICAgICAg
fSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbEVsZW1l
bnRSb290IikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1lbnQuaCJ9ID0g
MTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20uaCJ9ID0gMTsK
LSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBX
VEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5lbGVtZW50KCkpO1xuIjsKKyAg
ICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBXVEY6
OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5lbGVtZW50KCkpO1xuIjsKICAg
ICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgIGlmICghZWxlbWVudClcbiI7CiAgICAg
ICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAg
ICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpy
b290KGVsZW1lbnQpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJDYW52YXNSZW5kZXJpbmdDb250ZXh0IikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkVsZW1lbnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05v
ZGVDdXN0b20uaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZv
aWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmNhbnZh
cygpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290
ID0gV2ViQ29yZTo6cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5jYW52YXMoKSk7
XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJm
YWNlKSBlcSAiSW1wbE93bmVyTm9kZVJvb3QiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siRWxlbWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpT
Tm9kZUN1c3RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAg
dm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkub3du
ZXJOb2RlKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQq
IHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLm93bmVy
Tm9kZSgpKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRyb290
U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoJmpzJHtpbnRlcmZhY2VO
YW1lfS0+aW1wbCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2
b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdCgmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkp
O1xuIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRy
b290U3RyaW5nKTsKQEAgLTMxMDIsNyArMzEwMiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50
ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBl
cldvcmxkKj4oY29udGV4dCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKSwganMke2lu
dGVyZmFjZU5hbWV9KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bmNh
Y2hlV3JhcHBlcih3b3JsZCwgJmpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLCBqcyR7aW50
ZXJmYWNlTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
ICAgICB9CiAKQEAgLTMxOTcsNyArMzE5Nyw3IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiRpbXBsVHlwZSogJHtjbGFzc05hbWV9Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZh
bHVlKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRvKiB3cmFwcGVyID0gIiAuIEdldENhc3RpbmdI
ZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIih2YWx1ZSkpXG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpO1xuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbnVs
bHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwogICAgIH0KQEAg
LTQyNDAsNyArNDI0MCw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgICAgIGlmICgk
c2VsZklzVGVhck9mZlR5cGUpIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
U1ZHTWF0cml4VGVhck9mZi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgICAgICAjIEZJ
WE1FOiBCbGluazogRG9uJ3QgY3JlYXRlIGEgbmV3IG9uZSBldmVyeXRpbWUgd2UgYWNjZXNzIHRo
ZSBtYXRyaXggcHJvcGVydHkuIFRoaXMgbWVhbnMsIGUuZywgPT09IHdvbid0IHdvcmsuCi0gICAg
ICAgICAgICAgICAgJHZhbHVlID0gIlNWR01hdHJpeFRlYXJPZmY6OmNyZWF0ZShjYXN0ZWRUaGlz
LT5pbXBsKCksICR2YWx1ZSkiOworICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJTVkdNYXRyaXhU
ZWFyT2ZmOjpjcmVhdGUoY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCAkdmFsdWUpIjsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1N0YXRp
Y1Byb3BlcnR5VGVhck9mZi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgICAgICAkdGVh
ck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1Byb3BlcnR5VGVhck9m
ZjwkaW50ZXJmYWNlTmFtZSwgLzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5k
ZXggOTllMTIyZDNkNzU0MWEyZjU2YTAxOWUwMGQ5OTRhYmNlY2Q0MzJhZC4uYjBkMTJjMzg5M2Fm
ZTI3YjQ0YjcyNTg4MDIyMWU3ODM5Y2ZhNzI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKQEAgLTE0OSw5ICsxNDksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVE
T01PYmplY3RFeGNpdGluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsbwogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihzbG90
QmFzZSk7Ci0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBw
ZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5l
eGNpdGluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtMTYyLDcgKzE2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiwgRW5jCiAgICAgSlNUZXN0QWN0
aXZlRE9NT2JqZWN0KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWRvbU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBkb21PYmplY3Qt
PmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTE3OSw5ICsxNzksOSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9u
RXhjaXRpbmdGdW5jdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJl
eGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7Ci0gICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmlt
cGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgTm9kZSogbmV4dENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDApKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoRQogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJwb3N0TWVzc2FnZSIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmluZyBtZXNz
YWdlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpA
QCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkCiB7CiAgICAgYXV0byog
anNUZXN0QWN0aXZlRE9NT2JqZWN0ID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KGhh
bmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxE
T01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpz
VGVzdEFjdGl2ZURPTU9iamVjdC0+aW1wbCgpLCBqc1Rlc3RBY3RpdmVET01PYmplY3QpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0QWN0aXZlRE9NT2JqZWN0LT53cmFwcGVkKCks
IGpzVGVzdEFjdGl2ZURPTU9iamVjdCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCkBAIC0yNjksNyArMjY5LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE8KIFRlc3RBY3Rp
dmVET01PYmplY3QqIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
QWN0aXZlRE9NT2JqZWN0Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwo
KTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDA5ZDZhYWI4MjRlMTFkN2NlNGM5
ZDcxOWQ3ZmY5YjljZGRiZDkyZTAuLmNhYWRiYzFmMGI1N2RkNTEwZWJiYWUwNmM4YTBkMzExZTk1
MDU0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25lcjo6ZmluYWxp
emUoSlNDOjpIYW5kbGU8SlNDCiB7CiAgICAgYXV0byoganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYg
d29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5j
YWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdC0+aW1wbCgpLCBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdC0+d3JhcHBlZCgpLCBqc1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCkBAIC0xODQsNyArMTg0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tQ28KIFRlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndy
YXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
CmluZGV4IDM3YzFlNTgxMmY0MWE1NTI1NTQ5ZjM0MDMzMWU1ZjhlNzY5YjUwNjkuLjk5NGYzNjZl
ZjQ0YzFlODQwOTk2OWFhODAzMGE0OTgyNDRiOTZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJG
dW5jCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhlckZ1
bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RDdXN0b21OYW1lZEdldHRlcjo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBTdHJpbmcgc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
CiB7CiAgICAgYXV0byoganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPSBqc0Nhc3Q8SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29y
bGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21OYW1lZEdldHRlci0+aW1wbCgpLCBqc1Rlc3RD
dXN0b21OYW1lZEdldHRlcik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0
b21OYW1lZEdldHRlci0+d3JhcHBlZCgpLCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlcik7CiB9CiAK
ICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNTQsNyArMjU0LDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0Q3VzdG9tTmEKIFRlc3RDdXN0b21OYW1lZEdldHRlciogSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4odmFsdWUp
KQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAxYTlmZWE3YzExN2M3MDRmYTNiYzY2M2I0ZjM1MGMy
M2E4Njk4MzhkLi44ZGY5MmQ5ZmQxODczNTNjMjdmZjYwMzlkYWE4Y2I4NDIwOWQwMWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0
cnVjdG9yIiwgImF0dHIxIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHIxKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29u
c3RydWN0b3IiLCAiYXR0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjIoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjE0LDcgKzIxNCw3IEBA
IHZvaWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNUZXN0RXZlbnRDb25zdHJ1
Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oaGFuZGxlLnNsb3QoKS0+YXND
ZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+
KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci0+aW1wbCgpLCBqc1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICB1bmNhY2hlV3JhcHBl
cih3b3JsZCwgJmpzVGVzdEV2ZW50Q29uc3RydWN0b3ItPndyYXBwZWQoKSwganNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjQs
NyArMjY0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRDb24KIFRlc3RFdmVudENvbnN0cnVjdG9y
KiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAg
ICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IGYxNzVkZGIzYmJkYTQzNjljYTI3OTdmMzJj
NDRhOTA3NWMxMTIzMmQuLjBlYjE1MGZkZTVmNWVhZWM0NzdjNWIzOTU2MmFiZDJkYWE3NzUxNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTQ1LDEwICsxNDUsMTAgQEAgYm9vbCBK
U1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogc3RhdGUsIFAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2
ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9u
YWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpKSB7CisgICAgaWYg
KG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gb3B0aW9uYWxJbmRl
eC52YWx1ZSgpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gRG9udERlbGV0ZSB8IFJl
YWRPbmx5OwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRv
SlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCku
aXRlbShpbmRleCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1
dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+
d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICBpZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEV2ZW50VGFyZ2V0LCBCYXNlPihzdGF0ZSwg
SlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
QEAgLTE3MSw5ICsxNzEsOSBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogcwogewogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAoaW5kZXggPCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
cyA9IERvbnREZWxldGUgfCBSZWFkT25seTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
dGhpc09iamVjdC0+aW1wbCgpLml0ZW0oaW5kZXgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgYXR0cmlidXRlcywgdG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCksIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tKHN0YXRlLCBpbmRleCk7CkBAIC0xOTksMTAgKzE5OSwxMCBAQCB2b2lkIEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogc3RhdGUsCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRh
cmdldCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+
aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBjb3VudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGkpKTsK
ICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT5pbXBsKCkuc3VwcG9ydGVkUHJvcGVy
dHlOYW1lcygpKQorICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBwcm9wZXJ0eU5hbWUpKTsK
ICAgICB9CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBzdGF0ZSwg
cHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0yMjAsNyArMjIwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVj
U3RhdGUqIHMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJpdGVtIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdl
dDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IHRvVUludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pOwpAQCAtMjM3LDcgKzIzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0RXZlbnRUYXJnZXQiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0
ZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI1Miw3
ICsyNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0
UHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbgogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEV2ZW50VGFyZ2V0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50
KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yNjcsNyArMjY3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1
bmN0aW9uRGlzcGF0Y2hFdmVudChFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdl
dCIsICJkaXNwYXRjaEV2ZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTI4NSwxMyArMjg1LDEzIEBA
IHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2
ZW50VGFyZ2V0Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Ci0gICAgdGhpc09iamVjdC0+aW1wbCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9y
KTsKKyAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0
b3IpOwogfQogCiBib29sIEpTVGVzdEV2ZW50VGFyZ2V0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byoganNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8
SlNUZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgaWYgKGpz
VGVzdEV2ZW50VGFyZ2V0LT5pbXBsKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgIGlm
IChqc1Rlc3RFdmVudFRhcmdldC0+d3JhcHBlZCgpLmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0T3du
ZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjbwog
ewogICAgIGF1dG8qIGpzVGVzdEV2ZW50VGFyZ2V0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0RXZlbnRUYXJnZXQtPmltcGwoKSwganNUZXN0RXZlbnRUYXJnZXQpOworICAgIHVu
Y2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRUYXJnZXQtPndyYXBwZWQoKSwganNUZXN0
RXZlbnRUYXJnZXQpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMzUx
LDcgKzM1MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV2ZW50VGFyCiBUZXN0RXZlbnRUYXJnZXQqIEpT
VGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRp
b24uY3BwCmluZGV4IDM1ZGEwZTc1OWU0ODM5YjEyM2Y5ZTUyM2NkZDI2MTU5ZjE5MmExZTUuLmNh
ZDZlOTlkZTRjNTAxMzA4NzllMTM1MDAyNjJkYjA5MDlhYTAwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRp
b24uY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9u
TmFtZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oc2xvdEJhc2UpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uT3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250CiB7CiAg
ICAgYXV0byoganNUZXN0RXhjZXB0aW9uID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dEV4Y2VwdGlvbi0+aW1wbCgpLCBqc1Rlc3RFeGNlcHRpb24pOworICAgIHVuY2FjaGVXcmFwcGVy
KHdvcmxkLCAmanNUZXN0RXhjZXB0aW9uLT53cmFwcGVkKCksIGpzVGVzdEV4Y2VwdGlvbik7CiB9
CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yMTksNyArMjE5LDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0RXhjZXB0aW8KIFRlc3RFeGNlcHRpb24qIEpTVGVzdEV4Y2VwdGlvbjo6dG9X
cmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndy
YXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcAppbmRleCA1NzNhMDkwYWNmN2E4NzBlMGJiNzE5YmZmN2YxNWMxOWNlMWU2MzU4Li5jNzQw
NmFjMTk1NGU5MDkyYmE1NWYzMjRhZjFiY2UxZDVjZGNjZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgSlNWYWx1ZSBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWwKIGJvb2wgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIGpzVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUgPSBqc0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KGhhbmRsZS5zbG90
KCktPmFzQ2VsbCgpKTsKLSAgICBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogcm9vdCA9ICZqc1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLT5pbXBsKCk7CisgICAgVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUqIHJvb3QgPSAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+d3JhcHBlZCgpOwogICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKIH0KIApAQCAtMTMxLDcgKzEz
MSw3IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwKIHsKICAgICBhdXRvKiBqc1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLT5pbXBsKCksIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwor
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+d3Jh
cHBlZCgpLCBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKIH0KIAogI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKQEAgLTE4MSw3ICsxODEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHZW5lcmF0
ZQogVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPih2YWx1ZSkpCi0gICAgICAg
IHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRl
eCBkMmQ3YjgwMTM0OGZkNmNjNGM2MWE5MTllN2IxMjAzMGM2NmI2MTI5Li5mZDhjZWEzNWRjMmVm
ZmYwZDU0YWVlMzEzNjYxNDIyZTM1YzBiYzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAt
NDYyLDcgKzQ2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNT
dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c1N0cjEiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwuaW1wbGVtZW50c1N0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtNDgxLDcgKzQ4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVtZW50c1N0cjIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNTEyLDcgKzUxMiw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1w
bGVtZW50c05vZGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcGwuaW1wbGVtZW50c05vZGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTU1NSw3ICs1NTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VTdXBwbGVtZW50YWxTdHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90Qgog
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3Ry
MSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3Ry
MSgmaW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTU3
NCw3ICs1NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxT
dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QgogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbFN0cjIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMigmaW1wbCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTYwNSw3ICs2MDUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTm9kZSgmaW1wbCkp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC02NjYsNyArNjY2
LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTcwMiw3
ICs3MDIsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBOb2RlKiBu
YXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzM3LDcgKzczNyw3
IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzczLDcg
Kzc3Myw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBOb2RlKiBu
YXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzk1LDcgKzc5NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShFCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJm
YWNlIiwgImltcGxlbWVudHNNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGltcGwuaW1wbGVtZW50c01ldGhvZDEoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtODEwLDcgKzgxMCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMihFCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC04NjEsNyArODYxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVu
dGFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0
U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKCZpbXBsKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtODc2LDcgKzg3Niw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25T
dXBwbGVtZW50YWxNZXRob2QyCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbE1ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTkyMiw3ICs5MjIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRobwogYm9vbCBKU1Rlc3RJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiBqc1Rlc3RJbnRlcmZhY2UgPSBq
c0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGlm
IChqc1Rlc3RJbnRlcmZhY2UtPmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICBpZiAo
anNUZXN0SW50ZXJmYWNlLT53cmFwcGVkKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFs
c2U7CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2VPd25lcjo6ZmluYWxp
emUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnQKIHsKICAgICBh
dXRvKiBqc1Rlc3RJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0SW50
ZXJmYWNlLT5pbXBsKCksIGpzVGVzdEludGVyZmFjZSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3RJbnRlcmZhY2UtPndyYXBwZWQoKSwganNUZXN0SW50ZXJmYWNlKTsKIH0KIAog
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50ZXJmYWNlKiBpbXBsKQpAQCAtOTYxLDcgKzk2
MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdEludGVyZmFjCiBUZXN0SW50ZXJmYWNlKiBKU1Rlc3RJbnRl
cmZhY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBl
ZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMWY0MGNjZGU1ZDJhY2NkYTUzNWExODBhNmZmNWQx
MjNhZTJmZjc2NS4uZDA2MTFlNWVlY2E1NzZlODc5MjdjOTY0YTIyMGU5N2E1YWU2NzA5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1l
bnQoMCkuaXNGdW5jdGlvbigpKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsCiB7CiAgICAgYXV0byoganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA9IGpzQ2Fz
dDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci0+aW1wbCgpLCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKKyAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwgJmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXItPndyYXBwZWQoKSwg
anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCkBAIC0yMDYsNyArMjA2LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWVkaWFRdWUKIFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0
b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odmFsdWUpKQotICAg
ICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcAppbmRleCA2MWRlMzkyNGFiOWMyNDcxOTEwYmJhM2RiNDI0MzA4MzNjYzA1
N2UwLi5jOGE2MTY0NmI4MmRkOTFhNWM2Mzc5MjZhZDU0M2Y5YTFiMjgwM2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgSlNWYWx1ZSBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXROYW1lZENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2IKIGJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIGpzVGVzdE5hbWVkQ29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKLSAgICBpZiAoanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgpLmhhc1BlbmRp
bmdBY3Rpdml0eSgpKQorICAgIGlmIChqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53cmFwcGVkKCku
aGFzUGVuZGluZ0FjdGl2aXR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFVOVVNFRF9Q
QVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzMsNyArMTczLDcgQEAgdm9p
ZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9y
ID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZENvbnN0cnVjdG9y
LT5pbXBsKCksIGpzVGVzdE5hbWVkQ29uc3RydWN0b3IpOworICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCAmanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZENvbnN0
cnVjdG9yKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTIyMyw3ICsy
MjMsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZENvbgogVGVzdE5hbWVkQ29uc3RydWN0b3IqIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0
b3IqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwCmluZGV4IDc5Y2Q1MWI0OTdiZjg5N2MwMTk5N2QwNWIyZTJmNjQ5MmQxMGQ3ZWYuLmQw
ZWFhMzE3ODhmNzAxMjk2ZGYwMWYwZGMwMjUwNjMwOWQ3NGQxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAg
LTEyNiw3ICsxMjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbAogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0Tm9kZSIsICJuYW1l
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9k
ZSIsICJuYW1lIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgc2V0
SlNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0Tm9kZSIsICJuYW1lIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRl
KS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBKU1Rlc3ROb2RlOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROb2RlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdGhpc09iamVjdC0+aW1wbCgpLnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkudmlz
aXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCmluZGV4IDhmZDBkM2Qy
MmNkNDVkNzljY2E3Y2NhYTNhZGJhMTM3ZDgwNjc5MDUuLjBjNzJhMzFiZGI2YmNiZjliMTdhN2Q2
YmMxMTllNWIzNDg0NjAwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlND
OjpTbG90VmlzaXRvciYpOwogCi0gICAgVGVzdE5vZGUmIGltcGwoKSBjb25zdAorICAgIFRlc3RO
b2RlJiB3cmFwcGVkKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
ZXN0Tm9kZSY+KEJhc2U6OmltcGwoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0
Tm9kZSY+KEJhc2U6OndyYXBwZWQoKSk7CiAgICAgfQogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5v
ZGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0Tm9kZT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggNWMwYTU3YTdjMWUzNjdl
MmUwMTFmYmZlNjU5YzI5OWI4ZjFiOTk5ZC4uMTkyYWUwOGFiY2I0NDRjZTVmMzBjMjY2MTk0Mjdk
OTM0ODc0MWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAtMTUy
LDcgKzE1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0ZSogc3RhCiAgICAgSW5wdXRDdXJzb3ImIGN1
cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0
aWMubm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAgICAgICBp
bnQgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJtaW5pc3RpY1Jl
YWRvbmx5QXR0cigpOworICAgICAgICBpbnQgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cigpOwogICAgICAgICBjdXJzb3Iu
YXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8aW50Pj4oYmluZGluZ05hbWUuZ2V0KCkuc3Ry
aW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihtZW1vaXplZFJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cihFeGVjU3RhdGUqIHN0YQogICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE4OSw3ICsxODksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRl
YWJsZUF0dHIoRXhlY1N0YXRlKiBzdAogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxP
YmplY3QtPmlucHV0Q3Vyc29yKCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gYmluZGluZ05hbWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWlu
aXN0aWNXcml0ZWFibGVBdHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXpl
ZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
cigpOworICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCkubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoKTsKICAgICAgICAgY3Vyc29yLmFwcGVu
ZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmluZz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmlu
ZygpLCBtZW1vaXplZFJlc3VsdCwgMCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3Rh
dGUqIHN0CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5ub25kZXRl
cm1pbmlzdGljV3JpdGVhYmxlQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3QKICAg
ICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJp
bmcoKSkgewotICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBs
KCkubm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoKTsKKyAgICAgICAgU3RyaW5nIG1lbW9p
emVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNFeGNlcHRp
b25BdHRyKCk7CiAgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxT
dHJpbmc+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwog
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBtZW1vaXpl
ZFJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI0
MSw3ICsyNDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdAogICAgICAgICB9CiAgICAgfQog
I2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjY0LDcgKzI2NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
R2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhCiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGds
b2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0
ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3Ry
aW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyKGVjKTsKKyAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
KGVjKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmlu
Zz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgZWMpOwogICAg
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBtZW1vaXplZFJl
c3VsdCk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtMjgxLDcgKzI4
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihlYykp
OwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKQEAgLTMwNCw3ICszMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
b25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0
YQogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05h
bWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25B
dHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNv
ci5pc0NhcHR1cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKS5ub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cigpOworICAg
ICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElu
cHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmluZz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygp
LCBtZW1vaXplZFJlc3VsdCwgMCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMzE5LDcgKzMxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVj
U3RhCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1p
bmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlMK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zNjUsNyArMzY1LDcg
QEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlv
bkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNl
cHRpb25BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGEKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC00MDUsNyArNDA1
LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNT
ZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNDI3LDcgKzQyNyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0
aW9uTm9uZGV0ZXJtaW5pCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdDsKICNpZiBFTkFCTEUoV0VC
X1JFUExBWSkKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+aW5wdXRDdXJzb3IoKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIEpTVGVzdE5v
bmRldGVybWluaXN0aWNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaQogewogICAgIGF1dG8qIGpzVGVzdE5vbmRldGVybWluaXN0aWMgPSBqc0Nhc3Q8
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5vbmRldGVybWluaXN0aWMtPmltcGwoKSwg
anNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rl
c3ROb25kZXRlcm1pbmlzdGljLT53cmFwcGVkKCksIGpzVGVzdE5vbmRldGVybWluaXN0aWMpOwog
fQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtNTEyLDcgKzUxMiw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdE5vbmRldGVyCiBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4
IGZjN2FhZDNhMjQ2ZDExNzE4YjgyNGQ1NDhiYTM1MTdmMmRlODAwYTguLmQ3ZDNiMDRmOGM0NTQ0
NzgyYjNhYTc1NTJhNjM5NjMxOTY3MWNiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03MzYsNyArNzM2LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InJlYWRPbmx5TG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZWFkT25seUxvbmdBdHRyKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTc1Myw3ICs3NTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5U3RyaW5nQXR0ciIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFk
T25seVN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZE9ubHlTdHJpbmdB
dHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTc3MCw3
ICs3NzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5VGVz
dE9iakF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5yZWFkT25seVRlc3RPYmpBdHRyKCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04MTIsOSArODEyLDkgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAgaWYgKCFjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUo
KSkKKyAgICBpZiAoIWNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFNldHRpbmdzJiBzZXR0aW5n
cyA9IGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpLT5zZXR0aW5ncygpOworICAgIFNldHRpbmdz
JiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpOwog
ICAgIGlmICghc2V0dGluZ3MudGVzdFNldHRpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSkpOwpAQCAtODMyLDcgKzgzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IGltcGwuZW51bUF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtODQ5LDcgKzg0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Ynl0ZUF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlQXR0cigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04NjYsNyArODY2LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwub2N0ZXRBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTg4Myw3ICs4ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNo
b3J0QXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5zaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTAwLDcgKzkwMCw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNo
b3J0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkU2hvcnRBdHRyKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTkxNyw3ICs5MTcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKUwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9u
Z0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTM0
LDcgKzkzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0xvbmdB
dHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdMb25nQXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05NTEsNyArOTUxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNp
Z25lZExvbmdMb25nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTk2OCw3ICs5NjgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0
ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTk4NSw3ICs5ODUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnRlc3RPYmpB
dHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDAy
LDcgKzEwMDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0
dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiWE1MT2JqQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC54bWxPYmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC0xMDE5LDcgKzEwMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuaXNDcmVhdGUoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTAzNiw3ICsxMDM2LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZmFzdEdl
dEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA1Myw3ICsxMDUz
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmEKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA3MCw3ICsxMDcwLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZElu
dGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1h
eCgwLCBpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTEwODcsNyArMTA4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0
dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZGJvb2xlYW5hdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTExMDQsNyArMTEwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxl
Y3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3Rl
ZHVybGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtMTEyMSw3ICsxMTIxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3Ry
aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNv
bnRlbnRTdHJpbmdBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTExMzgsNyArMTEzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxl
Y3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTExNTUsNyArMTE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Q3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTcyLDcgKzExNzIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBzbG90QgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkQ3VzdG9tVVJMQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTg5LDcgKzExODksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuYwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVk
QXJyYXlBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXBsLnR5cGVkQXJyYXlBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTIyNSw3
ICsxMjI1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3QKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTEyNDMsNyArMTI0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJp
Y3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0
dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
aW1wbC5zdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEzMDYsNyArMTMwNiw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm9uZm9vIik7CiAgICAgfQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShldmVudEhhbmRsZXJBdHRyaWJ1dGUoY2FzdGVkVGhpcy0+
aW1wbCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFt
ZXMoKS5mb29FdmVudCkpOwogfQogCiAKQEAgLTEzMjEsNyArMTMyMSw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgq
c3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMzM4
LDcgKzEzMzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0
ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLAogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNh
bGxXaXRoQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhB
dHRyaWJ1dGUoKnN0YXRlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICBhdXRv
KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNj
cmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCkpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplYwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgZWMp
KSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRl
KiBzdGEKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29u
dGV4dCwgZWMpKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQxOSw3ICsxNDE5LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3QKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcygKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcygqc3RhdGUsIHNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihz
dGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0NjEs
NyArMTQ2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmliCiAgICAgYXV0byogc2NyaXB0Q29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29u
dGV4dCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDc4
LDcgKzE0NzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDk2LDcg
KzE0OTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFs
QXR0cjEiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUxNSw3ICsxNTE1
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1MzQsNyArMTUzNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
b25kaXRpb25hbEF0dHIzIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTkwLDcgKzE1OTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9
IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gKGltcGwuY2FjaGVkQXR0cmlidXRlMSgpLmhhc05vVmFsdWUoKSA/IGpz
TnVsbCgpIDogaW1wbC5jYWNoZWRBdHRyaWJ1dGUxKCkuanNWYWx1ZSgpKTsKICAgICBjYXN0ZWRU
aGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTEuc2V0KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1
bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2MTAsNyArMTYx
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNh
Y2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5jYWNoZWRBdHRyaWJ1dGUyKCkuaGFzTm9W
YWx1ZSgpID8ganNOdWxsKCkgOiBpbXBsLmNhY2hlZEF0dHJpYnV0ZTIoKS5qc1ZhbHVlKCkpOwog
ICAgIGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMi5zZXQoc3RhdGUtPnZtKCksIGNhc3Rl
ZFRoaXMsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTYyOCw3ICsxNjI4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlB
dHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBsLmFueUF0dHJpYnV0ZSgpLmhhc05vVmFsdWUoKSA/
IGpzTnVsbCgpIDogaW1wbC5hbnlBdHRyaWJ1dGUoKS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2NDAsNyArMTY0MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KHNsb3RCYXNlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5jb250ZW50RG9jdW1l
bnQoKSkgPyB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC5jb250ZW50RG9jdW1lbnQoKSkpIDoganNOdWxsKCkpOwogfQogCkBAIC0xNjU2LDcg
KzE2NTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZAogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2lu
dCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBTVkdQb2ludD46OmNy
ZWF0ZShpbXBsLCBpbXBsLm11dGFibGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBv
aW50KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2NzMs
NyArMTY3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxl
UG9pbnQiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBs
LmltbXV0YWJsZVBvaW50KCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdi
ZXJyeShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ibHVlYmVycnkoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTcwNyw3ICsxNzA3LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
Y3RGbG9hdCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnN0cmljdEZsb2F0KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3MjQsNyArMTcyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5k
ZXNjcmlwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiaWQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5pZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xNzU4LDcgKzE3NTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNo
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdQogICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImhhc2giKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiaGFzaCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5oYXNoKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3NzUsNyArMTc3NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1
dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzkzLDcg
KzE3OTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CkBAIC0xODEzLDcgKzE4MTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYQogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJudWxsYWJsZUxvbmdBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051bGwg
PSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxs
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4MzMsNyAr
MTgzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0
dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4NTMsNyArMTg1Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNO
dWxsID0gZmFsc2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNO
dWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bGwoKSk7CkBAIC0xODczLDcgKzE4NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJu
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9
IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwubnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYg
KGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0x
ODk0LDcgKzE4OTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1Zh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgIH0KICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVTdHJp
bmdWYWx1ZShpc051bGwsIGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAg
ICAgaWYgKGlzTnVsbCkKQEAgLTE5MTQsNyArMTkxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgaW1wbC5hdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtMTkzMSw3ICsxOTMxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2
ZWRFbnVtVHlwZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2
ZWRFbnVtVHlwZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xOTQ4LDcgKzE5NDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1
dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnB1dEZvcndhcmRzQXR0cmli
dXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTY1
LDcgKzE5NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndh
cmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5wdXRGb3J3
YXJkc051bGxhYmxlQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0yMDE1LDcgKzIwMTUsNyBAQCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQog
ICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVt
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjAzNyw3ICsyMDM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50
OF90IG5hdGl2ZVZhbHVlID0gdG9JbnQ4KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIwNTcsNyArMjA1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1CiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1aW50
OF90IG5hdGl2ZVZhbHVlID0gdG9VSW50OChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0yMDc3LDcgKzIwNzcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50
MTZfdCBuYXRpdmVWYWx1ZSA9IHRvSW50MTYoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2QKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRT
aG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgdWludDE2X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMTE3LDcgKzIxMTcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakxv
bmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJsb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIxMzcsNyArMjEzNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNW
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxv
bmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b0ludDY0KHN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTIxNTcsNyArMjE1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
VW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QsIEVuCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRv
VUludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNzcsNyArMjE3
Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0g
dmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxOTcsNyArMjE5Nyw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuY29kZWRKU1ZhbAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjM3LDcgKzIyMzcsNyBAQCB2b2lkIHNldEpTVGVz
dE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJjcmVhdGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTIyNTcsNyArMjI1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmlu
Z0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUs
IHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEUK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVm
bGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI5Nyw3ICsyMjk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbmF0aXZlVmFsdWUgPSB0
b1VJbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzE3LDcgKzIz
MTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMzNyw3ICsyMzM3LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzU3LDcgKzIz
NTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRp
dmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAg
LTIzNzcsNyArMjM3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUlu
dGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIzOTcsNyArMjM5Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4o
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm47CkBAIC0yNDE3LDcgKzI0MTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxs
Q2hlY2soc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQzNyw3ICsyNDM3LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVj
dCwgRW5jb2RlZEoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbmF0aXZlVmFsdWUgPSB0
b0Zsb2F0MzJBcnJheSh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0NTcsNyArMjQ1Nyw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmplY3QsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ3Nyw3ICsyNDc3LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpA
QCAtMjQ5OSw3ICsyNDk5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52
YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI1MTksNyArMjUxOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJh
c2VPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0
cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMjU0MSw3ICsyNTQx
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWSghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlNU
ZXN0T2JqOjppbmZvKCkpKSkgewogICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIsICJUZXN0T2JqIik7
CiAgICAgICAgIHJldHVybjsKQEAgLTI1NzcsNyArMjU3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
T25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm9uZm9vIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0RXZlbnRIYW5kbGVy
QXR0cmlidXRlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPmltcGwoKSwgZXZlbnRO
YW1lcygpLmZvb0V2ZW50LCB2YWx1ZSk7CisgICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKCpz
dGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgZXZlbnROYW1lcygpLmZv
b0V2ZW50LCB2YWx1ZSk7CiB9CiAKIApAQCAtMjU5Myw3ICsyNTkzLDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmplY3QKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxMyw3ICsyNjEzLDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0yNjMzLDcgKzI2MzMsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY1Niw3ICsyNjU2LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2UKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNjc2LDcgKzI2NzYsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjY5OSw3ICsyNjk5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3QKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcyMiw3ICsyNzIyLDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKEV4ZWNTdGEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjc0NSw3ICsyNzQ1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiog
bmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NjgsNyAr
Mjc2OCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI3ODksNyArMjc4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRp
dGlvbmFsQXR0cjEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yODExLDcgKzI4MTEsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29k
ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
b25kaXRpb25hbEF0dHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjgzMyw3ICsyODMzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBF
bmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4OTksNyArMjg5OSw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBF
bmNvZGVkSlNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImFueUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZSA9IHsg
c3RhdGUtPnZtKCksIHZhbHVlIH07CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MTksNyArMjkxOSw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmNvZGVkSlNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVW
YWx1ZSA9IEpTU1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MzksNyArMjkzOSw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxT
VkdQb2ludD4qIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjk1OSw3ICsyOTU5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0
aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI5NzksNyArMjk3OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGZsb2F0IG5h
dGl2ZVZhbHVlID0gdmFsdWUudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5OTksNyArMjk5OSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzAzNiw3ICszMDM2LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDU2LDcgKzMw
NTYsNyBAQCB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVW
YWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA3
Niw3ICszMDc2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVk
RW51bVR5cGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTMwOTgsNyArMzA5OCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2Fy
ZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZv
cndhcmRzQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmPFRlc3RO
b2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLnB1dEZvcndhcmRzQXR0cmli
dXRlKCk7CisgICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7CiAgICAgYXV0byYgaW1wbCA9IGZvcndhcmRl
ZEltcGwuZ2V0KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3Rh
dGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCkBAIC0zMTE5LDcgKzMxMTksNyBAQCB2b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVs
bGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYgogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJk
c051bGxhYmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmUHRy
PFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLnB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGUoKTsKKyAgICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwog
ICAgIGlmICghZm9yd2FyZGVkSW1wbCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIGltcGwg
PSAqZm9yd2FyZGVkSW1wbDsKQEAgLTMxNDIsNyArMzE0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0
ZSogc3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2QiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC52b2lkTWV0aG9kKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTMxNTQsNyArMzE1NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZv
aWRNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGludCBsb25nQXJnID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3Jt
YWxDb252ZXJzaW9uKTsKQEAgLTMxNzcsNyArMzE3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVNZXRob2QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5
dGVNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MzE4OSw3ICszMTg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50OF90IGJ5dGVBcmcgPSB0b0ludDgoc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMjEyLDcgKzMyMTIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0
ZXRNZXRob2QoRXhlY1N0YXRlKiBzdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3Rl
dE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwub2N0ZXRNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtMzIyNCw3ICszMjI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3Mo
RXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIHVpbnQ4X3Qgb2N0ZXRB
cmcgPSB0b1VJbnQ4KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OwpAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMjU5LDcgKzMyNTks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwg
Tm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMjgyLDcgKzMyODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0
ZSogc3RhdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5vYmpNZXRob2QoKSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMyOTQsNyArMzI5
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm9iak1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgaW50IGxvbmdBcmcgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCks
IE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzMxNyw3ICszMzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFNlcXVlbmNl
QXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFJl
ZlB0cjxTY3JpcHRQcm9maWxlPj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxT
Y3JpcHRQcm9maWxlLCBKU1NjcmlwdFByb2ZpbGU+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCks
ICZKU1NjcmlwdFByb2ZpbGU6OnRvV3JhcHBlZCkpOwpAQCAtMzMzNCw3ICszMzM0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFJldHVybmluZ1NlcXVlbmNlKEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9k
UmV0dXJuaW5nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zMzUxLDcgKzMzNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhl
Y1N0YQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIC8vIEtlZXAgcG9pbnRlciB0
byB0aGUgSlNTdHJpbmcgaW4gYSBsb2NhbCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlZiB0aGUgU3Ry
aW5nLgpAQCAtMzM3Miw3ICszMzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1
bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdz
Q291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkg
ewpAQCAtMzQwMSw3ICszNDAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwpAQCAtMzQyNCw3ICszNDI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCksIDAsIDApOwpAQCAtMzQ0MSw3ICszNDQxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmpl
Y3QoRXhlY1N0YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvcHRpb25zT2JqZWN0
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRGljdGlvbmFyeSBv
byA9IHsgc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSB9OwpAQCAtMzQ2MSw3ICszNDYxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb24oRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0
aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtMzQ5NSw3ICszNDk1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVN
ZXRob2QoRXhlY1N0YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwcml2YXRlTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIGFy
Z3VtZW50ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUp
OwpAQCAtMzUxMiw3ICszNTEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwog
ICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTI3LDcgKzM1MjcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3Zl
RXZlbnRMaXN0ZW5lcihFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZW1vdmVF
dmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
bGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5l
ci5pc09iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTM1NDIsNyArMzU0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNTCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTM1NTQs
NyArMzU1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmooRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0ZU9iaigqc3RhdGUpKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTY4LDcgKzM1NjgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlVm9pZEV4Y2VwdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2Ny
aXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGltcGwud2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2Vw
dGlvbigqc3RhdGUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTM1
ODIsNyArMzU4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXBsLndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigqc3RhdGUsIGVjKSkpOwogCkBAIC0z
NTk5LDcgKzM1OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjE0LDcgKzM2MTQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2MjksNyArMzYyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogc2NyaXB0Q29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpA
QCAtMzY0OSw3ICszNjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byogc2Ny
aXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRD
b250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMzY2Niw3ICszNjY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWwKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1
bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhz
dGF0ZSwgMCkpOwogICAgIGltcGwud2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayhzY3Jp
cHRBcmd1bWVudHMucmVsZWFzZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMzY3OSw3ICszNjc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGUK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRl
LT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zNzAxLDcg
KzM3MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM3MjMsNyArMzcyMyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbk9wdCA9IHRvSW50MzIoc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNzUwLDcgKzM3NTAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9uT3B0ID0gdG9JbnQzMihzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM3ODUsNyArMzc4NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
IAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlm
IChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzgwNyw3ICszODA3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0EKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAg
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFy
Z3NDb3VudCA8PSAwKSB7CkBAIC0zODI5LDcgKzM4MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcg
c3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg0NCw3ICszODQ0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/
IFN0cmluZygpIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg1OSw3
ICszODU5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAg
LTM4NzYsNyArMzg3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbkNhbGxiYWNr
ID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsK
QEAgLTM4OTYsNyArMzg5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxi
YWNrOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
ICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAg
LTM5MTQsNyArMzkxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCku
aXNGdW5jdGlvbigpKQpAQCAtMzkzMSw3ICszOTMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0EKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGludCBub25DYWxsYmFjayA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zOTUxLDcgKzM5NTEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrRnVuY3RpbwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2s7CiAgICAgaWYgKCFz
dGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIXN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC0zOTkzLDcgKzM5OTMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb25kaXRpb25hbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5jb25kaXRpb25h
bE1ldGhvZDEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
NDAwOCw3ICs0MDA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVjU3QKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQwMjMsNyArNDAyMyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDMoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlv
bmFsTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmNvbmRp
dGlvbmFsTWV0aG9kMygpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CkBAIC00MDM3LDcgKzQwMzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKAogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQwNTcsNyArNDA1Nyw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDIoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBU
ZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkp
OwpAQCAtNDA4NCw3ICs0MDg0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMygKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmluZyBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQo
MCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00MTAxLDcgKzQxMDEsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2Q0KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
aW50IGxvbmdBcmcgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtNDExOCw3ICs0MTE4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNSgK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDAp
LmlzT2JqZWN0KCkpCkBAIC00MTM1LDcgKzQxMzUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2
KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGxpc3RBcmcgPSB0b0RPTVN0cmluZ0xpc3Qoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBA
IC00MTUyLDcgKzQxNTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KAogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFy
cmF5PFN0cmluZz4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MTY5LDcgKzQxNjks
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKQEAgLTQxODYsNyArNDE4Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyA9
IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQy
MDMsNyArNDIwMyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJh
eTx1bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjIwLDcgKzQyMjAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgU3RyaW5nIHN0ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKQEAgLTQyMzcsNyArNDIzNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDEyCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVmVjdG9yPEJsb2IqPiBibG9iQXJnczsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7IGkg
PCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
LmluaGVyaXRzKEpTQmxvYjo6aW5mbygpKSkKQEAgLTQyODksNyArNDI4OSw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRN
ZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcxID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3Rh
dGUtPmFyZ3VtZW50KDApKTsKQEAgLTQzMTYsNyArNDMxNiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1l
bnQoMCkpOwpAQCAtNDQzMyw3ICs0NDMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWMKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBzaG9ydCBvYmpBcmdz
U2hvcnQgPSAwOwpAQCAtNDQ2Myw3ICs0NDYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXEK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVl
bmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVu
c2lnbmVkPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDQ4MCw3ICs0NDgwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5
RnVuY3Rpb24oRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXJyYXlG
dW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwpAQCAtNDUwMCw3ICs0NTAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlv
bihFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9u
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkBAIC00NTIwLDcgKzQ1MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0
b3I8dW5zaWduZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NTQwLDcgKzQ1NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhv
dXROdWxsYQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhYmxlU2VxdWVuY2UyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDU2MCw3ICs0NTYwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0Rv
Y3VtZW50KEV4ZWNTdGF0ZSoKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZ2V0U1ZHRG9j
dW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5nZXRT
VkdEb2N1bWVudChlYykpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KTsKQEAgLTQ1NzcsNyArNDU3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVk
KHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NTk0LDcgKzQ1OTQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0
YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb252ZXJ0MiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3ROb2RlKiB2YWx1ZSA9IEpT
VGVzdE5vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDYxMSw3ICs0NjEx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSogc3RhdGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY29udmVydDQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBU
ZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDAp
KTsKQEAgLTQ2MjgsNyArNDYyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQ1Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVk
KHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NjQ1LDcgKzQ2NDUsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVu
Y3Rpb24oRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnRGdW5j
dGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQ
cm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlv
bigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ2NTcs
NyArNDY1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3Jl
YXRlKGltcGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ2NjksNyArNDY2OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRl
KiBzdGF0ZSkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3JhbmdlIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuYmFuYW5hKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQ2ODEsNyArNDY4MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RG
dW5jdGlvbihFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZ1
bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CkBAIC00NzA3LDcgKzQ3MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2Vx
dWVuYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1
ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwpAQCAtNDczMiw3ICs0NzMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5
KEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXki
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKQEAgLTQ3NTcsNyArNDc1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChFeGVjCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIGhlYWQgPSBzdGF0ZS0+
YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00Nzc3LDcgKzQ3
NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGRvdWJsZSBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0
YXRlKTsKQEAgLTQ3OTcsNyArNDc5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIE5vZGUqIGhlYWQgPSBKU05vZGU6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDgyMCw3ICs0ODIwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3Rh
dGUqIHN0YXRlKQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnkiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBmbG9hdCBhID0gc3RhdGUtPmFyZ3VtZW50
KDApLnRvRmxvYXQoc3RhdGUpOwpAQCAtNDg0Niw3ICs0ODQ2LDcgQEAgc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25Qcm9taXMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVu
Y3Rpb24oRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
cHJvbWlzZURlZmVycmVkKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KQEAgLTQ4NjQsNyArNDg2NCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRB
cmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGZsb2F0
IGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CkBAIC00ODkxLDcgKzQ4OTEs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbXBsLnRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRXhjZXB0aW9uKERlZmVycmVkV3JhcHBlcihzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oc3RhdGUsIGVjKTsKQEAgLTQ5MTEsNyArNDkxMSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0
aE9wCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
T3B0aW9uYWxJbnRBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAg
IHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdz
Q291bnQgPD0gMCkgewpAQCAtNDk0Niw3ICs0OTQ2LDcgQEAgdm9pZCBKU1Rlc3RPYmpPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
CiB7CiAgICAgYXV0byoganNUZXN0T2JqID0ganNDYXN0PEpTVGVzdE9iaio+KGhhbmRsZS5zbG90
KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE9iai0+
aW1wbCgpLCBqc1Rlc3RPYmopOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T2Jq
LT53cmFwcGVkKCksIGpzVGVzdE9iaik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCkBAIC00OTk2LDcgKzQ5OTYsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPYmoqIGltcAogVGVzdE9i
aiogSlNUZXN0T2JqOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCi0gICAgICAg
IHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGRkNTBiYTI2ZTFlYzJkMjg5MzhkMDZiMDcyZjk3
MWI1OTRjYmIzOTMuLmRlNGFiZmFjZjg0YWFmNzEwNThmM2JiZWEwOTEyOTE4ZjJlZDNmMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTIxMSw3
ICsyMTEsNyBAQCB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxp
emUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogewogICAgIGF1dG8qIGpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNf
Y2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwoKSwganNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLT53cmFwcGVkKCksIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
OwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjYxLDcgKzI2MSw3IEBA
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdE92ZXJsb2FkCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7
CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggM2Q5N2IxM2Nh
YmIwNzNkMTQxYjY0YTU5NzQ3MzI3ZjFmOGVlODZhNC4uNDFmM2YyNDkyMjExYjQ0ZGFiY2ZmOTcy
YWQyYjQyNWM3YzA2NzY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApA
QCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0CiAgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKG1v
ZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJv
cGVydHlOYW1lIDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkK
KyAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCku
c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsICJuYW1lZEl0ZW0iKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYW1lID0g
c3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IGpzQ2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+aW1wbCgp
LCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpz
VGVzdE92ZXJyaWRlQnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7
CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjEsNyArMjYxLDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0T3ZlcnJpZGUKIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFs
dWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXgg
YmM3NWQyZWE1Y2VmZmNkYzRlYTdkYjg2YWYyOWI5NDg1YzcyMTRmOC4uM2EzMjcyMWViMWU5MmJj
MTkwYTNkMGFmZWU1MjRkMTU1NjMxYzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iagogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
IiwgInZhbHVlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/
IGltcGwudmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUiKTsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwucmVh
ZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtMTczLDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgfQogICAg
IGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5jYWNoZWRWYWx1ZSgpID8g
aW1wbC5jYWNoZWRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5z
ZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBcnJheShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwucG9ydHMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMjEwLDcgKzIxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlCiAgICAg
fQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFk
b25seVZhbHVlLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZh
bHVlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmNh
Y2hlZFJlYWRvbmx5VmFsdWUoKSA/IGltcGwuY2FjaGVkUmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlh
bGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAg
ICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVlLnNldChzdGF0ZS0+dm0oKSwgY2Fz
dGVkVGhpcywgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0yMzcsNyArMjM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmEKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UiLCAidmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0y
NTcsNyArMjU3LDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDYWNoZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamUKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBA
IC0yOTAsNyArMjkwLDcgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3cKIHsKICAgICBhdXRvKiBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLT5pbXBsKCksIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7Cisg
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UtPndyYXBwZWQoKSwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsK
IH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTM0MCw3ICszNDAsNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RTZXJpYWxpegogVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkpCi0gICAgICAgIHJl
dHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggYzIz
ZGZlMmRjOTc4YTRiYTQyNjMyOGQzNDUzNjQ3MjMwMDkzMWI3Zi4uNGU0Y2ZlODVhMjA3ZWUxYTc2
ZjIzYmNjYWY4MDJjMjc5ZjFlODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0yMjAsNyAr
MjIwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2wKICAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVk
TG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNp
Z25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0yMzcsNyArMjM3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVk
ZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8g
aW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KgogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKICAg
ICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0yODMsNyArMjgzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRl
ZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBKU08KICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIp
OwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0
ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTMxOSw3ICsz
MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
biIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zNDUsNyAr
MzQ1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWMKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVm
c0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVm
cyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwg
dmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVm
c0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2IKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVm
cyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIHNl
dEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAg
LTQyNyw3ICs0MjcsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52
YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZz
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMi
LCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
U3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00NjksNyArNDY5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXQKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBl
ZGVmcyIsICJmdW5jIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBz
aXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0Nv
dW50IDw9IDApIHsKQEAgLTQ5MSw3ICs0OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgZmxvYXQgd2lkdGggPSBzdGF0ZS0+
YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CkBAIC01MzIsNyArNTMyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFNlcXVlbmNlQXIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RX
aXRoU2VxdWVuY2VBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gc2VxdWVuY2VBcmcg
PSAodG9SZWZQdHJOYXRpdmVBcnJheTxTZXJpYWxpemVkU2NyaXB0VmFsdWUsIEpTU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OnRvV3JhcHBlZCkpOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlQXJy
YXlBcmcoRXhlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFibGVBcnJh
eUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVj
dG9yPFN0cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSk7CkBAIC01NjYsNyArNTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVj
U3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jV2l0aENsYW1wIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgYXJnMSA9IDA7CkBAIC02MDMsNyArNjAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5j
dGkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0
aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RU
eXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnRG
dW5jdGlvbigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTYxNSw3ICs2MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKAogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
NjM1LDcgKzYzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
NjU1LDcgKzY1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0VHlwZWRlZnMiLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZz
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxSZWZQ
dHI8VGVzdEV2ZW50VGFyZ2V0Pj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxU
ZXN0RXZlbnRUYXJnZXQsIEpTVGVzdEV2ZW50VGFyZ2V0PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCAmSlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCkpOwpAQCAtNjcyLDcgKzY3Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMi
LCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlv
bihlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC02OTAsNyArNjkwLDcg
QEAgdm9pZCBKU1Rlc3RUeXBlZGVmc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGUKIHsKICAgICBhdXRvKiBqc1Rlc3RUeXBlZGVmcyA9
IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFR5cGVkZWZzLT5pbXBsKCksIGpzVGVzdFR5
cGVkZWZzKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFR5cGVkZWZzLT53cmFw
cGVkKCksIGpzVGVzdFR5cGVkZWZzKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKQEAgLTc0MCw3ICs3NDAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RUeXBlZGVmcwogVGVzdFR5cGVk
ZWZzKiBKU1Rlc3RUeXBlZGVmczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1
ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAK
aW5kZXggNjRhZjMxODRhYmViNjM5ZjY0ZTgzY2Y3MjViZTg2YzEzNTAwMWIyNi4uZTJmY2JhZmIy
MGUzYTRhY2U2YzgxZGZkMWJhNGRmMTlhNmZkYzFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0xMjIs
NyArMTIyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25seShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJhdHRyaWJ1
dGUiLCAicmVhZG9ubHkiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZG9ubHkoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBA
IHZvaWQgSlNhdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgYXV0byoganNhdHRyaWJ1dGUgPSBqc0Nh
c3Q8SlNhdHRyaWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29y
bGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc2F0dHJpYnV0ZS0+aW1wbCgpLCBqc2F0dHJpYnV0ZSk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqc2F0dHJpYnV0ZS0+d3JhcHBlZCgpLCBqc2F0dHJpYnV0
ZSk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yMDIsNyArMjAyLDcg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBhdHRyaWJ1dGUqIGkKIGF0dHJpYnV0ZSogSlNhdHRyaWJ1dGU6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNDYXN0PEpTYXR0cmlidXRlKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXIt
PmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAppbmRleCA1NGZjYThjNzc5MGI3OGRiZTE2MzhhZDk2
ZDljODQ1MTNhZTc1ZDY1Li5jZWU4MjUyNzY2NTdmNTZjMzdlYzhkMjNjZWViYzg5YTIyZjQxNGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNy
ZWFkb25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTcmVhZG9ubHkuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBKU3JlYWRvbmx5T3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0
KQogewogICAgIGF1dG8qIGpzcmVhZG9ubHkgPSBqc0Nhc3Q8SlNyZWFkb25seSo+KGhhbmRsZS5z
bG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFw
cGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzcmVhZG9u
bHktPmltcGwoKSwganNyZWFkb25seSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc3Jl
YWRvbmx5LT53cmFwcGVkKCksIGpzcmVhZG9ubHkpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHJlYWRvbmx5KiBpbXBsKQpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgcmVhZG9u
bHkqIGltCiByZWFkb25seSogSlNyZWFkb25seTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seSo+
KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVy
biAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCAzOTE0MDg1MWMyN2FkOWMzODZl
MzgxODQ4OTQ4NTRlMzk5ZDA5Mzk0Li5iMTI2MTI3ZWQyZjQ0N2I0NDZjOGFhMTVmYTBkMGY2Njlj
M2M5MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTkx
LDcgKzkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRp
bWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENhbGxp
bmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAgICAgICBpZiAodGhp
c1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCi0gICAgICAgICAgICBpbnN0
YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhp
c1ZhbHVlKSktPmltcGwoKSk7CisgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNl
KGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7
CiAgICAgICAgIGlmICghaW5zdGFuY2UpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggOTAwNzUxMTM5YzdkNzY1NjViMmM4ZmNjYTYyOGRiNTlh
YzRiMmYzMC4uY2Q3YTdiMzg3OTNhODA3NDFhZmMwMzNmYzViNzZhMDk1YWE5MjM5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAt
NDQwLDcgKzQ0MCw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVj
dGVkU2NyaXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0CiAgICAgaWYgKCFpbnNwZWN0
ZWRXaW5kb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc2NyaXB0U3RhdGUsIGluc3BlY3Rl
ZFdpbmRvdy0+aW1wbCgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOworICAgIHJldHVybiBC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc2NyaXB0U3RhdGUs
IGluc3BlY3RlZFdpbmRvdy0+d3JhcHBlZCgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOwog
fQogCiBJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIEluc3BlY3RvckNvbnRyb2xsZXI6OmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KaW5kZXggODM3YjZiY2I0NTlkZGFmMGUzMTk4NTAxOWFiMmQ1OGM0NWIyN2Y4Yi4uZDExNTE4
ZjVlNzE0NzcxOTg2Njc0OWI4YTZlMTcwZWE0NTNmMjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCkBAIC0yMDgxLDcgKzIwODEsNyBAQCBzdGF0aWMgV2ViRnJhbWVMb2Fk
VHlwZSB0b1dlYkZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogICAg
ICAgICBhbnlXb3JsZEdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwq
PihnbG9iYWxPYmplY3RPYmopLT53aW5kb3coKTsKIAogICAgIC8vIEdldCB0aGUgZnJhbWUgZnJv
bWUgdGhlIGdsb2JhbCBvYmplY3Qgd2UndmUgc2V0dGxlZCBvbi4KLSAgICBGcmFtZSogZnJhbWUg
PSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1l
ID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIEFTU0VSVChm
cmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQo
ZnJhbWUpKTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUg
ZnJhbWUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2Vy
Lm1tCmluZGV4IGZlZmMzYWI5NWY1MDVkZjliZTZjZWJjZmM0NzZkYjRjMGU0Mzc1NDEuLjdiNWM0
ODQzN2YyNjA4ZDgxY2I3YjkzZTVkMDFjMWM5YTQzMTExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgTlNVUkwgKnRvTlNVUkwoY29uc3QgU3RyaW5nJiBzKQogc3RhdGljIFdlYkZyYW1lICp0b1dl
YkZyYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgSlNET01XaW5kb3cq
IHdpbmRvdyA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4ga2l0KHdpbmRvdy0+aW1wbCgpLmZyYW1lKCkpOworICAgIHJldHVybiBraXQod2luZG93
LT53cmFwcGVkKCkuZnJhbWUoKSk7CiB9CiAKIFdlYlNjcmlwdERlYnVnZ2VyOjpXZWJTY3JpcHRE
ZWJ1Z2dlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjgwMGMyMmZjZjUyYzdiMzY2
NjgxNGRkYTI2Yjc0NDJhMWM2NDBiNy4uZjljMjYwNjgxZWFkODY2N2M2MGY5M2Q3OGI4NDM1N2Y2
YzQ2YzdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCkBAIC02ODMsNyArNjgzLDcgQEAgV2ViRnJhbWUqIFdlYkZyYW1lOjpmcmFtZUZvckNv
bnRleHQoSlNDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgaWYgKHN0cmNtcChnbG9iYWxPYmplY3RP
YmotPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsICJKU0RPTVdpbmRvd1NoZWxsIikgIT0gMCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxKU0RPTVdp
bmRvd1NoZWxsKj4oZ2xvYmFsT2JqZWN0T2JqKS0+d2luZG93KCktPmltcGwoKS5mcmFtZSgpOwor
ICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxP
YmplY3RPYmopLT53aW5kb3coKS0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgcmV0dXJuIFdlYkZy
YW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CiB9CiAKQEAgLTcyOCw3ICs3MjgsNyBAQCBTdHJp
bmcgV2ViRnJhbWU6OmNvdW50ZXJWYWx1ZShKU09iamVjdFJlZiBlbGVtZW50KQogICAgIGlmICgh
dG9KUyhlbGVtZW50KS0+aW5oZXJpdHMoSlNFbGVtZW50OjppbmZvKCkpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxlbWVudCgmanNDYXN0
PEpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT5pbXBsKCkpOworICAgIHJldHVybiBjb3VudGVy
VmFsdWVGb3JFbGVtZW50KCZqc0Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPndyYXBw
ZWQoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6cHJvdmlzaW9uYWxVUkwoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264184</attachid>
            <date>2015-10-27 17:41:23 -0700</date>
            <delta_ts>2015-10-28 23:21:25 -0700</delta_ts>
            <desc>Updating mm files</desc>
            <filename>bug-150613-20151028014028.patch</filename>
            <type>text/plain</type>
            <size>420151</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1NGIxNDgyYWUxNWJh
ZjBhNzlhZjI3ZjliNTcwYWFmYjE2NGQ2My4uYjJhZTE2NTA1MTBkZWQzNDUwZGIxYjUxZGYzOTQ2
ZWRlZGU2YTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3MyBAQAorMjAxNS0xMC0yNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFw
cGVkIGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBdHRyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXR0cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZm
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xp
c3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
cXVhZEZpbHRlck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCaXF1YWRGaWx0
ZXJOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NSdWxlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9wZXJ0eVZhbHVlRmFsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NTU1ZhbHVlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSFRNTENhbnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRMaW5lRGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0V2Via2l0TGluZURh
c2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRh
dGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjphZnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NvbW1hbmRMaW5lQVBJSG9zdDo6ZGF0YWJhc2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0Nv
bW1hbmRMaW5lQVBJSG9zdDo6c3RvcmFnZUlkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0bzo6Z2V0UmFuZG9tVmFs
dWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleTo6YWxnb3JpdGhtKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG9LZXlQYWlyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUV2
ZW50OjpkZXRhaWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29r
dXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
YWN0aXZlRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0RE9NV2luZG93KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSFRNTEZvcm1FbGVtZW50T3JOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
Rm9ybURhdGE6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFy
cmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTWltZVR5cGVBcnJheTo6bmFt
ZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6
bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVBsdWdpbkFycmF5OjpuYW1lR2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVBsdWdpbjo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5n
TGlzdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVy
dHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93
blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFsbG93
QWNjZXNzRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2lu
ZG93QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnByaW50RXJyb3JN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9m
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1JpY2hT
b3VyY2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50
ZXJydXB0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJFdmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2lu
ZG93V2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93SW5kZXhlZERCKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvdzo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0RW51bWVyYWJs
ZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJv
cGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
dzo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6d3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjp3cmFwcGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6SlNET01XcmFwcGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNEYXRhQ3VlOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFDdWU6OnNldFZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RhdGFUcmFuc2Zlcjo6dHlwZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6cm90YXRpb25SYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2FtbWEpOgorICAgICAgICAo
V2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBh
c3NBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6
OmFic29sdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6cHJlcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjphcHBlbmQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50RnJhZ21lbnQ6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVu
dEZyYWdtZW50OjphcHBlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRUeXBlOjpiZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6OmFmdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6YmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6YWZ0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNFbGVtZW50OjpyZXBsYWNlV2l0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6
OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNF
dmVudDo6Y2xpcGJvYXJkRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0ZpbGVSZWFkZXI6OnJlc3VsdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJy
ZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3Np
dGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNh
bGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0
aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBw
b3J0c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6dG9E
YXRhVVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTERvY3VtZW50OjphbGwpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENhbGxpbmdEb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6b3Blbik6CisgICAgICAgIChX
ZWJDb3JlOjpkb2N1bWVudFdyaXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEVsZW1lbnQ6OnB1c2hFdmVu
dEhhbmRsZXJTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTEZyYW1lRWxlbWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hU
TUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0
RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRF
bGVtZW50OjpzZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNI
VE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TE1lZGlhRWxlbWVudDo6c2V0Q29udHJvbGxlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbjo6aW5kZXhTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTZWxlY3RF
bGVtZW50OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MU2VsZWN0RWxlbWVudDo6
aW5kZXhTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNv
bnRlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rv
cnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpzdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RT
dG9yZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNo
b3dDb250ZXh0TWVudSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
ZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6
OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8p
OgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjp2b2x1bWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTWVzc2FnZUV2ZW50OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUluaXRNZXNz
YWdlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY2lzaW9u
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6ZGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbk9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6Omlu
c2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlcGxhY2VDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvTm9kZU9yU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3Nj
aWxsYXRvck5vZGU6OnNldFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFubmVyTm9k
ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdN
b2RlbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cGx1Z2luU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBsdWdpbkVsZW1lbnRHZXRDYWxsRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUG9wU3RhdGVFdmVudDo6
c3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JUQ1N0YXRzUmVzcG9uc2U6Om5hbWVHZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTVkdMZW5ndGhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1N0b3JhZ2U6Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTU3R5bGVTaGVldDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86
OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmRlY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTdWJ0bGVDcnlwdG86OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNy
eXB0bzo6d3JhcEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dW53cmFw
S2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFja0N1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFja0N1ZTo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFjazo6c2V0S2luZCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1RleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFj
a0xpc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVHJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1RyYWNrRXZlbnQ6OnRyYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VmlkZW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2s6OnNl
dExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliM2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0
cmliNGZ2KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyOjpwb3N0TWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1dvcmtlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OndyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
WE1MSHR0cFJlcXVlc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2Up
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYUGF0aFJlc3VsdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hT
TFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhl
Y3V0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb21XaW5kb3dG
cm9tRXhlY1N0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbik6
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKE5hdGl2ZVRvSlNW
YWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNp
dGluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25Bbm90aGVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVj
dG9yT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXQ6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXRPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFeGNl
cHRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5h
bGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
Mik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZU93bmVyOjpm
aW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25l
cjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWlu
aXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRl
YWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQnl0ZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNp
Z25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0T2JqQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZs
ZWN0ZWRTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZElu
dGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29s
ZWFuQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0
ZTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11
dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialN0cmljdEZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5
dGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9uZ0xvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
U2VxdWVuY2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1
bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVt
b3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0
YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRp
b25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
Myk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
MCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGhPcHRpb25hbFBhcmFtZXRlcjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21T
dHJpbmdMaXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51
bGxhYmxlU2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uR2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RG
dW5jdGlvbldpdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
blByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE9iak93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPYmo6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZUZ1bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ2FjaGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNo
ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdM
b25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVm
c0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVBcnJheUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
QXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzT3du
ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjp0b1dyYXBw
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc2F0dHJpYnV0ZVJlYWRvbmx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTYXR0cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0
cmlidXRlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHlPd25lcjo6ZmluYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6dG9XcmFwcGVkKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1l
dGhvZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2Ny
aXB0U3RhdGUpOgorCiAyMDE1LTEwLTI1ICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtUZXhNYXBdIEZpeCBhIG1pc3VzZWQgZmxhZyBmb3IgR3N0R0wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAxZWYzNzExMWM3MjNhZmU2NWRhOGZhYWI5NzIzNWMwNzc4MTMwYTZiLi4wYWU5
ZTNjYjI4ZTk5MWRkY2QwYTYzODY2MjU4NDhmOWQxMTdkMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTUtMTAtMjcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KKworICAgICAgICBSZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8gSlNET01XcmFw
cGVyLndyYXBwZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmZyYW1lRm9yQ29udGV4dCk6IFJlbmFtaW5nIGltcGwoKSB0byB3cmFwcGVkKCku
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb3VudGVyVmFsdWUpOiBEaXR0by4KKwogMjAx
NS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSysgYnVpbGQgYWZ0ZXIgcjE5MTU0My4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbQppbmRleCAxNmJiMThiYTViMjZlMTY5ZmJjZWZhYzVlNDZhYzZlMTIzODk1
NWRiLi5lNDUzMmM4YTE1ZmQ1NjI5ZDJhMTg1ODhmOTdiMTU0YTIwOGYwZGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFs
dWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW1UeXBlICppdGVtLCBK
U0MKIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFE
YXRhKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gaW1wbCgpLnBhcmVudEVsZW1lbnQoKTsKKyAg
ICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwog
ICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAgICAgICByZXR1cm4gSlND
Ojpqc051bGwoKTsKIApAQCAtMzk0LDcgKzM5NCw3IEBAIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFEYXRhKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkK
IEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjphY2Nlc3NMb2coSlND
OjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBIVE1M
VmlkZW9FbGVtZW50KiBwYXJlbnQgPSBpbXBsKCkucGFyZW50RWxlbWVudCgpOworICAgIEhUTUxW
aWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQoKS5wYXJlbnRFbGVtZW50KCk7CiAgICAgaWYg
KCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVs
bCgpOwogCkBAIC00MTYsNyArNDE2LDcgQEAgSlNDOjpKU1ZhbHVlIEpTUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6OmFjY2Vzc0xvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnMKIEpTQzo6
SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplcnJvckxvZyhKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEhUTUxWaWRlb0Vs
ZW1lbnQqIHBhcmVudCA9IGltcGwoKS5wYXJlbnRFbGVtZW50KCk7CisgICAgSFRNTFZpZGVvRWxl
bWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVu
dCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCmluZGV4IDQyZjEy
ZjBlZDJkMTNjNGU3NWUwNjRhMzM2YmI3M2MwYWQ1MzVkMzUuLmQ0NWNmNmQyYzhhOGVlMmFkN2Mz
N2FkYmRlNzA4ZjRkZGU0YTViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXR0ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dHRyQ3VzdG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgSlNBdHRyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLm93bmVyRWxlbWVudCgp
KQorICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gd3JhcHBlZCgpLm93bmVyRWxlbWVudCgpKQog
ICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlQ3VzdG9tLmNwcAppbmRleCAxYzljMzI4YjEyMTI1ZDliYmUzOTJjZTMxZTI2MzgxNmUy
ZjEzNGVkLi4zM2Y3NjhlM2M4MzQ1M2RhZTk3NTAyZjUzNDgzY2QzZGQyOWJlODdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNv
dXJjZU5vZGVDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnNldEJ1ZmZlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmICghaW1wbCgpLnNldEJ1ZmZlcihidWZm
ZXIpKQorICAgIGlmICghd3JhcHBlZCgpLnNldEJ1ZmZlcihidWZmZXIpKQogICAgICAgICBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIkF1
ZGlvQnVmZmVyIHVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyIpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKaW5kZXgg
MzZmMzFkOWQ2MmVjZDc4ZmQxYWFmMTkxYzIyYjlhNTUwMDIyNzczZC4uMTUzMTgxNWFjNjM3NWQ5
NjBmZWIyMzc1ZjVmYzNlMTU3YzZhOWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdm9pZCBKU0F1ZGlvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7
CiB9CiAKIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0gdmFsdWUu
dG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0S2luZChzdHJpbmcpOworICAg
IHdyYXBwZWQoKS5zZXRLaW5kKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBKU0F1
ZGlvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAg
ICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBs
KCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5n
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcAppbmRleCA4MzFlNDI1Yzg2NWQ0Yjg1N2QzYWM0MGE4ZWU5N2FmYmFhZDI1
YzNhLi42ZmQxYTUwNDAyNTBlN2Q0Nzc2YzZlOThmNTQ2MmU5ODNiMTU4ZjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNBdWRpb1Ry
YWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKaW5kZXggZjZmYTg2ZjVjMzc0ZmVi
YmMwYjgxYmZmY2FmYzVlZWRjYTQxYjMxZS4uOTIxYmFlZjNiZGUyOTNkOGExN2MyMzZmMjY0ZTIx
MWI5OGJjNjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1
YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgSlNCaXF1
YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAj
aWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsK
ICAgICAgICAgdWludDMyX3QgdHlwZSA9IHZhbHVlLnRvVUludDMyKCZzdGF0ZSk7Ci0gICAgICAg
IGlmICghaW1wbCgpLnNldFR5cGUodHlwZSkpCisgICAgICAgIGlmICghd3JhcHBlZCgpLnNldFR5
cGUodHlwZSkpCiAgICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEpTQmlxdWFk
RmlsdGVyTm9kZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdmFsdWUudG9T
dHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICAgICAgaWYgKHR5cGUgPT0gImxvd3Bh
c3MiIHx8IHR5cGUgPT0gImhpZ2hwYXNzIiB8fCB0eXBlID09ICJiYW5kcGFzcyIgfHwgdHlwZSA9
PSAibG93c2hlbGYiIHx8IHR5cGUgPT0gImhpZ2hzaGVsZiIgfHwgdHlwZSA9PSAicGVha2luZyIg
fHwgdHlwZSA9PSAibm90Y2giIHx8IHR5cGUgPT0gImFsbHBhc3MiKSB7Ci0gICAgICAgICAgICBp
bXBsKCkuc2V0VHlwZSh0eXBlKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5zZXRUeXBlKHR5cGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggZmYyNjMwNzg4MzFmM2M5
NzExOWM3YTA5OWE0NGQwMjJjZjNiOWFlMi4uMGQzMzc3Nzk2OTMxMTBmY2E5N2JjYTFjYzMxZTY5
ODIxZDgxZDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NS
dWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVD
dXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBK
U0NTU1J1bGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDU1NSdWxlKiBydWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNw
cAppbmRleCA4OWU5OTIxNTA2ZmY1MGU4MWUwYzhiOGI4MzlmMmU5ODZiZGE5M2I0Li4wMjg0NDRm
ZTNkZDkxOGJjMGQwODA1MGU5ZGJjMjg2MjkyN2E1ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcApAQCAtNDEsOSArNDEsOSBA
QCBib29sIEpTQ1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYQogICAgIEpTQ1NTUnVsZUxpc3QqIGpzQ1NTUnVsZUxp
c3QgPSBqc0Nhc3Q8SlNDU1NSdWxlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAg
ICBpZiAoIWpzQ1NTUnVsZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0ganNDU1NSdWxl
TGlzdC0+aW1wbCgpLnN0eWxlU2hlZXQoKSkKKyAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVT
aGVldCA9IGpzQ1NTUnVsZUxpc3QtPndyYXBwZWQoKS5zdHlsZVNoZWV0KCkpCiAgICAgICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0eWxlU2hlZXQpKTsKLSAgICBp
ZiAoQ1NTUnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QtPmltcGwoKS5pdGVtKDApKQorICAg
IGlmIChDU1NSdWxlKiBjc3NSdWxlID0ganNDU1NSdWxlTGlzdC0+d3JhcHBlZCgpLml0ZW0oMCkp
CiAgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGNzc1J1bGUp
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCBkZTJmOTA3
MzQ1YTc2OGY1Y2VmMzY4ODQ5NjI3Y2I0MmQ1ZTQ1MWVjLi45MWJhMzEyMjk5MDlkNjQ4ZmM5MGE3
ZGY0MmYzYTVlNjkyM2NlOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogY2xhc3MgQ1NTUHJvcGVydHlJbmZvIHsKQEAgLTI3
OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgZ2V0UHJvcGVydHlWYWx1ZUZhbGxi
YWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcgogewogICAgIC8vIElmIHRoZSBw
cm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLAogICAg
IC8vIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFsdWUuCi0gICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaW5kZXgpKSk7CisgICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPndyYXBwZWQoKS5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaW5kZXgpKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVm
aXgoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmosIHVuc2ln
bmVkIHByb3BlcnR5SUQpCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NT
U3QKICAgICAvLyBwb3NUb3AgcmV0dXJucyAiQ1NTIHRvcCIgYXMgbnVtYmVyIHZhbHVlIGluIHVu
aXQgcGl4ZWxzIF9pZl8gaXRzIGEKICAgICAvLyBwb3NpdGlvbmVkIGVsZW1lbnQuIGlmIGl0IGlz
IG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCwgcmV0dXJuIDAKICAgICAvLyBmcm9tIE1TSUUgZG9j
dW1lbnRhdGlvbiBGSVhNRTogSU1QTEVNRU5UIFRIQVQgKERpcmspCi0gICAgUmVmUHRyPENTU1Zh
bHVlPiB2ID0gdGhpc09iai0+aW1wbCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiB2ID0gdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CiAgICAgaWYgKHYpIHsKICAgICAg
ICAgaWYgKHYtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBqc051bWJl
cihzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2KS0+Z2V0RmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ1NTU3QKIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNp
Z25lZCBwcm9wZXJ0eUlEKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPmlt
cGwoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcGVydHlJRCkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPndyYXBw
ZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcGVydHlJRCkpOwogICAgIGlmICh2KQogICAgICAgICByZXR1cm4ganNTdHJpbmdPck51
bGwoZXhlYywgdi0+Y3NzVGV4dCgpKTsKIApAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8u
cHJvcGVydHlJRCk7Ci0gICAgaW1wbCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwg
cHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1MywxMSArMzUzLDEx
IEBAIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBp
bXBsKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gY3NzVmFsdWUgPSB3cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5h
bWUpOwogICAgIGlmICghY3NzVmFsdWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAg
IGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5hZGQoY3NzVmFsdWUuZ2V0
KCksIHJvb3QoJmltcGwoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6OmZpbmFs
aXplKCkuCisgICAgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkubV9jc3NWYWx1ZVJvb3RzLmFkZChj
c3NWYWx1ZS5nZXQoKSwgcm9vdCgmd3JhcHBlZCgpKSk7IC8vIEJhbGFuY2VkIGJ5IEpTQ1NTVmFs
dWVPd25lcjo6ZmluYWxpemUoKS4KICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCkBAIC0zNjYsNyArMzY2LDcgQEAgdm9p
ZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGUKICAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NWYWx1ZUN1c3RvbS5jcHAKaW5kZXggZWQ1MTI1MzNlZDMzYTM5MjI1MmJmNjQ1MmMyMWViYzlh
ZWE5YTE3Ni4uZDhmNDcwNWFlYmQyYWM0ZjcyYWNiMDliMDI4YmQ1MzczMjEwMmVhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgYm9vbCBKU0NTU1ZhbHVlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKICAgICBpZiAoIWpzQ1NTVmFsdWUt
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIERPTVdy
YXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKLSAgICB2b2lkKiByb290ID0gd29ybGQtPm1fY3NzVmFsdWVSb290cy5nZXQoJmpzQ1NTVmFs
dWUtPmltcGwoKSk7CisgICAgdm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nzc1ZhbHVlUm9vdHMuZ2V0
KCZqc0NTU1ZhbHVlLT53cmFwcGVkKCkpOwogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKQEAg
LTYwLDggKzYwLDggQEAgdm9pZCBKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTQ1NTVmFsdWUq
IGpzQ1NTVmFsdWUgPSBqc0Nhc3Q8SlNDU1NWYWx1ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTsKICAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOwotICAgIHdvcmxkLm1fY3NzVmFsdWVSb290cy5yZW1vdmUoJmpzQ1NT
VmFsdWUtPmltcGwoKSk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLT5p
bXBsKCksIGpzQ1NTVmFsdWUpOworICAgIHdvcmxkLm1fY3NzVmFsdWVSb290cy5yZW1vdmUoJmpz
Q1NTVmFsdWUtPndyYXBwZWQoKSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1Zh
bHVlLT53cmFwcGVkKCksIGpzQ1NTVmFsdWUpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUqIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCmluZGV4IGI5OTNiZGMyNDJiNDJjNzkzYzIxZTlkMDQ3
MjE5NDZiMzkwY2U3YjcuLmRhNzU4MDJlZGZmYTE2NzAyOGVkOGUwYjEyNGFjYTFjNDg0MzIzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgc3RhdGlj
IENhbnZhc1N0eWxlIHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFsdWUp
CiAgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNDYW52YXNHcmFkaWVu
dDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNH
cmFkaWVudCo+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgm
anNDYXN0PEpTQ2FudmFzR3JhZGllbnQqPihvYmplY3QpLT53cmFwcGVkKCkpOwogICAgIGlmIChv
YmplY3QtPmluaGVyaXRzKEpTQ2FudmFzUGF0dGVybjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2JqZWN0KS0+aW1wbCgpKTsK
KyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2Jq
ZWN0KS0+d3JhcHBlZCgpKTsKICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKIH0KIApAQCAtNjcs
MTIgKzY3LDEyIEBAIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbW1pdChF
eGVjU3RhdGUmKQogCiBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VT
dHlsZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwg
Z2xvYmFsT2JqZWN0KCksIGltcGwoKS5zdHJva2VTdHlsZSgpKTsKKyAgICByZXR1cm4gdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuc3Ryb2tlU3R5bGUoKSk7CiB9CiAKIHZv
aWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJiBj
b250ZXh0ID0gaW1wbCgpOworICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9
IHdyYXBwZWQoKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTgyLDEyICs4MiwxMiBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTdHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBK
U1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBp
bXBsKCkuZmlsbFN0eWxlKCkpOworICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5maWxsU3R5bGUoKSk7CiB9CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZpbGxTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
ewotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9IGltcGwoKTsKKyAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKHZh
bHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYXNTdHJpbmco
dmFsdWUpLT52YWx1ZSgmc3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTcsNyArOTcsNyBA
QCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6d2Via2l0TGluZURhc2goRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiBkYXNoID0gaW1wbCgpLmdldExpbmVEYXNoKCk7CisgICAgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgZGFzaCA9IHdyYXBwZWQoKS5nZXRMaW5lRGFzaCgpOwogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRv
ciBlbmQgPSBkYXNoLmVuZCgpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFdlYmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsCiAgICAgICAgIGRhc2guYXBwZW5kKGVsZW0pOwogICAgIH0KIAotICAgIGltcGwoKS5z
ZXRXZWJraXRMaW5lRGFzaChkYXNoKTsKKyAgICB3cmFwcGVkKCkuc2V0V2Via2l0TGluZURhc2go
ZGFzaCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCmluZGV4IGU1ZGQ2ZTg4MTI3NmM4NTYwYWZiZDVkOTUxM2IyMDdmMjIyZGRkZmQuLjdmNTA0
MzVmNWE2M2QyNThkMmMwM2ZjY2EwZjM3ODVkNmI5ZjRiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkuY2Fu
dmFzKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuY2FudmFz
KCkpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9t
LmNwcAppbmRleCBjYjgzMWQwNGNmYjhlZjg1Njg0NzZiZDhmZGUzZjhmODJlOWE3YzkxLi42MDE3
ZjFmNjA5ZmM2ZGYzZWJkOTUzZTQ4NTAzMzhhYmQzZDkxYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmJl
Zm9yZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGltcGwoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3Jh
cHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmJlZm9yZShFeGVjU3RhdGUm
IHN0YXRlKQogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBK
U0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTQ2hhcmFj
dGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpbXBsKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCmluZGV4IGIwNjVkNWNmZjFj
ZjFiNTA2NDc0NTk2MmJkY2Q4ZDYxZGY3NjdmNTIuLjU1Yzc5MjEyYTEyNDBmMmZiYmI4MGZiNmZl
MGY1NGNjZGRlMmI3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0
ZWRPYmplY3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb21tYW5kTGluZUFQSUhvc3Q6Oklu
c3BlY3RhYmxlT2JqZWN0KiBvYmplY3QgPSBpbXBsKCkuaW5zcGVjdGVkT2JqZWN0KCk7CisgICAg
Q29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0ID0gd3JhcHBlZCgp
Lmluc3BlY3RlZE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQ
SUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCiAgICAgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiBsaXN0ZW5l
cnNBcnJheTsKLSAgICBpbXBsKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3RlbmVy
c0FycmF5KTsKKyAgICB3cmFwcGVkKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKG5vZGUsIGxpc3Rl
bmVyc0FycmF5KTsKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dCgmc3RhdGUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdGVuZXJzQXJyYXkuc2l6
ZSgpOyArK2kpIHsKQEAgLTEyOSw3ICsxMjksNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElI
b3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA+PSAyKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG9iamVjdChzdGF0
ZS52bSgpLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGhpbnRzKHN0YXRlLnZtKCksIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEp
KTsKLSAgICAgICAgaW1wbCgpLmluc3BlY3RJbXBsKG9iamVjdC50b0luc3BlY3RvclZhbHVlKCZz
dGF0ZSksIGhpbnRzLnRvSW5zcGVjdG9yVmFsdWUoJnN0YXRlKSk7CisgICAgICAgIHdyYXBwZWQo
KS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpLCBoaW50cy50b0lu
c3BlY3RvclZhbHVlKCZzdGF0ZSkpOwogICAgIH0KIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpAQCAtMTQyLDcgKzE0Miw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6OmRhdGFi
YXNlSWQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IEpTRGF0
YWJhc2U6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKGRh
dGFiYXNlKQotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbXBsKCku
ZGF0YWJhc2VJZEltcGwoZGF0YWJhc2UpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgd3JhcHBlZCgpLmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBKU1ZhbHVlIEpTQ29t
bWFuZExpbmVBUElIb3N0OjpzdG9yYWdlSWQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIFN0b3Jh
Z2UqIHN0b3JhZ2UgPSBKU1N0b3JhZ2U6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZSgmc3RhdGUsIGltcGwoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgd3JhcHBlZCgpLnN0b3JhZ2VJZEltcGwoc3RvcmFn
ZSkpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKaW5kZXggZDA3YmVhY2ExNWE1NDcyYjQ2OTBh
YWM0NWMxYWQ3NTRjZjVkOWEzOS4uNjg3ZWNkMWI1YjU3M2ZiYmIyYjUwOTlkYzdlYjFmNDU4Nzg5
NmE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuZ2V0UmFuZG9tVmFsdWVzKGFy
cmF5QnVmZmVyVmlldy5nZXQoKSwgZWMpOworICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1ZXMo
YXJyYXlCdWZmZXJWaWV3LmdldCgpLCBlYyk7CiAKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCmluZGV4IGFkODFlNGQ0NWIxZTYxZWFlMTg3MGFhZWM3
M2RlM2FlNWRiYzg5ZjUuLjU4NTk0YmVmMmRiMjlhMmYwOTc1ZWM5OWZmY2FmODQwNTFkYjlkNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0NyeXB0
b0tleTo6YWxnb3JpdGhtKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBKU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIgYnVpbGRlcigmc3RhdGUpOwotICAgIGltcGwoKS5idWlsZEFs
Z29yaXRobURlc2NyaXB0aW9uKGJ1aWxkZXIpOworICAgIHdyYXBwZWQoKS5idWlsZEFsZ29yaXRo
bURlc2NyaXB0aW9uKGJ1aWxkZXIpOwogICAgIHJldHVybiBidWlsZGVyLnJlc3VsdCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3Vz
dG9tLmNwcAppbmRleCA5ZmRiODliYzI3ZjY4YTIyYTMyZDljOTk0YmVmMjhkYzEyMzI5NzlmLi5i
NGFkMDQ2MjJjZmZkZjI4ODI1MDNkNTYyODk1MzBjYTE5M2M1YjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAKQEAgLTM0
LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ3J5cHRvS2V5UGFpcjo6
dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpLnB1YmxpY0tleSgpKTsKLSAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QoaW1wbCgpLnByaXZhdGVLZXkoKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHdyYXBwZWQoKS5wdWJsaWNLZXkoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHdyYXBwZWQoKS5wcml2YXRlS2V5KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3Bw
CmluZGV4IGFmMTQ5ZGFhZjA1NDI1MTIzZmU4ODY5NDk5ZDViN2JlZjU4MDNlNWEuLmM1NTZjOWUy
ZTUwMGE1NzU3YjcyYzMwYmRhZjVjNjBiNTFiMGUwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEpTVmFsdWUgSlNDdXN0b21FdmVudDo6ZGV0YWls
KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgQ3VzdG9tRXZlbnQmIGV2ZW50ID0gaW1w
bCgpOworICAgIEN1c3RvbUV2ZW50JiBldmVudCA9IHdyYXBwZWQoKTsKICAgICAKICAgICBpZiAo
ZXZlbnQuZGV0YWlsKCkuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKaW5kZXggYjI4N2M2Yjg5OTYyN2I0MTgwODk5OGIyNjc2YTkxZTViNzgxMjUyYS4u
NjBjNTdmOGQzYTE5M2Q4MmRjM2M2MTE0NTFkNDhlNjI3MjMzYmQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApA
QCAtODEsNyArODEsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5h
bWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICAgICAgY2FsbFR5cGUgPSBtX2N1
c3RvbVJlc29sdmVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtX2N1c3RvbVJlc29sdmVy
LmdldCgpLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTQzMTI+IEpT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkgQ29uc29sZSBNZXNzYWdl
IHNob3VsZCBpbmNsdWRlIExpbmUsIENvbHVtbiwgYW5kIFNvdXJjZVVSTAotICAgICAgICAgICAg
aWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxPYmplY3QtPmltcGwoKS5j
b25zb2xlKCkpCisgICAgICAgICAgICBpZiAoUGFnZUNvbnNvbGVDbGllbnQqIGNvbnNvbGUgPSBt
X2dsb2JhbE9iamVjdC0+d3JhcHBlZCgpLmNvbnNvbGUoKSkKICAgICAgICAgICAgICAgICBjb25z
b2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBB
U0NJSUxpdGVyYWwoIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZlIGEgbG9va3VwTmFtZXNw
YWNlVVJJIG1ldGhvZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDMw
MmM3YTlhMDY3NGEwZjhlMGRhMWMxY2VjMDM3YTU0ZDYyNDkzODAuLjIwZWY2MDkxMzE5MDZlMzhm
M2QyMzdlNzJlYzlhMjdmNDM1ZDMxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogY2Fj
aGVkCiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoSlNE
T01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmpl
Y3QpKSB7Ci0gICAgICAgIGlmICghd2luZG93LT5pbXBsKCkuaXNDdXJyZW50bHlEaXNwbGF5ZWRJ
bkZyYW1lKCkpCisgICAgICAgIGlmICghd2luZG93LT53cmFwcGVkKCkuaXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTUsMTIg
KzUxNSwxMiBAQCB1aW50NjRfdCB0b1VJbnQ2NChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogCiBET01XaW5kb3cmIGFjdGl2ZURP
TVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOworICAgIHJldHVybiBhc0pTRE9NV2lu
ZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKTsKIH0KIAogRE9NV2lu
ZG93JiBmaXJzdERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFzSlNE
T01XaW5kb3coZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOworICAgIHJldHVy
biBhc0pTRE9NV2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKTsK
IH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50KEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50LCBTZWN1cml0eVJlcG9ydGluZ09wdGlv
biByZXBvcnRpbmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcAppbmRleCAxM2ZkYjUy
ZDZjMjUzMTljMTkzOGE3NDI5MjI0MjIwNmFjZmVjNjc4Li5iMDQ4YWY5MTNkMmZiOTY3MTZkNTE1
YWYzMDVlYmI5NDZiNjY3NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHRvSFRNTEZvcm1FbGVtZW50T3JOdWxs
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoSlNIVE1M
Rm9ybUVsZW1lbnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmpl
Y3QodmFsdWUpKS0+aW1wbCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMo
SlNIVE1MRm9ybUVsZW1lbnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4o
YXNPYmplY3QodmFsdWUpKS0+d3JhcHBlZCgpIDogbnVsbHB0cjsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RPTUZvcm1EYXRhKEV4ZWNTdGF0ZSogZXhlYykK
QEAgLTY0LDkgKzY0LDkgQEAgSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjphcHBlbmQoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZTsKICAgICAgICAgICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgPj0gMyAmJiAhc3RhdGUuYXJndW1lbnQoMikuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN0YXRlLmFyZ3VtZW50KDIp
LnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgICAgICAgICBpbXBsKCkuYXBw
ZW5kKG5hbWUsIEpTQmxvYjo6dG9XcmFwcGVkKHZhbHVlKSwgZmlsZW5hbWUpOworICAgICAgICAg
ICAgd3JhcHBlZCgpLmFwcGVuZChuYW1lLCBKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSksIGZpbGVu
YW1lKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpbXBsKCkuYXBwZW5kKG5hbWUsIHZh
bHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgICAgICAgICAgd3JhcHBl
ZCgpLmFwcGVuZChuYW1lLCB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsK
ICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCmluZGV4IDQz
MTJhZTI3Njk1ZTI4NmY3NzkyYjQwZTNkZDVjNzg2ZTgzNjljMDIuLjc1OGNiNThkMmIwZmM2ZDA1
YWZhYjViMTk2YmJjNmE5NzNlYmRiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcApAQCAtMzEsNyArMzEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NTWltZVR5cGVBcnJheTo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUm
IHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgp
Lm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3Rv
bS5jcHAKaW5kZXggMGRkNTQ1MTIxN2RjODA4ZGQzZTlmNTJhYmQyYjRmZmNkNjRmOGIzZi4uNGZm
MTI2MjkyN2NkY2FkYzJhYTJhOWViYjA2YTQxZDQzMDgzMDQyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25D
dXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wg
SlNET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byBpdGVt
ID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQXJyYXlDdXN0b20uY3BwCmluZGV4IDI2NjlkODM3ZGYyOTM0NjUyMzVhODk0MjUxNDJl
ZjZjMTc0OTgzMDYuLjUzYjRiNDU3MzI3M2U1MjM0ZGIzNjhkMGIwNmI1OTVjYjI5ZGM0ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlD
dXN0b20uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wg
SlNET01QbHVnaW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20u
Y3BwCmluZGV4IDFhNzU4NmRiZmZjMDMyM2I4MTFiNTU3ZTM5ZjU1OGI3MGJjZjAzZTcuLmNjZmNh
MzQ5ZjJmZGY4NzQ0ZWRhODgzYTA5MjlhZGVhYzViMjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTVBsdWdpbjo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQog
ewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0
ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKaW5kZXggZmQ0MDFiMjkwNWY2OTFm
NmRmZmZkYjVkODVkZDQyNTM0YWRmMjg5Yi4uNWJkMzNjYjJlNTAzODNjYjczZWZhN2IyMWVlNWM2
MWI3YjZlYWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ0xpc3RDdXN0b20uY3BwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFJlZlB0cjxET01TdHJpbmdMaXN0PiBKU0RPTVN0cmluZ0xpc3Q6OnRvV3JhcHBlZChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpT
RE9NU3RyaW5nTGlzdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01TdHJp
bmdMaXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2Fz
dDxKU0RPTVN0cmluZ0xpc3QqPihhc09iamVjdCh2YWx1ZSkpLT53cmFwcGVkKCk7CiAKICAgICBp
ZiAoIWlzSlNBcnJheSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4
IDlhZjg0NWMxODIwYjZhNDQ5MTg5MzRlZTMxMDIxNWU2OGQ3NGQzNTUuLjIyNzFmZDlhYjlhN2Nh
ZDBlM2EzYjU4YzliOTBlMzg3ZjA4MDk3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgYm9v
bCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHIKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIG5hbWVJc1ZhbGlkOwotICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgaXRlbSA9IGltcGwoKS5pdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3Bl
cnR5TmFtZSksIG5hbWVJc1ZhbGlkKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGl0ZW0gPSB3
cmFwcGVkKCkuaXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lSXNW
YWxpZCk7CiAgICAgaWYgKG5hbWVJc1ZhbGlkKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCksIGl0ZW0pKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01Miw3ICs1Miw3IEBAIHZv
aWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5h
bWVzOwotICAgIHRoaXNPYmplY3QtPmltcGwoKS5nZXROYW1lcyhuYW1lcyk7CisgICAgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFt
ZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZXNb
aV0pKTsKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIEpTRE9N
U3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+aW1wbCgpLmRlbGV0ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPndyYXBwZWQoKS5kZWxldGVJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCiBib29sIEpTRE9NU3RyaW5n
TWFwOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluZGV4KQpAQCAtODMsNyArODMsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBpbXBsKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJp
bmdWYWx1ZSwgZWMpOworICAgIHdyYXBwZWQoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKICAgICByZXR1cm4gIWVjOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCmluZGV4IGJkZDQ4Nzc4NDllY2E3Y2Nj
OTFiYjZkYTViYzQzZDE2NjI4ZGRkY2UuLjU0Zjc1ZDBhMTllNjRlNzI1ZDU0YjA5NDMxMDdmNjA5
ZTI1M2JkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9r
ZW5MaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRv
a2VuTGlzdEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgSlNWYWx1ZSBKU0RPTVRva2VuTGlz
dDo6dG9nZ2xlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgT3B0aW9uYWw8Ym9vbD4gZm9yY2UgPSBz
dGF0ZS5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gTnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+
KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsKCkudG9nZ2xlKHRva2Vu
LCBmb3JjZSwgZWMpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih3cmFwcGVkKCku
dG9nZ2xlKHRva2VuLCBmb3JjZSwgZWMpKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYmRkYzIwY2ZlNjI3NmQ1NmJjY2NkOTk3MWM0NmI1
ZmQyOTU4NzhlZS4uZjE3NjRlMTcwNDdiZjM4YzM5ZTAzNjY5ODc3MDU4OTZiYTYyZTk4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgc2hvdWxkQWxs
b3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhleGVjLCBhc0pTRE9NV2luZG93KHRoaXNPYmplY3QpLT5pbXBsKCkpOworICAg
IHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KS0+d3JhcHBlZCgpKTsKIH0KIAogY29uc3QgQ2xh
c3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFs
T2JqZWN0OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dCYXNlKSB9
OwpAQCAtNzAsNyArNzAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdp
bmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaAogSlNET01XaW5kb3dC
YXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1Jl
ZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBK
U0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmc2hlbGwtPndvcmxkKCksICZzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKQogICAgICwgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzKCh3aW5k
b3cgJiYgd2luZG93LT5mcmFtZSgpKSA/IElzV2F0Y2hlZCA6IElzSW52YWxpZGF0ZWQpCi0gICAg
LCBtX2ltcGwod2luZG93KQorICAgICwgbV93cmFwcGVkKHdpbmRvdykKICAgICAsIG1fc2hlbGwo
c2hlbGwpCiAgICAgLCBtX3ByaXZhdGVGdW5jdGlvbnModm0pCiB7CkBAIC0xMzEsMjUgKzEzMSwy
NSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIHZvaWQg
SlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAgQVNTRVJUKG1faW1wbC0+
ZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSk7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gZ2xvYmFsRXhlYygpOwotICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5h
bWVzLT5kb2N1bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX2ltcGwtPmRvY3VtZW50KCkpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3Vj
aFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1
bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jh
c2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ltcGwt
PmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKTsKIH0KIAogdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OnByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgY29uc3QKIHsKLSAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKGltcGwoKS5mcmFtZSgp
LCBtZXNzYWdlKTsKKyAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHdyYXBwZWQoKS5mcmFt
ZSgpLCBtZXNzYWdlKTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmls
aW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5k
b3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4o
b2JqZWN0KTsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsK
KyAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCBi
b29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIG9iamVjdCkKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZv
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dC
YXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2Jq
ZWN0KTsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5MiwxNiArMTkyLDE2IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJl
Y3Vyc2lvbldoZW5DbG9zaW5nUGFnCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJy
dXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNE
T01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dC
YXNlKj4ob2JqZWN0KTsKLSAgICBBU1NFUlQodGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpOwot
ICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+cGFnZSgpOworICAg
IEFTU0VSVCh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSk7CisgICAgUGFnZSogcGFnZSA9
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT5wYWdlKCk7CiAgICAgcmV0dXJuIHNob3Vs
ZEludGVycnVwdFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJzaW9uV2hlbkNsb3NpbmdQYWdl
KHBhZ2UpOwogfQogCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
QmVmb3JlVGltZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0
IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2lu
ZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgp
KTsKLSAgICBQYWdlKiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnBhZ2UoKTsK
KyAgICBBU1NFUlQodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpOworICAgIFBhZ2UqIHBh
Z2UgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgpOwogCiAgICAgaWYgKHNo
b3VsZEludGVycnVwdFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJzaW9uV2hlbkNsb3NpbmdQ
YWdlKHBhZ2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBib29s
IEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25z
dCBKU0dsb2JhbE9iamVjdCogbwogUnVudGltZUZsYWdzIEpTRE9NV2luZG93QmFzZTo6amF2YVNj
cmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNv
bnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9N
V2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1w
bCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFJ1bnRpbWVGbGFncygpOwog
ICAgIHJldHVybiBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CkBA
IC0zMjUsNyArMzI1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRX
YXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKIEpTQzo6SlNJbnRlcm5hbFBy
b21pc2UqIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUg
bW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIEpTRE9N
V2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGds
b2JhbE9iamVjdCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2Jq
ZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVu
dCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9j
dW1lbnQtPm1vZHVsZUxvYWRlcigpLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxl
TmFtZSwgaW1wb3J0ZXJNb2R1bGVLZXkpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShl
eGVjLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGpz
VW5kZWZpbmVkKCkpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2Uq
IEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0
CiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZl
dGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXkpCiB7CiAgICAgSlNET01XaW5kb3dCYXNlKiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKLSAg
ICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS5kb2N1
bWVudCgpKQorICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+
d3JhcHBlZCgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBkb2N1bWVudC0+bW9kdWxlTG9h
ZGVyKCktPmZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlS2V5KTsKICAgICBKU0M6OkpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJy
ZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTM0Myw3ICszNDMsNyBAQCBKU0M6
OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKEpT
Qzo6SlNHbG9iYWxPYmplY3QqCiBKU0M6OkpTVmFsdWUgSlNET01XaW5kb3dCYXNlOjptb2R1bGVM
b2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxl
UmVjb3JkKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0
PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVu
dD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVm
UHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5ldmFsdWF0ZShnbG9i
YWxPYmplY3QsIGV4ZWMsIG1vZHVsZUtleSwgbW9kdWxlUmVjb3JkKTsKICAgICByZXR1cm4gSlND
Ojpqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAppbmRleCAxMDc2NDBjMTc2OGZiN2Q4MmU3OTRiMTA2ZjAyM2IyOTE0Mzg5Zjlm
Li5kNjk5YTVhZTU3YjdmNzIyZWFiYTQ4ODI3MDZjMWE0ZTEwMWYzY2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNDYsNyArNDYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHVwZGF0ZURvY3Vt
ZW50KCk7CiAKLSAgICAgICAgRE9NV2luZG93JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1w
bDsgfQorICAgICAgICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFw
cGVkOyB9CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKIAogICAgICAgICAvLyBDYWxsZWQganVzdCBiZWZvcmUgcmVtb3Zpbmcg
dGhpcyB3aW5kb3cgZnJvbSB0aGUgSlNET01XaW5kb3dTaGVsbC4KQEAgLTg0LDcgKzg0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlz
ZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9pbXBs
OworICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dyYXBwZWQ7CiAgICAgICAgIEpTRE9NV2lu
ZG93U2hlbGwqIG1fc2hlbGw7CiAKICAgICAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMg
bV9wcml2YXRlRnVuY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDBiYzMzNzU0YWExZmJjNWEzNjkzMTczNGY3ZDE1OWU0
MjQ5MDQ0NmUuLjAwZTYyYTQyYjY0OWJmNzg1NjNkNjA4OGVhMzhkZjgxMDU5NjIzOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTYyLDIxICs2MiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNET01XaW5kb3c6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlm
IChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmcmFtZSk7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganND
YXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVj
LCBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSktPndyYXBwZWQoKS5mcmFtZSgpLT50cmVl
KCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBu
YW1lZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93
QmFzZSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHNsb3RCYXNlKTsKLSAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT53cmFwcGVkKCkuZnJhbWUoKS0+ZG9jdW1l
bnQoKTsKIAotICAgIEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iai0+aW1wbCgpKSk7CisgICAgQVNTRVJUKEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqLT53cmFwcGVk
KCkpKTsKICAgICBBU1NFUlQoaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCkpOwogCiAgICAgQXRv
bWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKTsKQEAgLTk2LDkgKzk2LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIG5hbWVkSXRlbUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1dlYktpdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNET01X
aW5kb3cqIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3RlZFRoaXMtPndyYXBwZWQo
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBjYXN0ZWRUaGlzLT5pbXBsKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGNh
c3RlZFRoaXMtPndyYXBwZWQoKS53ZWJraXROYW1lc3BhY2UoKSkpOwogfQogI2VuZGlmCiAKQEAg
LTExMSw5ICsxMTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dJbmRleGVk
REIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IHRvSlNET01XaW5kb3coSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbmRleGVkREJFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6aW5kZXhl
ZERCKCZpbXBsKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTEyOSw3ICsxMjksNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIFdlIGRvbid0
IHdhbnQgYW55IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBh
IGZyYW1lbGVzcyB3aW5kb3cgKGkuZS4gb25lIHdob3NlIHBhZ2UgZ290IGNsb3NlZCwKICAgICAv
LyBvciB3aG9zZSBpZnJhbWUgZ290IHJlbW92ZWQpLgogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNu
J3QgZnVsbHkgbWF0Y2ggRmlyZWZveCwgd2hpY2ggYWxsb3dzIGF0IGxlYXN0IHRvU3RyaW5nIGlu
IGFkZGl0aW9uIHRvIHRob3NlLgotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkp
IHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAgIC8v
IFRoZSBmb2xsb3dpbmcgY29kZSBpcyBzYWZlIGZvciBjcm9zcy1kb21haW4gYW5kIHNhbWUgZG9t
YWluIHVzZS4KICAgICAgICAgLy8gSXQgaWdub3JlcyBhbnkgY3VzdG9tIHByb3BlcnRpZXMgdGhh
dCBtaWdodCBiZSBzZXQgb24gdGhlIERPTVdpbmRvdyAoaW5jbHVkaW5nIGEgY3VzdG9tIHByb3Rv
dHlwZSkuCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNsb3NlZCkgewpAQCAtMTQ1LDE0ICsxNDUsMTUgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkK
ICAgICAgICAgLy8gbm90IGFsbG93ZWQuIAogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2xvdC5zZXRXYXRjaHBv
aW50U2V0KHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyk7CisgICAgfQorCisg
ICAgc2xvdC5zZXRXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBv
aW50cyk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBjcm9zcy1kb21haW4gYWNjZXNz
IGhlcmUgd2l0aG91dCBwcmludGluZyB0aGUgZ2VuZXJpYyB3YXJuaW5nIG1lc3NhZ2UKICAgICAv
LyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8gc29tZSBmdW5jdGlvbiwganVzdCBk
aWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nlc3MKICAgICAvLyBpcyBhbGxvd2Vk
LgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpOwogICAgIAog
ICAgIC8vIExvb2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3VyIG93
biBwcm9wZXJ0aWVzLCBidXQgaWdub3JlIG92ZXJyaWRlcyBjb21wbGV0ZWx5CiAgICAgLy8gaWYg
dGhpcyBpcyBjcm9zcy1kb21haW4gYWNjZXNzLgpAQCAtMTc2LDcgKzE3Nyw3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0
ZXI8anNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlLCAyPik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5zaG93TW9kYWxEaWFsb2cpIHsKLSAgICAgICAgaWYgKCFET01XaW5kb3c6OmNh
blNob3dNb2RhbERpYWxvZyh0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpIHsKKyAgICAgICAg
aWYgKCFET01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZyh0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKSkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjA3LDcgKzIwOCw3IEBAIGJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5CiAgICAgfQogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykK
LSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS53ZWJraXQgJiYg
dGhpc09iamVjdC0+aW1wbCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlz
T2JqZWN0LT53b3JsZCgpKSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLndlYmtpdCAmJiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2hvdWxkSGF2ZVdlYktp
dE5hbWVzcGFjZUZvcldvcmxkKHRoaXNPYmplY3QtPndvcmxkKCkpKSB7CiAgICAgICAgIHNsb3Qu
c2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGFsbG93c0FjY2VzcyA/IERvbnREZWxldGUg
fCBSZWFkT25seSA6IFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBqc0RPTVdpbmRv
d1dlYktpdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIzNyw3ICsyMzgsNyBA
QCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRo
YXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1v
eiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8K
ICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgp
LnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7
CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSB8IERvbnRFbnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMjQ3LDkgKzI0OCw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAKICAgICAv
LyBhbGxvdyB3aW5kb3dbMV0gb3IgcGFyZW50WzFdIGV0Yy4gKCM1Njk4MykKICAgICBPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGlu
ZGV4ICYmIGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgp
LnNjb3BlZENoaWxkQ291bnQoKSkgeworICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkp
IHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxl
dGUgfCBEb250RW51bSwKLSAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+aW1wbCgp
LmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1ZSgpKS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCkpKTsKKyAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1ZSgpKS0+ZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNjAs
NyArMjYxLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICB9CiAKICAgICAvLyBBbGxv
dyBzaG9ydGN1dHMgbGlrZSAnSW1hZ2UxJyBpbnN0ZWFkIG9mIGRvY3VtZW50LmltYWdlcy5JbWFn
ZTEKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVk
KCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTERvY3VtZW50PigqZG9jdW1l
bnQpKSB7CiAgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUg
JiYgZG93bmNhc3Q8SFRNTERvY3VtZW50PigqZG9jdW1lbnQpLmhhc1dpbmRvd05hbWVkSXRlbSgq
YXRvbWljUHJvcGVydHlOYW1lKSkgewpAQCAtMjc2LDcgKzI3Nyw3IEBAIGJvb2wgSlNET01XaW5k
b3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCB1CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihvYmplY3QpOwogICAgIAotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCkpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIG1lc3NhZ2UgaGVyZSB0aGF0IGV4cGxhaW5zIHdo
eSB0aGUgcHJvcGVydHkgYWNjZXNzL2Z1bmN0aW9uIGNhbGwgd2FzCiAgICAgICAgIC8vIG5vdCBh
bGxvd2VkLiAKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKQEAgLTI4Nyw3ICsyODgsNyBA
QCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIGJlY2F1c2Ugd2UgYWx3YXlzIGFsbG93
IGFjY2VzcyB0byBzb21lIGZ1bmN0aW9uLCBqdXN0IGRpZmZlcmVudCBvbmVzIGRlcGVuZGluZyB3
aGV0aGVyIGFjY2VzcwogICAgIC8vIGlzIGFsbG93ZWQuCiAgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKLSAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
ZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLCBlcnJvck1lc3NhZ2UpOworICAgIGJvb2wgYWxsb3dz
QWNjZXNzID0gc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53
cmFwcGVkKCksIGVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgYmVm
b3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcywgYnV0IGlnbm9yZSBvdmVy
cmlkZXMgY29tcGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMgY3Jvc3MtZG9tYWluIGFjY2Vzcy4K
QEAgLTMwMSw3ICszMDIsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIG5hbWlu
ZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0
CiAgICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhl
c2UsIHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09i
amVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVk
KCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzIzLDkgKzMyNCw5IEBAIGJvb2wgSlNET01XaW5k
b3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCB1CiAgICAgLy8gV2UgbmVlZCB0byB0ZXN0IHRoZSBjb3JyZWN0IHByaW9yaXR5IG9y
ZGVyLgogCiAgICAgLy8gYWxsb3cgd2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMp
Ci0gICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29w
ZWRDaGlsZENvdW50KCkpIHsKKyAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkQ291bnQoKSkgewogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLAotICAgICAg
ICAgICAgdG9KUyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKGluZGV4KS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsKKyAgICAgICAgICAgIHRv
SlMoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGls
ZChpbmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMzM2LDcgKzMzNyw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAg
ICAgfQogCiAgICAgLy8gQWxsb3cgc2hvcnRjdXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBk
b2N1bWVudC5pbWFnZXMuSW1hZ2UxCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVj
dC0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhU
TUxEb2N1bWVudD4oKmRvY3VtZW50KSkgewogICAgICAgICAvLyBUaGlzIHByb3BlcnR5TmFtZSBp
cyBnZW5lcmF0ZWQgYnkgSWRlbnRpZmllcjo6ZnJvbS4KICAgICAgICAgLy8gVGhpcyBmdW5jdGlv
biBnZW5lcmF0ZXMgSWRlbnRpZmllciBmcm9tIFN0cmluZyBhbmQgYWx3YXlzIHJldHVybnMgdGhl
IG5vbi1zeW1ib2wgSWRlbnRpZmllci4KQEAgLTM1NCwxMiArMzU1LDEyIEBAIGJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCB1CiB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RPTVdpbmRvdyo+KGNlbGwpOwotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCkpCisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gT3B0aW1pemF0aW9uOiBhY2Nlc3MgSmF2YVNjcmlwdCBnbG9iYWwgdmFy
aWFibGVzIGRpcmVjdGx5IGJlZm9yZSBpbnZvbHZpbmcgdGhlIERPTS4KICAgICBpZiAodGhpc09i
amVjdC0+SlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoZXhlYywgcHJvcGVy
dHlOYW1lKSkgewotICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgICAgIGlmIChCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVj
dC0+d3JhcHBlZCgpKSkKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0zNjcsMjYgKzM2OCwyNiBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAgICAgaWYg
KGxvb2t1cFB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZv
LnN0YXRpY1Byb3BIYXNoVGFibGUsIHNsb3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNP
YmplY3QtPmltcGwoKSkpCisgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
IHZvaWQgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewog
ICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7
Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAoIXRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KTsKIAogICAg
IC8vIE9wdGltaXphdGlvbjogYWNjZXNzIEphdmFTY3JpcHQgZ2xvYmFsIHZhcmlhYmxlcyBkaXJl
Y3RseSBiZWZvcmUgaW52b2x2aW5nIHRoZSBET00uCiAgICAgaWYgKHRoaXNPYmplY3QtPkpTR2xv
YmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKGV4ZWMsIHByb3BlcnR5TmFtZSkpIHsK
LSAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQo
KSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkp
KQogICAgICAgICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOwogfQogCkBAIC0zOTQsNyArMzk1LDcgQEAgYm9vbCBKU0RPTVdpbmRv
dzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm8KIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBm
cmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwog
fQpAQCAtNDAzLDcgKzQwNCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8v
IE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3Jp
Z2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6
OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTQxMiw3ICs0
MTMsNyBAQCB1aW50MzJfdCBKU0RPTVdpbmRvdzo6Z2V0RW51bWVyYWJsZUxlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhl
IHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAg
ICByZXR1cm4gMDsKICAgICByZXR1cm4gQmFzZTo6Z2V0RW51bWVyYWJsZUxlbmd0aChleGVjLCB0
aGlzT2JqZWN0KTsKIH0KQEAgLTQyMSw3ICs0MjIsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpnZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UAogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBm
cmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFN0
cnVjdHVyZVByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CkBAIC00MzAsNyArNDMxLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm8KIHsKICAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7
CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRHZW5lcmljUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAg
LTQzOSw3ICs0NDAsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogewogICAgIEpTRE9NV2lu
ZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBP
bmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUg
b3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBl
ZCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00NDgsNyArNDQ5LDcgQEAg
dm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnQKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2lu
ZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlz
T2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtNDU3LDcgKzQ1OCw3IEBAIGJvb2wgSlNET01XaW5k
b3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBp
biB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0
dGVycyB0byBiZSBpbnRyb2R1Y2VkLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhp
c09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG9u
J3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29yIHByb3BlcnRpZXMuCkBA
IC00NzYsNyArNDc3LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAvLyBhIHByb3BlcnR5IG5hbWVkICJsb2NhdGlv
biIgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIGEgbmF2aWdhdGlvbiAoPHJkYXI6Ly9wcm9ibGVtLzU2
ODgwMzk+KS4KICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlRE9NV2luZG93KCZz
dGF0ZSkuZnJhbWUoKSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkudXNl
c0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkgewotICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIGltcGwoKSkpCisgICAgICAgICAgICBpZiAo
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCZzdGF0ZSwgd3Jh
cHBlZCgpKSkKICAgICAgICAgICAgICAgICBwdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTQ4Nyw3ICs0ODgsNyBAQCB2b2lkIEpTRE9NV2luZG93Ojpz
ZXRMb2NhdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKExvY2F0aW9uKiBs
b2NhdGlvbiA9IGltcGwoKS5sb2NhdGlvbigpKQorICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24g
PSB3cmFwcGVkKCkubG9jYXRpb24oKSkKICAgICAgICAgbG9jYXRpb24tPnNldEhyZWYoYWN0aXZl
RE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSksIGxvY2F0aW9uU3RyaW5n
KTsKIH0KIApAQCAtNTMwLDcgKzUzMSw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6Om9wZW4oRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPERPTVdpbmRvdz4gb3BlbmVkV2luZG93
ID0gaW1wbCgpLm9wZW4odXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5n
LCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSk7CisgICAg
UmVmUHRyPERPTVdpbmRvdz4gb3BlbmVkV2luZG93ID0gd3JhcHBlZCgpLm9wZW4odXJsU3RyaW5n
LCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRl
KSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSk7CiAgICAgaWYgKCFvcGVuZWRXaW5kb3cpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgb3BlbmVk
V2luZG93LmdldCgpKTsKQEAgLTU4NSw3ICs1ODYsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpz
aG93TW9kYWxEaWFsb2coRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIERpYWxvZ0hhbmRsZXIgaGFu
ZGxlcihzdGF0ZSk7CiAKLSAgICBpbXBsKCkuc2hvd01vZGFsRGlhbG9nKHVybFN0cmluZywgZGlh
bG9nRmVhdHVyZXNTdHJpbmcsIGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLCBmaXJzdERPTVdpbmRv
dygmc3RhdGUpLCBbJmhhbmRsZXJdKERPTVdpbmRvdyYgZGlhbG9nKSB7CisgICAgd3JhcHBlZCgp
LnNob3dNb2RhbERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVE
T01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSwgWyZoYW5kbGVyXShET01X
aW5kb3cmIGRpYWxvZykgewogICAgICAgICBoYW5kbGVyLmRpYWxvZ0NyZWF0ZWQoZGlhbG9nKTsK
ICAgICB9KTsKIApAQCAtNjM1LDEyICs2MzYsMTIgQEAgc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9z
dE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpT
RE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShpbXBsKCksIHN0YXRlKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1l
c3NhZ2Uod3JhcHBlZCgpLCBzdGF0ZSk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRp
bWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGltcGwoKS5kb2N1bWVudCgpID8gaW1wbCgpLmRvY3VtZW50
KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKKyAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1bWVudCgpID8g
d3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRB
Y3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50U2Vj
dXJpdHlQb2xpY3kpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02NTEsNyArNjUyLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGludCBkZWxheSA9IHN0YXRlLmFy
Z3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGludCByZXN1bHQgPSBpbXBsKCkuc2V0VGltZW91dChXVEY6Om1vdmUoYWN0aW9uKSwgZGVs
YXksIGVjKTsKKyAgICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldFRpbWVvdXQoV1RGOjptb3Zl
KGFjdGlvbiksIGRlbGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
CiAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NTksNyArNjYwLDcgQEAgSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gaW1wbCgpLmRvY3VtZW50KCkg
PyBpbXBsKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOwor
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBl
ZCgpLmRvY3VtZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFj
dGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndv
cmxkKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTY2OSw3ICs2NzAsNyBAQCBK
U1ZhbHVlIEpTRE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogICAgICAg
ICByZXR1cm4ganNOdW1iZXIoMCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
bnQgcmVzdWx0ID0gaW1wbCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSwg
ZWMpOworICAgIGludCByZXN1bHQgPSB3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFj
dGlvbiksIGRlbGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAg
ICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NzcsNyArNjc4LDcgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEZyYW1l
KiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5m
cmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CkBAIC02ODUsMTMgKzY4NiwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjphZGRFdmVudExpc3Rl
bmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS5hZGRFdmVudExpc3RlbmVy
KHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0
ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFs
c2UsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFu
KCZzdGF0ZSkpOworICAgIHdyYXBwZWQoKS5hZGRFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50
KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVj
dCgpLT53b3JsZCgpKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVF
dmVudExpc3RlbmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1w
bCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTY5OSw3ICs3
MDAsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS5yZW1vdmVFdmVudExpc3RlbmVyKHN0YXRlLmFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2Jh
bE9iamVjdCgpLT53b3JsZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZz
dGF0ZSkpOworICAgIHdyYXBwZWQoKS5yZW1vdmVFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50
KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVj
dCgpLT53b3JsZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFuKCZzdGF0ZSkp
OwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC03MDksOSArNzEwLDkgQEAgRE9N
V2luZG93KiBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYg
KG9iamVjdC0+aW5oZXJpdHMoSlNET01XaW5kb3c6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAm
anNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpz
Q2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICBpZiAob2JqZWN0LT5p
bmhlcml0cyhKU0RPTVdpbmRvd1NoZWxsOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2Fz
dDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpz
Q2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwCmluZGV4IDU0Y2I1ZTU0MDQyMDE1MDVkNWRhN2VhNDdlNzRmYTBjMmVmMGUwNjQuLjExMjA2
Njg1MjIyMjlmN2QxNmRlZjg2OWRmOTE3OTY3ZjUxY2E3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiB7CiAgICAgLy8gUmVwbGFjaW5nIEpTRE9NV2luZG93IHZpYSB0ZWxsaW5nIEpTRE9N
V2luZG93U2hlbGwgdG8gdXNlIHRoZSBzYW1lIERPTVdpbmRvdyBpdCBhbHJlYWR5IHVzZXMgbWFr
ZXMgbm8gc2Vuc2UsCiAgICAgLy8gc28gd2UnZCBiZXR0ZXIgbmV2ZXIgdHJ5IHRvLgotICAgIEFT
U0VSVCghd2luZG93KCkgfHwgZG9tV2luZG93LmdldCgpICE9ICZ3aW5kb3coKS0+aW1wbCgpKTsK
KyAgICBBU1NFUlQoIXdpbmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAhPSAmd2luZG93KCktPndy
YXBwZWQoKSk7CiAgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3Mg
cHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUg
dGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAg
Ly8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKQEAgLTk0LDkg
Kzk0LDkgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01X
aW5kb3c+IGRvbVdpbmRvdykKIC8vIEpTRE9NV2luZG93IG1ldGhvZHMKIC8vIC0tLS0KIAotRE9N
V2luZG93JiBKU0RPTVdpbmRvd1NoZWxsOjppbXBsKCkgY29uc3QKK0RPTVdpbmRvdyYgSlNET01X
aW5kb3dTaGVsbDo6d3JhcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpbmRvdygpLT5pbXBs
KCk7CisgICAgcmV0dXJuIHdpbmRvdygpLT53cmFwcGVkKCk7CiB9CiAKIC8vIC0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBjZWRiNTlj
NzM1MmFjZGYxMGEzMTc2YTA3YjIxODNhZTc1MmM2OGE4Li4wMWYwNDhkNjdhNGY1YjhkMGYxZWU5
NjlkNWQyNzU0NWYxMjc0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBERUNMQVJFX0lORk87CiAKLSAgICAgICAgRE9NV2luZG93JiBpbXBsKCkgY29uc3Q7
CisgICAgICAgIERPTVdpbmRvdyYgd3JhcHBlZCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBK
U0RPTVdpbmRvd1NoZWxsKiBjcmVhdGUoSlNDOjpWTSYgdm0sIFBhc3NSZWZQdHI8RE9NV2luZG93
PiB3aW5kb3csIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgK
aW5kZXggZTQ5NDE1ZTJiYzQyNDU4MGMyYmM5MDBiZDMyM2Y2N2IwODA5NTIzNS4uMjYyNmY1OGFl
ZWE5MDI0NTEwMGJkMmRiOWFlMTA3ZGUwYzMzZGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTUyLDE2ICs1MiwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbXBsZW1lbnRhdGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNET01P
YmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3QgQmFzZTsKIAotICAgIElt
cGxlbWVudGF0aW9uQ2xhc3MmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAg
fkpTRE9NV3JhcHBlcigpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigp
OyB9CisgICAgSW1wbGVtZW50YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8SW1wbGVtZW50YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KIAogcHJv
dGVjdGVkOgogICAgIEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxJbXBsZW1lbnRhdGlvbkNsYXNzPiYm
IGltcGwpCiAgICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAgICAg
LCBtX2ltcGwoJmltcGwubGVha1JlZigpKSB7IH0KKyAgICAgICAgLCBtX3dyYXBwZWQoV1RGOjpt
b3ZlKGltcGwpKSB7IH0KIAogcHJpdmF0ZToKLSAgICBJbXBsZW1lbnRhdGlvbkNsYXNzKiBtX2lt
cGw7CisgICAgUmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+IG1fd3JhcHBlZDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGF0YUN1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFD
dWVDdXN0b20uY3BwCmluZGV4IDdhYjMyNDVkMGJiYzJiZDdkZjU3ZjJiNzU5YjM0YjA0ODBmMzM1
YTEuLmJlNTNlYmVkOTUxNDFiZjY4NTYxOTc1YzQxNjdhZTUyYzAxZTJlYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcApAQCAtMzgsMTIgKzM4
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKIEpT
VmFsdWUgSlNEYXRhQ3VlOjp2YWx1ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJl
dHVybiBpbXBsKCkudmFsdWUoJnN0YXRlKTsKKyAgICByZXR1cm4gd3JhcHBlZCgpLnZhbHVlKCZz
dGF0ZSk7CiB9CiAKIHZvaWQgSlNEYXRhQ3VlOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIGltcGwoKS5zZXRWYWx1ZSgmc3RhdGUsIHZhbHVlKTsKKyAg
ICB3cmFwcGVkKCkuc2V0VmFsdWUoJnN0YXRlLCB2YWx1ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwCmlu
ZGV4IDBiMGZhOTA3NjAxNjU2NzEzMWNiOGQ3MDMzYzljODYxOGMwYTFkZTguLmRmYzhkNDRjZjY2
ZDVkZTJlZDkyZDJlY2RiYTFmMzY1NjYyOGU3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTRGF0YVRyYW5zZmVyOjp0eXBlcyhFeGVj
U3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gaW1wbCgp
LnR5cGVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSB3cmFwcGVkKCkudHlwZXMoKTsK
ICAgICByZXR1cm4gdHlwZXMuaXNFbXB0eSgpID8ganNOdWxsKCkgOiBqc0FycmF5KCZzdGF0ZSwg
Z2xvYmFsT2JqZWN0KCksIHR5cGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcAppbmRleCA4Mzg5ZDYxZTU4MzEzODU0ZjU1NjMzYzJjOTNkNTExNzMwYzNlYTBlLi4wZTli
OTc2N2ZjMzI5Y2Q5ZWM1NjNiZDliZTRjMWZlZmYxNjg1OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEpTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0
YXRlLCAmaW1wbCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZ3cmFw
cGVkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4
IDdkODBmNmYxYjhmZWExZDBhNzdlZGY4ODg2YjNlZDMzMGY2NmJmMDAuLjczNzYyY2FhMTNjNTRm
ZTVjZmI5NjM3ODA5MTkwZjQ4YzY2ODllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCkBAIC0xMzYsNyAr
MTM2LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QoY29uc3Qg
RGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKgogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9u
RXZlbnQ6OmFjY2VsZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIERldmlj
ZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9
IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmFjY2VsZXJhdGlv
bigpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUFjY2VsZXJh
dGlvbk9iamVjdChpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVyYXRpb24oKSwgc3RhdGUp
OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxl
cmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25F
dmVudDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eShFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogewotICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90
aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRh
KCktPmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSkKICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwogICAgIHJldHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmplY3QoaW1wLmRldmljZU1vdGlv
bkRhdGEoKS0+YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSgpLCBzdGF0ZSk7CkBAIC0xNTIs
NyArMTUyLDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnMKIAogSlNWYWx1ZSBKU0RldmljZU1v
dGlvbkV2ZW50Ojpyb3RhdGlvblJhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBE
ZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50JiBp
bXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5yb3RhdGlv
blJhdGUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBjcmVhdGVSb3Rh
dGlvblJhdGVPYmplY3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+cm90YXRpb25SYXRlKCksIHN0
YXRlKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OnJv
dGF0aW9uUmF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90
aW9uRXZlbnQ6OmludGVydmFsKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlTW90aW9u
RXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gd3JhcHBl
ZCgpOwogICAgIGlmICghaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+Y2FuUHJvdmlkZUludGVydmFs
KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLmRl
dmljZU1vdGlvbkRhdGEoKS0+aW50ZXJ2YWwoKSk7CkBAIC0xODksNyArMTg5LDcgQEAgSlNWYWx1
ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnQoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICBib29sIGludGVydmFsUHJvdmlkZWQgPSAhc3RhdGUuYXJndW1lbnQoNikuaXNV
bmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgaW50ZXJ2YWwgPSBzdGF0ZS5hcmd1bWVudCg2
KS50b051bWJlcigmc3RhdGUpOwogICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBkZXZpY2VN
b3Rpb25EYXRhID0gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKGFjY2VsZXJhdGlvbiwgYWNjZWxl
cmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgcm90YXRpb25SYXRlLCBpbnRlcnZhbFByb3ZpZGVkLCBp
bnRlcnZhbCk7Ci0gICAgaW1wbCgpLmluaXREZXZpY2VNb3Rpb25FdmVudCh0eXBlLCBidWJibGVz
LCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdldCgpKTsKKyAgICB3cmFwcGVkKCkuaW5p
dERldmljZU1vdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRldmljZU1vdGlv
bkRhdGEuZ2V0KCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Q3VzdG9tLmNwcAppbmRleCAxMTI3MDUyYmM2MDVlN2FjZGY2ZDVkYTY2ZGM0MjhmOGE4YmY4
ZWM2Li41NmFiZDliMjQxODAyMmUxNmUzOTg0ZGMzNzUwY2I1NTIyNmY3MWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRp
b25FdmVudEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEoRXhlY1N0YXRlJikgY29u
c3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2
aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAgIGlmICghaW1wLm9yaWVu
dGF0aW9uKCktPmNhblByb3ZpZGVBbHBoYSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAg
ICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5hbHBoYSgpKTsKQEAgLTQ4LDcg
KzQ4LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKEV4ZWNTdGF0
ZSYpIGNvbnN0CiAKIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQmV0YSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5iZXRhKCkpOwpA
QCAtNTYsNyArNTYsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YShF
eGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2Ft
bWEoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAg
PSBpbXBsKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwog
ICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVHYW1tYSgpKQogICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5n
YW1tYSgpKTsKQEAgLTY1LDcgKzY1LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZl
bnQ6OmdhbW1hKEV4ZWNTdGF0ZSYpIGNvbnN0CiAjaWYgUExBVEZPUk0oSU9TKQogSlNWYWx1ZSBK
U0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NIZWFkaW5nKEV4ZWNTdGF0ZSYp
IGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAg
IERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5v
cmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Y29tcGFz
c0hlYWRpbmcoKSk7CkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlv
bkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVl
IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0FjY3VyYWN5KEV4ZWNTdGF0
ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOwor
ICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlt
cC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KCkpCiAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9yaWVudGF0aW9uKCktPmNv
bXBhc3NBY2N1cmFjeSgpKTsKQEAgLTgzLDcgKzgzLDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NBY2N1cmFjeShFeGVjU3RhdGUmKSBjb25zdAogI2lm
ICFQTEFURk9STShJT1MpCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1
dGUoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAg
PSBpbXBsKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwog
ICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVBYnNvbHV0ZSgpKQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihpbXAub3JpZW50YXRpb24o
KS0+YWJzb2x1dGUoKSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgYm9vbCBhYnNvbHV0ZSA9IHN0YXRlLmFyZ3VtZW50KDYpLnRvQm9vbGVhbigmc3RhdGUp
OwogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG9yaWVudGF0aW9uID0gRGV2aWNl
T3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYWxwaGFQcm92aWRlZCwgYWxwaGEsIGJldGFQcm92aWRl
ZCwgYmV0YSwgZ2FtbWFQcm92aWRlZCwgZ2FtbWEsIGFic29sdXRlUHJvdmlkZWQsIGFic29sdXRl
KTsKICNlbmRpZgotICAgIGltcGwoKS5pbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCh0eXBlLCBi
dWJibGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5nZXQoKSk7CisgICAgd3JhcHBlZCgpLmlu
aXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIG9yaWVu
dGF0aW9uLmdldCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBlYzBiOWMy
YmEzMGU4NjBmNmUyYmE5ODAxNzBkOGY3MDJiNDQ1MmQ3Li4wOTRjZTNlMzIyZGIwZDcwYjIwYThk
YmEzMGU0YjEyMzU5Yzk4NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBEb2N1CiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucHJlcGVuZCh0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBKU1ZhbHVl
IEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVu
dDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgaW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAg
ICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHAKaW5kZXggYzM1MmQ1ZGI5N2JiY2RlMGM2Y2ZjOTYxZGJhZWE0ODFjYjcy
MTVjNS4uN2RhMzg0N2MxNzZmMDY3MGM3Y2NkNTkxMmYzNjkwMmZkOWMwNDg5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0
b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNE
b2N1bWVudEZyYWdtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00Niw3ICs0Niw3IEBAIEpTVmFsdWUgSlNEb2N1bWVudEZy
YWdtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFn
bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsK
KyAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwog
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5
cGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVD
dXN0b20uY3BwCmluZGV4IDgzMzM4NzIwMWJiZjYwMmI1NTUzNjA4YmViNTUxMDYyOWNlY2I5NWEu
LmE5M2Q2NzE3M2Q5NDI1NTZiMGYyMjYyY2I0MDgxOTIyMGIzZmU5ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6
YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaW1wbCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3
cmFwcGVkKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpA
QCAtNDUsNyArNDUsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpiZWZvcmUoRXhlY1N0YXRl
JiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBK
U0RvY3VtZW50VHlwZTo6YWZ0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVu
dFR5cGU6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IGZlZmRlMzU3YTdkY2I2ZWI3YzVkNmY2NjFlN2I1N2Y1YzAw
ZTk0MzEuLjFkNjUyNDJmMTYxYThiZTY2MmJmNzM2ZmY4MmQ1ZjhhNjZlMTk4YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyAr
NzAsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRWxlbWVudCogZQogSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9y
ZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBl
ZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTc5
LDcgKzc5LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQog
SlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucmVw
bGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgp
LnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAt
OTcsNyArOTcsNyBAQCBKU1ZhbHVlIEpTRWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBz
dGF0ZSkKIEpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgSlNWYWx1ZSBK
U0VsZW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNFbGVtZW50Ojph
cHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBpbXBsKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdy
YXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCmluZGV4IDUxZTlm
MGQ5MzBmNmM5ZjY5OGZkMjBhY2E5YjgwMWE2ODdhZjg3ZTAuLjYwOTk1NDE2OTU2ZmJkZTE1MThh
NTlhZGRjMGE1ZjQwNjY5NWY1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SlNWYWx1ZSBKU0V2ZW50OjpjbGlwYm9hcmREYXRhKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGltcGwoKS5pc0NsaXBib2FyZEV2ZW50KCkgPyB0b0pTKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCksIGltcGwoKS5jbGlwYm9hcmREYXRhKCkpIDoganNVbmRlZmluZWQoKTsKKyAg
ICByZXR1cm4gd3JhcHBlZCgpLmlzQ2xpcGJvYXJkRXZlbnQoKSA/IHRvSlMoJnN0YXRlLCBnbG9i
YWxPYmplY3QoKSwgd3JhcHBlZCgpLmNsaXBib2FyZERhdGEoKSkgOiBqc1VuZGVmaW5lZCgpOwog
fQogCiAjZGVmaW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IDI4MGNhMTJkZWJkMGYwMGY4NWVhYjMwYzk4Y2RiMzc4ZWRmMzcwY2IuLjgzZWNhOTRhNDA3ZTNh
MTI5OWNhYmY3Mjk4ODI2NDdjZWY2ODVmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIHZvaWQgSlNFdmVu
dExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0CiAKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0Nhc3Q8SlNET01XaW5kb3cq
PihnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoIXdpbmRvdy0+aW1wbCgpLmlzQ3VycmVudGx5
RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3Vy
cmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAv
LyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPwotICAgICAg
ICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQgPSB3aW5kb3ctPmltcGwoKS5mcmFtZSgpLT5zY3Jp
cHQoKTsKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0ID0gd2luZG93LT53cmFwcGVk
KCkuZnJhbWUoKS0+c2NyaXB0KCk7CiAgICAgICAgIGlmICghc2NyaXB0LmNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQuaXNQYXVzZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IGM3Yzc0NTA1YTZhMWZhZWYwY2M3ZGE5YjJjNjY1
MzI0ZTJkNGY3OWMuLmU4ZWFkMWMxZDQyZjBkZGZmZWU5NjZlMTgyMGVkMDI1MDg4MmY0YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20u
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAKICNkZWZpbmUg
VFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCiAgICAgaWYgKHZh
bHVlLmluaGVyaXRzKEpTIyNpbnRlcmZhY2VOYW1lOjppbmZvKCkpKSAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTIyNpbnRlcmZhY2VOYW1lKj4oYXNPYmpl
Y3QodmFsdWUpKS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKUyMjaW50ZXJmYWNl
TmFtZSo+KGFzT2JqZWN0KHZhbHVlKSktPndyYXBwZWQoKTsKIAogRXZlbnRUYXJnZXQqIEpTRXZl
bnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcAppbmRleCA1MWZiZjRm
YTE4MmY0YzNiYzQ2YmE1OGZiZGUwN2M1ZWY1OGYxMDY5Li5hM2MwOWIxODMwNDExOWE4ZWU4ZGQ3
N2I0ZDdkZmY1NDgyZDNiMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBKU1ZhbHVlIEpTRmlsZVJlYWRlcjo6cmVzdWx0KEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiB7Ci0gICAgRmlsZVJlYWRlciYgaW1wID0gaW1wbCgpOworICAgIEZpbGVSZWFkZXImIGlt
cCA9IHdyYXBwZWQoKTsKICAgICBpZiAoaW1wLnJlYWRUeXBlKCkgPT0gRmlsZVJlYWRlckxvYWRl
cjo6UmVhZEFzQXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcC5hcnJheUJ1ZmZlclJlc3VsdCgpKSk7CiAgICAgcmV0
dXJuIGpzT3duZWRTdHJpbmdPck51bGwoJnN0YXRlLCBpbXAuc3RyaW5nUmVzdWx0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCBlYmM1YmE3YWI2MzBjZmE1M2QwMTViMmM2ZDM0MjM4OTQ1MjgwOTE3Li5iMDFiZTdkYmQw
ZjAzZWNhODBjNmQwOTVmMGFlYzhjNzc2ZTg1MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbk9w
dGlvbnMpOwogCi0gICAgaW1wbCgpLmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNr
LnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRp
b25zLnJlbGVhc2UoKSk7CisgICAgd3JhcHBlZCgpLmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlv
bkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9z
aXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
QEAgLTEzNiw3ICsxMzYsNyBAQCBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24o
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNT
RVJUKHBvc2l0aW9uT3B0aW9ucyk7CiAKLSAgICBpbnQgd2F0Y2hJRCA9IGltcGwoKS53YXRjaFBv
c2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2su
cmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAgICBpbnQgd2F0Y2hJRCA9
IHdyYXBwZWQoKS53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3Np
dGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsK
ICAgICByZXR1cm4ganNOdW1iZXIod2F0Y2hJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXgg
MjU5MmY0NjcyZThhMjE3MGViZmZlYTIyZDgzMzU1ODEzMzlmMjFmOS4uOTRiYzMyNGFlZGUzODBm
MGFkOTI5Yzg0MzRjNWI5ZGFhOTliMGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1zKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVt
cyA9IGNvbGxlY3Rpb24tPmltcGwoKS5uYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMg
PSBjb2xsZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICAvLyBEbyBub3QgdXNlIHRoaXNPYmogaGVyZS4gSXQgY2FuIGJlIHRoZSBK
U0hUTUxEb2N1bWVudCwgaW4gdGhlIGRvY3VtZW50LmZvcm1zKGkpIGNhc2UuCiAgICAgSlNIVE1M
QWxsQ29sbGVjdGlvbioganNDb2xsZWN0aW9uID0ganNDYXN0PEpTSFRNTEFsbENvbGxlY3Rpb24q
PihleGVjLT5jYWxsZWUoKSk7Ci0gICAgSFRNTEFsbENvbGxlY3Rpb24mIGNvbGxlY3Rpb24gPSBq
c0NvbGxlY3Rpb24tPmltcGwoKTsKKyAgICBIVE1MQWxsQ29sbGVjdGlvbiYgY29sbGVjdGlvbiA9
IGpzQ29sbGVjdGlvbi0+d3JhcHBlZCgpOwogCiAgICAgLy8gQWxzbywgZG8gd2UgbmVlZCB0aGUg
VHlwZUVycm9yIHRlc3QgaGVyZSA/CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIEpTSFRNTEFs
bENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZQogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
KnN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkuaW1wbCgp
KSkKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLml0
ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCB3cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAgICAgcmV0dXJuIG5hbWVk
SXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAKaW5kZXggZTZlYzhkYzNjZWFmNGZhZjEzM2U0OGU5NDU5Yjk4YTYyODhkYzY4MS4u
MTRhZDk1YmIxNzYzNTI4OTc4NjAzMTdjODIwMjgxZjA4ZGZkMGI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250ZXh0QXR0cmlidXRlcyhF
eGVjU3RhdGUmIHN0YXRlLCBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJpYnUKIAogSlNWYWx1ZSBK
U0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAg
SFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAgICBIVE1MQ2FudmFzRWxlbWVu
dCYgY2FudmFzID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gc3Rh
dGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICAKICAg
ICBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJzOwpAQCAtODgsNyArODgsNyBA
QCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlJiBzdGF0
ZSkKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojpwcm9iYWJseVN1cHBvcnRzQ29udGV4
dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSBp
bXBsKCk7CisgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQoKTsKICAgICBp
ZiAoIXN0YXRlLmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxz
ZSk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwpAQCAtMTA5LDcgKzEwOSw3IEBA
IEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkwo
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gaW1w
bCgpOworICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBjb25zdCBTdHJpbmcmIHR5cGUgPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAppbmRleCA3Mjc5YTk0NTBhMTcxMzQwNTNmNjgzMDI1YzNjMTA4N2RhNTA3OTBiLi44
ODk3MDVhZmUwZDgzNmZjNmViNWI5MTgyOWY5ODAwODMxMmE2YmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAt
NDIsMTAgKzQyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbXBsKCkudHlw
ZSgpICE9IEZvcm1Db250cm9scywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRl
ciIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW1wbCgpLnR5cGUoKSAhPSBTZWxlY3RPcHRp
b25zLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNsYXNzJyBuYW1lR2V0dGVyIik7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSh3cmFwcGVkKCkudHlwZSgpICE9IEZvcm1Db250cm9scywgIlNob3VsZCBj
YWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
d3JhcHBlZCgpLnR5cGUoKSAhPSBTZWxlY3RPcHRpb25zLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNs
YXNzJyBuYW1lR2V0dGVyIik7CiAKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9
IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRl
eCA0MzE3NDI4NTQ2OGFlYWY3MTg3MWUwOTY0ZjQyNjExMmVjNWE2MDA5Li4xOTEyYzBiNmJlM2I4
OTYyNDRjNjJiZTE2ZmUxNTE5OTY0ZmUwMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJv
b2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlCiAKIGJvb2wgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1
ZSkKIHsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGltcGwoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IHdyYXBwZWQoKTsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFhdG9taWNQcm9wZXJ0eU5hbWUg
fHwgIWRvY3VtZW50Lmhhc0RvY3VtZW50TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5hbWUpKQpA
QCAtMTE1LDcgKzExNSw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUm
IHN0YXRlKSBjb25zdAogICAgIGlmICh2KQogICAgICAgICByZXR1cm4gdjsKIAotICAgIHJldHVy
biB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5hbGwoKSk7CisgICAgcmV0dXJu
IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmFsbCgpKTsKIH0KIAogdm9p
ZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIERvY3VtZW50KiBmaW5kQ2FsbGluZ0RvY3VtZW50
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFjYWxsZXJGcmFtZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhmdW5jdG9yLmNhbGxlckZyYW1l
KCktPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS5kb2N1bWVudCgpOworICAgIHJldHVy
biBhc0pTRE9NV2luZG93KGZ1bmN0b3IuY2FsbGVyRnJhbWUoKS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+d3JhcHBlZCgpLmRvY3VtZW50KCk7CiB9CiAKIC8vIEN1c3RvbSBmdW5jdGlvbnMKQEAg
LTE0MSw3ICsxNDEsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93c2Vycywg
cGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUgd2luZG93
LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7Ci0gICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
d3JhcHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdyYXBw
ZXIgPSB0b0pTRE9NV2luZG93U2hlbGwoZnJhbWUsIGN1cnJlbnRXb3JsZCgmc3RhdGUpKTsKICAg
ICAgICAgICAgIGlmICh3cmFwcGVyKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IHdyYXBwZXItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAi
b3BlbiIpKTsKQEAgLTE1NywxMCArMTU3LDEwIEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9w
ZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIC8vIGRvY3VtZW50Lm9wZW4gY2xvYmJlcnMgdGhl
IHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGRvY3VtZW50IGFuZAogICAgIC8vIGFsaWFzZXMgaXQg
d2l0aCB0aGUgYWN0aXZlIHNlY3VyaXR5IGNvbnRleHQuCi0gICAgRG9jdW1lbnQqIGFjdGl2ZURv
Y3VtZW50ID0gYXNKU0RPTVdpbmRvdyhzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBhc0pTRE9NV2lu
ZG93KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKS5kb2N1bWVudCgpOwog
CiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdHdvIHBhcmFtZXRlcnMgb3IgZmV3ZXIsIGRvIGEgbm9y
bWFsIGRvY3VtZW50IG9wZW4uCi0gICAgaW1wbCgpLm9wZW4oYWN0aXZlRG9jdW1lbnQpOworICAg
IHdyYXBwZWQoKS5vcGVuKGFjdGl2ZURvY3VtZW50KTsKICAgICByZXR1cm4gdGhpczsKIH0KIApA
QCAtMTY4LDcgKzE2OCw3IEBAIGVudW0gTmV3bGluZVJlcXVpcmVtZW50IHsgRG9Ob3RBZGROZXds
aW5lLCBEb0FkZE5ld2xpbmUgfTsKIAogc3RhdGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNIVE1MRG9jdW1lbnQqIHRoaXNEb2N1bWVudCwgTmV3bGluZVJl
cXVpcmVtZW50IGFkZE5ld2xpbmUpCiB7Ci0gICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9ICZ0
aGlzRG9jdW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gJnRoaXNE
b2N1bWVudC0+d3JhcHBlZCgpOwogICAgIC8vIERPTSBvbmx5IHNwZWNpZmllcyBzaW5nbGUgc3Ry
aW5nIGFyZ3VtZW50LCBidXQgYnJvd3NlcnMgYWxsb3cgbXVsdGlwbGUgb3Igbm8gYXJndW1lbnRz
LgogCiAgICAgc2l6ZV90IHNpemUgPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDNk
NDhkZjA0NDYwOTMzZWNjZjQ1NTM0YmI3Y2NhMTdjM2Q2YzU2ZjUuLjU4MzZhMTA3NGJlMjk1Njdl
MTZjYjg2ZTU1NDJkM2NjMjIwZDgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIEpTU2NvcGUqIEpTSFRNTEVsZW1lbnQ6OnB1c2hFdmVudEhhbmRsZXJT
Y29wZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlKSBjb25zdAogewotICAgIEhUTUxF
bGVtZW50JiBlbGVtZW50ID0gaW1wbCgpOworICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gd3Jh
cHBlZCgpOwogCiAgICAgLy8gVGhlIGRvY3VtZW50IGlzIHB1dCBvbiBmaXJzdCwgZmFsbCBiYWNr
IHRvIHNlYXJjaGluZyBpdCBvbmx5IGFmdGVyIHRoZSBlbGVtZW50IGFuZCBmb3JtLgogICAgIHNj
b3BlID0gSlNXaXRoU2NvcGU6OmNyZWF0ZShleGVjLCBhc09iamVjdCh0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCgpLCAmZWxlbWVudC5kb2N1bWVudCgpKSksIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggOGI1NWZhN2RlMzZlNWM2MDc4ODljOWIxZTlhNTFjM2Vj
OGE2OGI3Ni4uM2FmYjMyNjA3MjZkZGY1ZjM1ODBkMmY0MmI2ZjlhYmVkZjA2ZjViNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+
PiBuYW1lZEl0ZW1zID0gY29sbGVjdGlvbi0+aW1wbCgpLm5hbWVkSXRlbXMobmFtZSk7CisgICAg
VmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rpb24tPndyYXBwZWQoKS5u
YW1lZEl0ZW1zKG5hbWUpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwg
bmFtZWRJdGVtc1swXS5wdHIoKSk7CiAKLSAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1wbCgpLnR5
cGUoKSA9PSBGb3JtQ29udHJvbHMpOwotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlv
bi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPmltcGwoKS5vd25lck5vZGUoKS5yYWRpb05v
ZGVMaXN0KG5hbWUpLmdldCgpKTsKKyAgICBBU1NFUlQoY29sbGVjdGlvbi0+d3JhcHBlZCgpLnR5
cGUoKSA9PSBGb3JtQ29udHJvbHMpOworICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlv
bi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPndyYXBwZWQoKS5vd25lck5vZGUoKS5yYWRp
b05vZGVMaXN0KG5hbWUpLmdldCgpKTsKIH0KIAogYm9vbCBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGUzNGMwMzU0NmRkZWE2Y2Fk
ZWQxYTNjYWM5ZjdiZjdmMzM4OGJiYTQuLjNhZWQ3MDUyZjQ2MTVlZjBhYzkzNTllNzFhOTE1ODc4
MGIzYmQ1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgVmVj
dG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGltcGwoKS5uYW1lZEVsZW1lbnRzKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxl
bWVudD4+IG5hbWVkSXRlbXMgPSB3cmFwcGVkKCkubmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAKICAgICBpZiAobmFtZWRJdGVtcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGFiMDAw
ZjcxMzAxOWU5YjhhMGJmNThlMjM1ZDc0MTNhOWFjYjk1NDIuLjZmZDVhOTdiMjU3YzYwODU4Zjg5
MjliMmU5YTI5OTFiNTdkZjFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVSTChFeGVjU3RhdGUmIHN0
YXRlLCBIVE1MRnJhbWVFbGVtZW50KgogCiB2b2lkIEpTSFRNTEZyYW1lRWxlbWVudDo6c2V0TG9j
YXRpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBIVE1MRnJhbWVF
bGVtZW50JiBpbXAgPSBpbXBsKCk7CisgICAgSFRNTEZyYW1lRWxlbWVudCYgaW1wID0gd3JhcHBl
ZCgpOwogICAgIFN0cmluZyBsb2NhdGlvblZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hl
Y2soJnN0YXRlLCB2YWx1ZSk7CiAKICAgICBpZiAoIWFsbG93U2V0dGluZ0phdmFzY3JpcHRVUkwo
c3RhdGUsICZpbXAsIGxvY2F0aW9uVmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNzA4
NTZlNTUzYzRmZDZjN2QwMjBmYjk3MzU4OTg2YTI2NTI1MzU2YS4uMTI1YWVmN2VjMWQ3MzFmMjJl
MTE2NDBlODBmMzJiYjcwYWFlZWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkBAIC00MCw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvKiBmcmFtZUVsZW1lbnQgPSBpbXBsKCkuY2hpbGRy
ZW4oKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIGF1dG8qIGZyYW1lRWxlbWVudCA9IHdyYXBwZWQoKS5jaGlsZHJlbigpLT5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFp
czxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IDhmNDJkYmVmNTI0ZmQ2ZmQ4Y2UzZGFhMTExOWRkZmRiM2I5
YjAxNTUuLjM3MmYzNDI5ODE0Y2E4NTJmYTM1YTcyOGRhZGNmZTBiYTM2NDVmMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVj
dGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIApAQCAtNDQs
NyArNDQsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVj
dGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRNTElu
cHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQg
PSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKU0hUTUxJ
bnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwo
KTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlu
cHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CiAKQEAgLTYyLDcgKzYyLDcgQEAgSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNl
bGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiB2b2lkIEpTSFRNTElucHV0RWxl
bWVudDo6c2V0U2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxl
bWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9u
KCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTcxLDcgKzcxLDcgQEAg
dm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
RGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgSFRNTElucHV0RWxlbWVu
dCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC04MCw3ICs4MCw3IEBAIEpTVmFsdWUgSlNIVE1M
SW5wdXRFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
IAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0
ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU0hUTUxJ
bnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFu
Z2UoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGlt
cGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDQ0MDA5NzYxZDEzOWQxMzE4NjQ2YjVjOGU1
MWUyNWJhZDBlYjE0MDMuLjJmNDFjZmU1ZTI0YmY5ODgxYjYwM2UwNWY1ZDJlM2E5NzlhMGU1MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFF
bGVtZW50Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCB2b2lkIEpTSFRNTE1lZGlhRWxlbWVu
dDo6c2V0Q29udHJvbGxlcihFeGVjU3RhdGUmLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIC8vIDQu
OC4xMC4xMS4yIE1lZGlhIGNvbnRyb2xsZXJzOiBjb250cm9sbGVyIGF0dHJpYnV0ZS4KICAgICAv
LyBPbiBzZXR0aW5nLCBpdCBtdXN0IGZpcnN0IHJlbW92ZSB0aGUgZWxlbWVudCdzIG1lZGlhZ3Jv
dXAgYXR0cmlidXRlLCBpZiBhbnksIAotICAgIGltcGwoKS5zZXRNZWRpYUdyb3VwKFN0cmluZygp
KTsKKyAgICB3cmFwcGVkKCkuc2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CiAgICAgLy8gYW5kIHRo
ZW4gc2V0IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhlIGdpdmVuIHZhbHVlLgot
ICAgIGltcGwoKS5zZXRDb250cm9sbGVyKEpTTWVkaWFDb250cm9sbGVyOjp0b1dyYXBwZWQodmFs
dWUpKTsKKyAgICB3cmFwcGVkKCkuc2V0Q29udHJvbGxlcihKU01lZGlhQ29udHJvbGxlcjo6dG9X
cmFwcGVkKHZhbHVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA5MTVl
MDI4N2M3OGNkYzA5NWRiMWFkZTMzNWQ3NjBjZDNiNTgzZTdkLi45MjM0NWU2YjU3ZmNjNTAzMzg2
YTkwYzNhMTc3OTRjNGMxMzE2ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxPcHRpb25zQ29sbGVj
dGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVt
ID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjEs
MTMgKzYxLDEzIEBAIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aChFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgbmV3TGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aFZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFlYykKLSAg
ICAgICAgaW1wbCgpLnNldExlbmd0aChuZXdMZW5ndGgsIGVjKTsKKyAgICAgICAgd3JhcHBlZCgp
LnNldExlbmd0aChuZXdMZW5ndGgsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBl
Yyk7CiB9CiAKIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4U2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc2VsZWN0
SW5kZXhTZXR0ZXIoJmltcGwoKS5zZWxlY3RFbGVtZW50KCksIGV4ZWMsIGluZGV4LCB2YWx1ZSk7
CisgICAgc2VsZWN0SW5kZXhTZXR0ZXIoJndyYXBwZWQoKS5zZWxlY3RFbGVtZW50KCksIGV4ZWMs
IGluZGV4LCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJl
bW92ZShFeGVjU3RhdGUmIHN0YXRlKQpAQCAtNzUsOSArNzUsOSBAQCBKU1ZhbHVlIEpTSFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAvLyBUaGUgYXJn
dW1lbnQgY2FuIGJlIGFuIEhUTUxPcHRpb25FbGVtZW50IG9yIGFuIGluZGV4LgogICAgIEpTVmFs
dWUgYXJndW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBpZiAoSFRNTE9wdGlvbkVsZW1l
bnQqIG9wdGlvbiA9IEpTSFRNTE9wdGlvbkVsZW1lbnQ6OnRvV3JhcHBlZChhcmd1bWVudCkpCi0g
ICAgICAgIGltcGwoKS5yZW1vdmUob3B0aW9uKTsKKyAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShv
cHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgaW1wbCgpLnJlbW92ZShhcmd1bWVudC50b0ludDMy
KCZzdGF0ZSkpOworICAgICAgICB3cmFwcGVkKCkucmVtb3ZlKGFyZ3VtZW50LnRvSW50MzIoJnN0
YXRlKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5k
ZXggYjNkZjEzZjcyZWFhOGZiYWEwNzg2MDVmNDc2MzM5MjdlYmUwMmNjNi4uMzBlM2ViYmI4OWE0
ZWYyM2E1OTY5NGMzYWJlZTU3YTgwYTYyMzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSlNWYWx1ZSBKU0hUTUxTZWxl
Y3RFbGVtZW50OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MU2VsZWN0RWxl
bWVudCYgc2VsZWN0ID0gaW1wbCgpOworICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QgPSB3
cmFwcGVkKCk7CiAKICAgICBpZiAoIXN0YXRlLmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICAv
LyBXaGVuIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50LCB3ZSBzaG91bGQgY2FsbCBFbGVtZW50Ojpy
ZW1vdmUoKSB0byBkZXRhY2guCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgc2VsZWN0SW5kZXhTZXR0
ZXIoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkCiAKIHZvaWQgSlNIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc2Vs
ZWN0SW5kZXhTZXR0ZXIoJmltcGwoKSwgZXhlYywgaW5kZXgsIHZhbHVlKTsKKyAgICBzZWxlY3RJ
bmRleFNldHRlcigmd3JhcHBlZCgpLCBleGVjLCBpbmRleCwgdmFsdWUpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCAxYmI4NmRmODhjOWRlZWFiMDliYTA2ZjMyNWRlN2JkZjY2ZDQ0
OGFmLi45N2FiZTc3YzBiMDNhYjE2NWRiNmQ0NzZkOGVhMTk4ZDE4N2JjMGNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU0hUTUxUZW1wbGF0ZUVsZW1l
bnQ6OmNvbnRlbnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBKU0xvY2tIb2xkZXIg
bG9jaygmc3RhdGUpOwogCi0gICAgRG9jdW1lbnRGcmFnbWVudCogY29udGVudCA9IGltcGwoKS5j
b250ZW50KCk7CisgICAgRG9jdW1lbnRGcmFnbWVudCogY29udGVudCA9IHdyYXBwZWQoKS5jb250
ZW50KCk7CiAKICAgICBKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFs
T2JqZWN0KCktPndvcmxkKCksIGNvbnRlbnQpOwogICAgIGlmICh3cmFwcGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggYTJjNjllYmVl
M2RhODhhMzliNzRlODcyZGJlNGM5MmQ3NWY1YTlkMi4uMmJkMmY2ZDhlMzg0N2IzMDRmZTk1OGM0
MjgyZjIwMTk3YTIzOWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hp
c3RvcnlDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgSlNIaXN0b3J5OjpnZXRPd25Q
cm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
CiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlzIG9ubHkgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUg
V2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUsIHNvIGlmIGFjY2VzcyBpcwogICAgIC8vIGFsbG93
ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9ybWFsIGxvb2t1cCB3aWxsIHRha2UgcGxhY2UuCiAg
ICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCBpbXBsKCkuZnJhbWUoKSwgbWVzc2FnZSkpCisgICAgaWYgKHNob3VsZEFsbG93QWNjZXNzVG9G
cmFtZShleGVjLCB3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93
LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KQEAgLTY5LDE0ICs2OSwxNCBAQCBib29s
IEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBw
cmludEVycm9yTWVzc2FnZUZvckZyYW1lKGltcGwoKS5mcmFtZSgpLCBtZXNzYWdlKTsKKyAgICBw
cmludEVycm9yTWVzc2FnZUZvckZyYW1lKHdyYXBwZWQoKS5mcmFtZSgpLCBtZXNzYWdlKTsKICAg
ICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEpTSGlz
dG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
ZXhlYywgaW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIHdyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpAQCAtODQsNyArODQsNyBAQCBib29sIEpTSGlzdG9yeTo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5Uwog
Ym9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9yeSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC05Miw3ICs5Miw3IEBA
IGJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiBib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSGlzdG9yeSo+KGNl
bGwpOwotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3Qt
PmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMDAsMTQgKzEwMCwxNCBAQCBib29sIEpTSGlzdG9yeTo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcgogdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTSGlzdG9yeSo+KG9iamVjdCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpzdGF0
ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEhpc3RvcnkmIGhpc3RvcnkgPSBpbXBs
KCk7CisgICAgSGlzdG9yeSYgaGlzdG9yeSA9IHdyYXBwZWQoKTsKIAogICAgIEpTVmFsdWUgY2Fj
aGVkVmFsdWUgPSBtX3N0YXRlLmdldCgpOwogICAgIGlmICghY2FjaGVkVmFsdWUuaXNFbXB0eSgp
ICYmICFoaXN0b3J5LnN0YXRlQ2hhbmdlZCgpKQpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTVmFsdWUg
SlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTSGlz
dG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0
ZS5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgSlNWYWx1ZSBKU0hpc3Rv
cnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxl
YXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UHVzaCwgZWMpOwor
ICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRp
dGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UHVzaCwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3RhdGUuY2xlYXIoKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIGltcGwoKS5mcmFtZSgp
KSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIHdyYXBwZWQoKS5m
cmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCAwLCAwKTsKQEAgLTE2OSw3ICsxNjks
NyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnN0YXRlT2JqZWN0
QWRkZWQoaGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVP
YmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQo
aGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RU
eXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAg
ICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCBlNTM1MDhmMWI2NWQzYWFhYzg2Y2MzZTU0OTBj
MGE5M2U4M2E0MGViLi5jZGViNjg5MjRmM2U0NzEyMjgzNzFmZGU0NmIxYWJlYzcyZjg4MTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9t
LmNwcApAQCAtNzYsNyArNzYsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGlt
cGwoKS5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBlYyku
Z2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCB3cmFwcGVkKCkuY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVu
dCwgZWMpLmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggMDEyODhjNmVhY2FmNzU3ODQzNGM0MTIxODVk
MDU0ZDU2ODI4YjlkYS4uMThmMDI0ZmYyMWNhZjNiNGY3YzA0OGFkZjk0MTU5ZDRjMzIyOTg5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpj
cmVhdGVJbmRleChFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCBpbXBsKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0
aUVudHJ5LCBlYykuZ2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0
aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBlYykuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
CmluZGV4IGUyNmJiZTc4ZDlmYmJjNDkyMGNlMWVmY2I0YzM1MGZkN2ExMzI0YjguLjllNjllMWJm
ZDY2NGI2NmE4YzNkYWRmMTcyNWZhNDg4Njk5Mzg4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpz
aG93Q29udGV4dE1lbnUoRXhlY1N0YXRlJiBzdGF0ZSkKICNlbHNlCiAgICAgVmVjdG9yPENvbnRl
eHRNZW51SXRlbT4gaXRlbXMgPSBtZW51Lml0ZW1zKCk7CiAjZW5kaWYKLSAgICBpbXBsKCkuc2hv
d0NvbnRleHRNZW51KGV2ZW50LCBpdGVtcyk7CisgICAgd3JhcHBlZCgpLnNob3dDb250ZXh0TWVu
dShldmVudCwgaXRlbXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmlu
ZGV4IDEzMWUyODcwYmRiNTlkNjA1MzZhOTEwYTc3MWRkNTA3NzJjMDZlNDkuLjAwODNlMGNmMTU5
Y2MxZjg5MDBjZmExOGRkN2I0MjU1ZTA5MzQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAg
IHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzMsNyArNzMs
NyBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcgogCiBib29sIEpTTG9jYXRpb246OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwo
KS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9v
bCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3AKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZy
YW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wg
SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwCiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFt
ZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93
QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTG9jYXRpb24qPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIGxvY2F0
aW9uIG9iamVjdCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0g
ICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgp
LmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CiB9CkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiBKU1Zh
bHVlIEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFw
cGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoJnN0YXRlLCBmcmFtZSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLnRvU3RyaW5nKCkpOworICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS50b1N0cmluZygpKTsK
IH0KIAogYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3Rh
dGVzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VT
dGF0ZXNDdXN0b20uY3BwCmluZGV4IDgwMThiMjYzM2I3OGU5Y2UxZGUyOTEzM2Q5ZDk0ZTY3MDJl
YTM1MWUuLjc1ZTljYWJiYzM4OTdlMTYwMWVkNmM2NTNjNDVmOWNiNWYyNTI3N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXND
dXN0b20uY3BwCkBAIC0zNyw1NCArMzcsNTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OndpZHRoKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAg
aWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRl
b1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBq
c051bWJlcihpbXBsKCkud2lkdGgoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS53
aWR0aCgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0
YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlm
ICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuaGVpZ2h0KCkpOworICAgIHJl
dHVybiBqc051bWJlcih3cmFwcGVkKCkuaGVpZ2h0KCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFT
b3VyY2VTdGF0ZXM6OmZyYW1lUmF0ZShFeGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmICghaW1w
bCgpLmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2Uo
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAgcmV0dXJuIGpzTnVt
YmVyKGltcGwoKS5mcmFtZVJhdGUoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5m
cmFtZVJhdGUoKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0
aW8oRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgp
KQorICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuYXNwZWN0UmF0
aW8oKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5hc3BlY3RSYXRpbygpKTsKIH0K
IAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAo
IXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IGltcGwoKS5mYWNpbmdNb2RlKCk7
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gd3JhcHBlZCgpLmZhY2luZ01vZGUoKTsK
ICAgICBpZiAobW9kZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwoKS5mYWNpbmdN
b2RlKCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5m
YWNpbmdNb2RlKCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShF
eGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmIChpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAg
ICBpZiAod3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkudm9sdW1lKCkpOworICAg
IHJldHVybiBqc051bWJlcih3cmFwcGVkKCkudm9sdW1lKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwCmluZGV4IDAxOTY1ZTRiNDI3MjY2ZmZkMjc4OWM4YjliMjg0OGE5
YWUyZGE4N2EuLjM3NWRkNGI1ZjAzNjM5M2ZhYmVmYzMzODg3N2E2N2JlZTI3ZmJiNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0
b20uY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpT
TWVzc2FnZUNoYW5uZWw6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgpLnBvcnQxKCkp
CisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gd3JhcHBlZCgpLnBvcnQxKCkpCiAgICAgICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IGltcGwoKS5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHdyYXBwZWQo
KS5wb3J0MigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cAppbmRleCA0NGQ5NTQ3ZjY3NmU5ODU2ZTlkNWE0MWI0NzQyNTIzZDRjNzIxNTMzLi5iNTVkYzRl
YTI1MjQ0MDJlNWJlNGE4MmQyMjU2NjEwMGY2MjMxYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3
IEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgTWVzc2FnZUV2ZW50
JiBldmVudCA9IGltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAg
IGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7CkBAIC03OCw3ICs3OCw3
IEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
IAogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZToK
ICAgICAgICAgaWYgKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1
ZSA9IGV2ZW50LmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBN
ZXNzYWdlUG9ydEFycmF5IHBvcnRzID0gaW1wbCgpLnBvcnRzKCk7CisgICAgICAgICAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRzID0gd3JhcHBlZCgpLnBvcnRzKCk7CiAgICAgICAgICAgICAvLyBG
SVhNRTogV2h5IGRvZXMgdGhpcyBzdXBwcmVzcyBleGNlcHRpb25zPwogICAgICAgICAgICAgcmVz
dWx0ID0gc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCAmcG9ydHMsIE5vblRocm93aW5nKTsKICAgICAgICAgfSBlbHNlCkBAIC0xMjQsNyArMTI0LDcg
QEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2
ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZUV2ZW50JiBldmVu
dCA9IGpzRXZlbnQtPmltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0ganNFdmVudC0+
d3JhcHBlZCgpOwogICAgIGV2ZW50LmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxl
QXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBz
b3VyY2VBcmcsIFdURjo6bW92ZShtZXNzYWdlUG9ydHMpKTsKICAgICBqc0V2ZW50LT5tX2RhdGEu
c2V0KHN0YXRlLnZtKCksIGpzRXZlbnQsIGRhdGFBcmcuanNWYWx1ZSgpKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggMjM5ZjQ3YWZkNmRhNWViZTUxOTBlN2NiYjU5M2UzM2Jl
YmY5MWUxZi4uNmIyMTI0NDk4NzVlNzhlOGNiYmRkNzJmYzIzZDBmNjliODM5NjkwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAK
QEAgLTQ4LDEzICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIEpTTWVzc2FnZVBv
cnQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAg
IC8vIElmIHdlIGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBwb3J0LCB3ZSBjYW4gZGlyZWN0bHkg
bWFyayBpdCBhcyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJlIHJlbW90ZWx5IGVudGFuZ2xlZCBh
cmUgbWFya2VkIGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoKS4KLSAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAg
ICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB3cmFwcGVkKCkubG9jYWxseUVudGFuZ2xlZFBvcnQo
KSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCiBKU0M6OkpTVmFs
dWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewot
ICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmltcGwoKSk7CisgICAgcmV0dXJu
IGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsKIH0KIAogdm9pZCBmaWxsTWVz
c2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
TWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5LCBBcnJheUJ1ZmZlckFycmF5JiBhcnJheUJ1ZmZl
cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAppbmRleCBjNDY4YWFkNmE2MTRlNDlm
MmE3ZmM5OTIyZWMyYmFkMjQyNDJlYzVkLi5kZWFiYzU0MWRiMDZmMTA5ZTRkMGJmYzZjNzE5NDA5
YjUxODliOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgdXNpbmcgRGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uUG9pbnQ7CiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNp
c2lvblBvaW50KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGVjaXNpb25Qb2ludCBkZWNpc2lv
blBvaW50ID0gaW1wbCgpLmRlY2lzaW9uUG9pbnQoKTsKKyAgICBEZWNpc2lvblBvaW50IGRlY2lz
aW9uUG9pbnQgPSB3cmFwcGVkKCkuZGVjaXNpb25Qb2ludCgpOwogICAgIHN3aXRjaCAoZGVjaXNp
b25Qb2ludCkgewogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3Q6
CiAgICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0OgpAQCAtNjksNyArNjksNyBA
QCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJB
ZGREYXRhOgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGE6
CiAgICAgY2FzZSBEZWNpc2lvblBvaW50OjpOZXZlcjoKLSAgICAgICAgaW1wbCgpLnNldERlY2lz
aW9uUG9pbnQoZGVjaXNpb25Qb2ludCk7CisgICAgICAgIHdyYXBwZWQoKS5zZXREZWNpc2lvblBv
aW50KGRlY2lzaW9uUG9pbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcsNyAr
MTA3LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpkZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAogewotICAgIHJldHVybiB0b0pTVmFsdWUoaW1w
bCgpLmRlY2lzaW9uKCkpOworICAgIHJldHVybiB0b0pTVmFsdWUod3JhcHBlZCgpLmRlY2lzaW9u
KCkpOwogfQogCiB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZv
aWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLnNldERlY2lzaW9uKGRlY2lzaW9uKTsKKyAgICB3cmFw
cGVkKCkuc2V0RGVjaXNpb24oZGVjaXNpb24pOwogfQogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAog
ewotICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgpLnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSk7
CisgICAgcmV0dXJuIHRvSlNWYWx1ZSh3cmFwcGVkKCkudW5ibG9ja1JlcXVlc3REZWNpc2lvbigp
KTsKIH0KIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKUwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLnNldFVuYmxvY2tSZXF1ZXN0RGVj
aXNpb24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgd3JhcHBlZCgpLnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CiB9CiAKIH07IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAzODA1NTcyNDcyMDI2YjJhNDhkNDIzMzZh
NmNiMDlkNDhiZGE2Yjg1Li5jNmM1NzI0MDNhZTZiNzgzMjQ2MmUwNjFiNmMzMjYxMzI0NDMyN2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25P
YnNlcnZlckN1c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlKiBleGVjKQogCiBi
b29sIEpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRp
b25PYnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+aW1wbCgpOworICAgIE11dGF0
aW9uT2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlcio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKS0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JzZXJ2ZWROb2RlcyA9
IG9ic2VydmVyLmdldE9ic2VydmVkTm9kZXMoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBvYnNlcnZl
ZE5vZGVzLmJlZ2luKCksIGVuZCA9IG9ic2VydmVkTm9kZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBpZiAodmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCgqaXQpKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcAppbmRleCA4NDZjZjhmYWE4YzUxMWVmODIxNTE3MDFiNGEwMDhiYWZhMWJmY2QxLi5hMzFl
NDZhODQzMjE4Yzk4NmE4NDEyYTQ4MDc2ZjA5ODliYjg0NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU05hbWVkTm9kZU1hcDo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUm
IHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBl
ZCgpLmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDNkNWZlMTI0
ODY0ODYzNGE2NGExZDg5NzVjNGFjMWJjM2QxYmQ5YjguLmYyNGMwNTVmYzg5YjlkZTdiOWE1NWM0
ZTYwZTQ5MDcyY2FkOTU2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTY4LDEzICs2OCwxMyBAQCBKU1ZhbHVlIEpTTmF2aWdh
dG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaWYgKCFpbXBsKCkuZnJhbWUoKSkgeworICAg
IGlmICghd3JhcHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICB9CiAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBwcm90ZWN0IHRoZSBjb250ZXh0IChpLmUu
IGRvY3VtZW50KSBoZXJlIGFzIFVzZXJNZWRpYVJlcXVlc3QgaXMgb2JzZXJ2aW5nIGNvbnRleHQg
ZGVzdHJ1Y3Rpb24gYW5kIHdpbGwgY2hlY2sgdmFsaWRpdHkgYmVmb3JlIHJlc29sdmluZy9yZWpl
Y3RpbmcgcHJvbWlzZS4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCkuZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3cmFwcGVkKCkuZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKIAogICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
OjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBnbG9iYWxPYmpl
Y3QoKSk7CiAgICAgYXV0byByZXNvbHZlQ2FsbGJhY2sgPSBbc3VjY2Vzc0NhbGxiYWNrLCBkb2N1
bWVudF0oY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFtPiYgc3RyZWFtKSBtdXRhYmxlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDJjMWE5ZjgzMGUz
NTI3MTU1YTZjZjM3ZDY3N2RjYjIwMmQxMzZjZTguLjMxMjNjOTQ2MDk1NGViZGIzNWQyMjhmOThk
OTYxY2Y0N2ZjM2YyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcApAQCAtMTA4LDEzICsxMDgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVhY2hh
YmxlRnJvbURPTShOb2RlKiBub2RlLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIGJvb2wgSlNOb2Rl
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNOb2RlKiBq
c05vZGUgPSBqc0Nhc3Q8SlNOb2RlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIHJl
dHVybiBpc1JlYWNoYWJsZUZyb21ET00oJmpzTm9kZS0+aW1wbCgpLCB2aXNpdG9yKTsKKyAgICBy
ZXR1cm4gaXNSZWFjaGFibGVGcm9tRE9NKCZqc05vZGUtPndyYXBwZWQoKSwgdmlzaXRvcik7CiB9
CiAKIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmluc2VydEJlZm9y
ZShKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVk
KHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkuaW5zZXJ0
QmVmb3JlKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0b1dy
YXBwZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpA
QCAtMTI0LDcgKzEyNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRl
JiBzdGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLnJlcGxh
Y2VDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9X
cmFwcGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCku
cmVwbGFjZUNoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2Rl
Ojp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50
KDEpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0
YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgb2sgPSBpbXBsKCku
cmVtb3ZlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7Cisg
ICAgYm9vbCBvayA9IHdyYXBwZWQoKS5yZW1vdmVDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0
ZS5hcmd1bWVudCgwKSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgaWYgKG9rKQogICAgICAgICByZXR1cm4gc3RhdGUuYXJndW1lbnQoMCk7CkBAIC0xNDQsNyAr
MTQ0LDcgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmFwcGVuZENoaWxkKEpTTm9k
ZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFw
cGVkKCkuYXBwZW5kQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAg
ICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTU2NvcGUq
IEpTTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSog
bm9kZSkgY29uc3QKIAogdm9pZCBKU05vZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwo
KSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKSkpOwogfQogCiBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
CmluZGV4IDJiNDA0MGUzZDk2ZjE2N2U4NjViNjY4MDVhZjNkOTlhMDNiNDMwOGYuLmIzZjAzNjEz
OWZhMGZiMTgwNjQ4NGE2MTBkODRhYzVhYzU3Y2E0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChOb2Rl
RmlsdGVyKiBmaWx0ZXIgPSBpbXBsKCkuZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZp
bHRlciA9IHdyYXBwZWQoKS5maWx0ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KGZpbHRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlz
dEN1c3RvbS5jcHAKaW5kZXggZjdkODYzYjhlMzk1ZGJmY2YxMTNjYzY4NmIzNWY0Njg3NGQ1MDBh
Mi4uYmEwNjJiZWEyOWI0NjAzZDRiNzE5YmNkNzdmYjZmMjcxZTMxZDA0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTQyLDEyICs0
MiwxMiBAQCBib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxp
c3QgPSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBp
ZiAoIWpzTm9kZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNMaXZlTm9kZUxpc3QoKSkKLSAgICAg
ICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8TGl2
ZU5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChq
c05vZGVMaXN0LT5pbXBsKCkuaXNDaGlsZE5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNp
dG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PENoaWxkTm9kZUxpc3QmPihq
c05vZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7Ci0gICAgaWYgKGpzTm9kZUxpc3QtPmlt
cGwoKS5pc0VtcHR5Tm9kZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8RW1wdHlOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmlt
cGwoKSkub3duZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzTGl2
ZU5vZGVMaXN0KCkpCisgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChy
b290KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPndyYXBwZWQoKSkub3du
ZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzQ2hpbGROb2RlTGlz
dCgpKQorICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0
aWNfY2FzdDxDaGlsZE5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+d3JhcHBlZCgpKS5vd25lck5vZGUo
KSkpOworICAgIGlmIChqc05vZGVMaXN0LT53cmFwcGVkKCkuaXNFbXB0eU5vZGVMaXN0KCkpCisg
ICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0
PEVtcHR5Tm9kZUxpc3QmPihqc05vZGVMaXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVPclN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHAKaW5kZXggMzQzNjFhZjQ5NmE4ZGM5N2VjN2IzNDZhNWMwNDNkOTZmY2Ri
Yjk1Zi4uNDQ3YzVkNzAwZDU2NTFlYWRmMTQwNGJkM2E3YjFmNDg2MTEzMzI2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBWZWN0b3I8Tm9kZU9yU3RyaW5nPiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUm
IHN0YXRlKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7
CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKTsKICAg
ICAgICAgaWYgKGF1dG8qIG5vZGUgPSBqc0R5bmFtaWNDYXN0PEpTTm9kZSo+KHZhbHVlKSkKLSAg
ICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoJm5vZGUtPmltcGwoKSk7CisgICAgICAg
ICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCZub2RlLT53cmFwcGVkKCkpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSB2YWx1ZS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgICAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAppbmRl
eCA5OGM4ODE0OWYzOWUyYjBjYmE4MWQzNTJlNWI5YmRiMjkwNWNiMjk3Li4zYWRmODAyMjVjNDNi
ZmIzZGRiNTY3YjE2OTVjYWU3ZDAyNmJlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZShF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIE9zY2lsbGF0b3JOb2RlJiBp
bXAgPSBpbXBsKCk7CisgICAgT3NjaWxsYXRvck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lm
IEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcApp
bmRleCA4NmMwM2VkM2ZiODkyNTlhY2Y5OGNlMzMyYTY5MjQyODdlZTNiMDFkLi42NzkwZjg0YTdj
ZWU5ZjE2NjEyNmNmNjQxNDUwYzFiNDM0Njg0MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUGFubmVyTm9kZSYgaW1wID0g
aW1wbCgpOworICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShM
RUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CkBAIC02Myw3ICs2
Myw3IEBAIHZvaWQgSlNQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogdm9pZCBKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBQYW5uZXJOb2RlJiBpbXAg
PSBpbXBsKCk7CisgICAgUGFubmVyTm9kZSYgaW1wID0gd3JhcHBlZCgpOwogCiAjaWYgRU5BQkxF
KExFR0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwCmluZGV4IGM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRjODRkYTkwY2EuLjgzMGMz
MDU1ODg0MWMwMjIyYmRmMmQ4ODEzZWRkN2IyMTc5MDVkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVn
aW5WaWV3QmFzZShIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRQogCiBzdGF0aWMgSlNPYmplY3Qq
IHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hU
TUxFbGVtZW50KQogewotICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+
aW1wbCgpOworICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+d3JhcHBl
ZCgpOwogICAgIGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdp
blNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxFbGVt
ZQogCiBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1M
RWxlbWVudCoganNIVE1MRWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpz
SFRNTEVsZW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVs
ZW1lbnQtPndyYXBwZWQoKTsKICAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBDYWxsVHlw
ZSBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgQ2FsbERh
dGEmIGNhbGxEYXRhKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogICAgIH0KICAgICAK
LSAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT5pbXBsKCkp
OworICAgIEluc3RhbmNlKiBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGVsZW1lbnQtPndyYXBw
ZWQoKSk7CiAgICAgaWYgKCFpbnN0YW5jZSB8fCAhaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVm
YXVsdE1ldGhvZCgpKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVOb25lOwogICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxQbHVnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA1Zjg2OWE5MTJlMDY2
ZTQ5YjUyZWU4YTBmMTRiZjY0NzVkYTJhOGE4Li45NWEwZmI3ODI1Y2IzMDZiMDQ4YmM3ODNjZmYx
YzZiOWExMTdiMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bv
cFN0YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgSlNWYWx1ZSBKU1BvcFN0
YXRlRXZlbnQ6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gaW1wbCgp
OworICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogCiAgICAgaWYgKCFldmVu
dC5zdGF0ZSgpLmhhc05vVmFsdWUoKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSBhIFBvcFN0YXRlRXZlbnQgZG9lcyBub3QgbGVhayBvYmplY3RzIGluIGl0cyBzdGF0ZSBwcm9w
ZXJ0eSBhY3Jvc3MgaXNvbGF0ZWQgRE9NIHdvcmxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCmluZGV4IDllZjVl
OTNlZDFjZTVhZmFiYmQ5YWRjYjBkY2I2YTM4YjRmNGFkMTEuLjQwZTViOTBjYzI3ZThjNGUxMzMw
MDJiNjJkOGExMThhMDE3NDU3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNSVENTdGF0c1Jlc3BvbnNlOjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlm
ICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRl
eCBiMzM2NGQyNjQ1MTQ1MjZiNTdiZmVlMGVkMThkZjVkNmQwNDBjODI0Li4zZWFlZjI2MTI1YmZh
YjhmN2Q1MmE1MjEzNjAyZGYwZjMxZmUyOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTQ3
LDE3ICs0NywxNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3Rh
dGUmIHN0YXRlKQogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBUWVBFX01JU01BVENI
X0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBpZiAoaW5k
ZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSBpbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAo
aW5kZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSB3cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5ERVhfU0laRV9FUlIpOwogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKIAotICAgIHVuc2lnbmVkIG51bUNvbHVtbnMgPSBp
bXBsKCkuY29sdW1uTmFtZXMoKS5zaXplKCk7CisgICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IHdy
YXBwZWQoKS5jb2x1bW5OYW1lcygpLnNpemUoKTsKICAgICB1bnNpZ25lZCB2YWx1ZXNJbmRleCA9
IGluZGV4ICogbnVtQ29sdW1uczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29s
dW1uczsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IGltcGwoKS52YWx1
ZXMoKVt2YWx1ZXNJbmRleCArIGldOworICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSB3
cmFwcGVkKCkudmFsdWVzKClbdmFsdWVzSW5kZXggKyBpXTsKICAgICAgICAgSlNWYWx1ZSBqc1Zh
bHVlOwogCiAgICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CkBAIC03NCw3ICs3NCw3IEBA
IEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCBpbXBsKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCB3cmFwcGVkKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERv
bnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHAKaW5kZXggOTVhOGRmY2U4NWEzMjZiYjMxNWIwZGYyYmVmMWU4NDQwYmExNTFmZi4uNzQyMTI1
NmIwNDZhOGQ3MjY4ZTIzNjdkYzJlMTNjZmFhYzIyNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCku
ZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBl
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHdyYXBwZWQoKS5leGVjdXRlU1FMKHNx
bFN0YXRlbWVudCwgc3FsVmFsdWVzLCBjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2su
cmVsZWFzZSgpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR0xlbmd0aEN1c3RvbS5jcHAKaW5kZXggYjZmMGNmODM2MTVmNzFlNjU1ODhjZTNkZTNmY2Ji
YWRkMTViNmVkZS4uNjRlMTEyODQ2Zjg3ZTI2YmE0NWY0MDMxMzA2ODNjODRiMGJhYTdlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcApA
QCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNTVkdMZW5n
dGg6OnZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgU1ZHTGVuZ3RoJiBwb2RJ
bXAgPSBpbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICBTVkdMZW5ndGgmIHBvZEltcCA9
IHdyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVsZW1l
bnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5jb250
ZXh0RWxlbWVudCgpKTsKICAgICBmbG9hdCB2YWx1ZSA9IHBvZEltcC52YWx1ZShsZW5ndGhDb250
ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6dmFsdWUoRXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoaW1wbCgpLmlzUmVhZE9ubHkoKSkg
eworICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC01NywyNyArNTcsMjcgQEAgdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7Cisg
ICAgU1ZHTGVuZ3RoJiBwb2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dChpbXBsKCkuY29udGV4dEVsZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5n
dGhDb250ZXh0KHdyYXBwZWQoKS5jb250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuc2V0VmFs
dWUodmFsdWUudG9GbG9hdCgmc3RhdGUpLCBsZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKGVj
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGltcGwoKS5jb21taXRDaGFuZ2UoKTsKKyAgICB3cmFwcGVkKCkuY29t
bWl0Q2hhbmdlKCk7CiB9CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGltcGwoKS5pc1JlYWRPbmx5KCkp
IHsKKyAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBTVkdMZW5ndGgmIHBvZEltcCA9IGltcGwo
KS5wcm9wZXJ0eVJlZmVyZW5jZSgpOworICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgp
LnByb3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKQEAgLTg3LDE0ICs4NywxNCBAQCBK
U1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3RhdGUmIHN0
YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4
dEVsZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQo
KS5jb250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuY29udmVydFRvU3BlY2lmaWVkVW5pdHMo
dW5pdFR5cGUsIGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CiAKLSAgICBpbXBsKCkuY29tbWl0Q2hhbmdlKCk7CisgICAgd3JhcHBlZCgpLmNvbW1p
dENoYW5nZSgpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA1ODVkNzI0N2I2MWJh
MDkwZDQxZDA4NjE2ZTUyZjI1MTBlM2Y0ZDNmLi5iODQyMzRiMTdlNWIxYjQ2NTEwYjBlZTVjZTIy
NTljMjEwOWFhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFn
ZUN1c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgYm9vbCBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJp
bmcgaXRlbSA9IGltcGwoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSksIGVjKTsKKyAgICBTdHJpbmcgaXRlbSA9IHdyYXBwZWQoKS5nZXRJdGVtKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOwogCiAgICAgaWYgKGl0ZW0uaXNOdWxsKCkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSlNT
dG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgdGhpc09iamVjdC0+aW1wbCgpLnJlbW92ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSwgZWMpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5yZW1vdmVJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsMTIgKzgzLDEyIEBA
IHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aChlYyk7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aChlYyk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkua2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5rZXkoaSwgZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEx
OCw3ICsxMTgsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnNldEl0ZW0ocHJvcGVy
dHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICB3cmFw
cGVkKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdW
YWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0
b20uY3BwCmluZGV4IDBhNjlhMmU2ZmQyM2MyOTgzZjc5OGY0ZDA1ZjI2MTcxNzFhZjYzNDAuLmNi
OTM5N2VmN2QzMWQ5NmUwNjVjMDJmNGY0OTA3YzYxNGMzZTgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExp
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlz
dEN1c3RvbS5jcHAKaW5kZXggZDFjNjA2NWE5NzU4MGYyOTdlNmVjMjQ3YmZmZjgxNzRiODk5NTZj
MS4uYzQyMjJhOWUzNGFmMjY1NTU4YmVlZWU3ZTg1MTJjMzU2MjExNWY0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKICAgICBpZiAocHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGl0
ZW0gPSBpbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIGF1dG8qIGl0ZW0gPSB3cmFwcGVkKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAKaW5kZXggZjViYTRkMzAyOWNkNjg4ZjkzNWVmZTMwYjc5ZDc5YmUyMjM0
N2YyOS4uYTUwZjgzOTliYTU4NjRkMDFhYjEzMGM4ZmNkNTFkZTRlYmRlZTZkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApA
QCAtMTUyLDcgKzE1Miw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0
YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAg
ICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKLSAgICAgICAgaW1w
bCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUg
J2VuY3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CiAgICAgICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjA1LDcgKzIwNSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVD
cnlwdG86OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRGVj
cnlwdCkpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1
c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZGVjcnlw
dCciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJS
KTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjU3LDcgKzI1Nyw3
IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dz
KENyeXB0b0tleVVzYWdlU2lnbikpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJ
SUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOworICAgICAgICB3
cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5j
bHVkZSAnc2lnbiciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQ
T1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMzA5
LDcgKzMwOSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0
YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAogICAgIGlmICgh
a2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnkn
IikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVz
YWdlcyBkbyBub3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CkBAIC02NDYsNyArNjQ2LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3Jh
cEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlKTsKIAogICAgIGlmICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBL
ZXkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNh
Z2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3Vt
ZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXkn
IikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBA
QCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBp
bmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKLSAgICAgICAgaW1wbCgp
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3Vu
d3JhcEtleSciKSk7CisgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFs
KCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOwogICAgICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA1N2Y4OGI5NTVjZjU4NTE4OGMyYTZiZWU0
ZGY3NzRmNGYyOTUxYmVmLi5kZWI0NDBiM2FiZWFiN2I4ZmU0MjIwYjdiYWFkMTAyMjBhNDk3Yjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVD
dXN0b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgSlNU
ZXh0VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBKU1RleHRUcmFja0N1ZSoganNUZXh0VHJhY2tDdWUgPSBqc0Nhc3Q8SlNUZXh0VHJhY2tDdWUq
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGV4dFRyYWNrQ3VlJiB0ZXh0VHJhY2tD
dWUgPSBqc1RleHRUcmFja0N1ZS0+aW1wbCgpOworICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNr
Q3VlID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAogICAgIC8vIElmIHRoZSBjdWUgaXMg
ZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UK
ICAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVu
dCBsaXN0ZW5lcnMuCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUqIGN1ZSkKIAogdm9p
ZCBKU1RleHRUcmFja0N1ZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gaW1wbCgpLnRyYWNrKCkp
CisgICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCkpCiAgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRleHRUcmFjaykpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggZWIx
OWYyNTc4NzE5OWYxZTcwZTk5YWY3YWQyZmIwNDI3Y2U5Zjc1ZC4uN2ZjZTZhZDJhZTVkNGYxZTFi
MzEyMDc4OTU1ZWEwZjY4NDBhY2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBs
KCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAK
IHZvaWQgSlNUZXh0VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBKU1RleHRUcmFjazo6c2V0S2luZChFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVk
KCkuc2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6
OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYg
c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFu
Z3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5j
cHAKaW5kZXggZTFiOGM2MzA5OTI2MWQxZjJiOWY1ZTdhNGZmNWRiNjUyYTkwYTg1NC4uM2Y0NmY0
MzMxYmJiZTY2ODEyNzcxMTRmYjNiNDJmMjRiZmU5Y2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1RleHRUcmFja0xpc3Q6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1
c3RvbS5jcHAKaW5kZXggOTc1MTQ2NzI0ZGIwMjY5MDU0NDQ1ODlhZGQ5MmY0MWJiNDUzMDhjNS4u
OWE5NDM2YWY4MDlhY2ZhYjZkYzUwOTg4NjhjNmU1OTZmODBkZjhmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCBU
cmFja0Jhc2UqIHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNUZXh0VHJhY2s6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTVGV4dFRyYWNrKj4ob2JqZWN0KS0+
aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU1RleHRUcmFjayo+KG9iamVjdCktPndy
YXBwZWQoKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0F1ZGlvVHJhY2s6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiAmanNDYXN0PEpTQXVkaW9UcmFjayo+KG9iamVjdCktPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4ob2JqZWN0KS0+d3JhcHBlZCgp
OwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTVmlkZW9UcmFjazo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuICZqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAg
ICByZXR1cm4gJmpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihvYmplY3QpLT53cmFwcGVkKCk7CiAKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNr
RXZlbnRDdXN0b20uY3BwCmluZGV4IGY1MWQzYjk2M2M4MTgwM2NmZTcxYjk0N2I0MmM5ZGJkMDJi
Yjg1YmUuLmVhYjZmZjIxMzhjNTNkN2UzZmViNjQ0OWIwNmQ3MWIzZGYyZTVjMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNUcmFja0V2ZW50
Ojp0cmFjayhFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFRyYWNrQmFzZSogdHJhY2sg
PSBpbXBsKCkudHJhY2soKTsKKyAgICBUcmFja0Jhc2UqIHRyYWNrID0gd3JhcHBlZCgpLnRyYWNr
KCk7CiAgICAgaWYgKCF0cmFjaykKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAppbmRleCBj
MWU2ODFkNDk3YjQ0YzBiNDhlMzdhN2ZlYTA4MWIxMmQwZmMzNWQ3Li4yYmUwOGE5OTFmN2RkMTRl
ZjlhMmE2MmQxOGYzMWQ5Y2YxNzE1M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4o
SlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVy
ID0gaW1wbCgpLmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB3cmFwcGVk
KCkuZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNV
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcAppbmRleCA4ZmM2ZWY4ZmIzMGQy
MGIzOWJkMDk4ZTJmMTkzMDU5MmZmNDI4YWZiLi5hZGY0OTM2NDczYjQyM2RjMTJkZWM3YWQ4MGRi
ZjcyMGFiM2VhOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTVXNlck1lc3NhZ2VI
YW5kbGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0g
ICAgaWYgKFVzZXJNZXNzYWdlSGFuZGxlciogaGFuZGxlciA9IGltcGwoKS5oYW5kbGVyKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpKSkgeworICAgIGlmIChVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSB3cmFwcGVkKCku
aGFuZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxP
YmplY3QoKS0+d29ybGQoKSkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBSZWFkT25s
eSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGFu
ZGxlcikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA2ZjBhZjVhZjVhOGVh
MWUxZWE3ZTVmZTE5MWUwYzgwN2MyMDQxZTkwLi5kODI4ZTEyZmEwYzYyZTA4M2IwMzZiOWM3NDNm
MDQwZTRjNjdmOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOwor
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogdm9pZCBK
U1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3Rh
dGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRLaW5kKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNl
dEtpbmQoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odmFsdWUpOwpAQCAtNTksNyArNTksNyBAQCB2b2lkIEpTVmlkZW9UcmFjazo6c2V0
TGFuZ3VhZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJp
bmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRMYW5ndWFn
ZShzdHJpbmcpOworICAgIHdyYXBwZWQoKS5zZXRMYW5ndWFnZShzdHJpbmcpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
CmluZGV4IDY2ZDdiZWEzZTAwZTBkZTNhZjAxODE1ZGE2YjkyMWRlZGRiYzEzMTQuLmEyYTM2MTg0
YTRlZWQ0OTU1Mjk1YTFlNTg3N2I5ZGU0MDFlNjYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNp
dEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkuZWxlbWVudCgpKSk7CisgICAgdmlzaXRvci5hZGRP
cGFxdWVSb290KHJvb3Qod3JhcHBlZCgpLmVsZW1lbnQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA5OWZmNzAzYzQ2NDlhNjMw
NGU2ODhiZmRhMDFlNmY4YjEwZmNmNDZiLi43YzRlYzA4MTg3ODFjODcyMWVjZmJkNzU1MGZkNjE2
ODFiZjJhMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
c3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFdlYkcKIAogdm9pZCBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
JndyYXBwZWQoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJ
bnRlcm5hbGZvcm1hdFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC05OSw3ICs5OSw3IEBA
IEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDIpCiAgICAg
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNv
bnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCA9IHdy
YXBwZWQoKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LnRvSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4
IDRlNGU1Y2E5OGZjMTQ5MDJhMmNjMDAwYjZhYjA2Mzg5MGEyMWIxNjUuLjgzMWNmNTkxZWQ3ZDA4
ZTlhMDhlMTY0MmE5NWEzMWM0NjYxZmRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9t
LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRl
cihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRlJiBzCiAgICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+aW1wbCgpOwor
ICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPndyYXBwZWQoKTsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMy
KCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRl
bgogCiB2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KCZpbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAog
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhF
eGVjU3RhdGUmIHN0YXRlKQpAQCAtMjczLDcgKzI3Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNX
ZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
aWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTI5Niw3
ICsyOTYsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5z
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEp
CiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCi0gICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpAQCAtMzE1LDcgKzMxNSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlCiAgICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2ln
bmVkIHRhcmdldCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpAQCAtMzM5LDcgKzMzOSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTM1Nyw3
ICszNTcsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3Jh
bVBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBK
U1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwpAQCAtMzgz
LDcgKzM4Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFk
ZXJQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS5pbmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoJnN0YXRlKTsKICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRl
cjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKQEAgLTQwMCw3ICs0MDAs
NyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1l
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmIChjb250ZXh0Lmlz
Q29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIFZlY3RvcjxTdHJp
bmc+IHZhbHVlID0gY29udGV4dC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CkBAIC00MjEsNyAr
NDIxLDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0o
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dy
YW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9n
cmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTY5MSw3NyArNjkxLDc3
IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1h
dHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTF2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICBy
ZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0xdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAK
IEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoSlND
OjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9y
bTF2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0x
diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0yZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJl
dHVybiBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTJ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0ydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpT
Qzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTJ2
LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0ydiwg
c3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0zZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTN2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4g
ZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0zdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTN2LCBz
dGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwgc3Rh
dGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm00ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25mKGZfdW5pZm9ybTR2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0
YUZ1bmN0aW9uZihmX3VuaWZvcm00diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTR2LCBzdGF0
ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm00diwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXgyZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4MmZ2LCBzdGF0ZSwgaW1wbCgpKTsK
KyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJmdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXgzZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4M2Z2LCBzdGF0ZSwgaW1wbCgpKTsK
KyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNmdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXg0ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4NGZ2LCBzdGF0ZSwgaW1wbCgpKTsK
KyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDRmdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZlcnRleEF0dHJpYjFmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0
dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9
CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJp
YjJmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYo
Zl92ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlv
bmYoZl92ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIz
diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRy
aWIzdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjRmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIGltcGwo
KSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAppbmRleCBiNmQzOWFjMDcwZjU5NzczNzg5ODkxMjk5ZGRlMDAyMzU3MjU4MGQyLi5lZGU1
YmI5N2E4NjhhNDIxZjM1NzlmNDg3Zjc1OTlkYzg3NGU1ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZpbXBsKCkpOworICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmlu
ZGV4IDA1YTllNzAyZTdjODE5YmY3Yjc1MWQ5YmU3N2MxMTJiZTM1OTRmYjMuLjBlZmJkMTJmMDMz
NDk2ZWMzY2UyY2QwNmYxOTE3YjZmMWZkM2ViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZpbXBs
KCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJndyYXBwZWQoKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0
YXRlKiBleGVjKQpAQCAtNTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgLy8gU2VlIHNlY3Rpb24gNC44LjIgc3RlcCAx
NCBvZiBXZWJXb3JrZXJzIGZvciB3aHkgdGhpcyBpcyB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4g
Ci0gICAgRE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPmltcGwoKTsKKyAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFzSlNET01XaW5k
b3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d3JhcHBlZCgpOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgQVNTRVJUKHdpbmRvdy5kb2N1bWVudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAppbmRleCBhY2Q2MTdlODY5ODkyOTA3NTM3NmU1ODMyYWIyODNmMmQyZmE3OTAwLi41OGRhNzVl
OGU3MzI5NDk1OWRlMWJhNjM3NjczYjNjNzg4NTJmOGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAKIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKICAgICA6IEpT
RE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZub3JtYWxXb3JsZCh2bSksICZzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKQotICAgICwgbV9pbXBsKGltcGwpCisgICAgLCBtX3dyYXBwZWQo
aW1wbCkKIHsKIH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2ltcGwuZ2V0KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0K
IAogYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNzRnJvbShjb25zdCBK
U0dsb2JhbE9iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAppbmRleCAwMzE1
MzBlZTU4NjEzOWZjNWFiNmY4Yjg4NTE0YjU4NDgxMWM3MmRlLi4yZGU4Y2M0ZmEwNjhlZDM0NDIw
NmYxMDA4YjRjYTZhN2U2Yjc2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAotICAgICAgICBXb3JrZXJH
bG9iYWxTY29wZSYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAgICAgICAgV29y
a2VyR2xvYmFsU2NvcGUmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFwcGVkOyB9CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKIAogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX2ltcGw7CisgICAgICAgIFJlZlB0cjxXb3Jr
ZXJHbG9iYWxTY29wZT4gbV93cmFwcGVkOwogICAgIH07CiAKICAgICAvLyBSZXR1cm5zIGEgSlNX
b3JrZXJHbG9iYWxTY29wZSBvciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCAxMjg5OGNj
OTc1YmVmNTAwYjNiMTBkYmFmMWY2NTBhODZkYzNjMzAyLi5hOTQ1NzczMmQyMjhjZmE5YWNhODAz
NTVmZTNmNDJkN2RmYTE1OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtNTMsOSArNTMsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFdvcmtlckxv
Y2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYgKFdv
cmtlckxvY2F0aW9uKiBsb2NhdGlvbiA9IHdyYXBwZWQoKS5vcHRpb25hbExvY2F0aW9uKCkpCiAg
ICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChsb2NhdGlvbik7Ci0gICAgaWYgKFdvcmtlck5h
dmlnYXRvciogbmF2aWdhdG9yID0gaW1wbCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkpCisgICAgaWYg
KFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gd3JhcHBlZCgpLm9wdGlvbmFsTmF2aWdhdG9y
KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChuYXZpZ2F0b3IpOwogfQogCkBAIC04
MCwzMSArODAsMzEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRz
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0g
ICAgaW1wbCgpLmltcG9ydFNjcmlwdHModXJscywgZWMpOworICAgIHdyYXBwZWQoKS5pbXBvcnRT
Y3JpcHRzKHVybHMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6
c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hl
ZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCktPndvcmxkKCksIGltcGwoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0
aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmICghYWN0aW9uKQogICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoMCk7CiAgICAgaW50IGRlbGF5ID0gc3RhdGUuYXJndW1lbnQoMSkudG9J
bnQzMigmc3RhdGUpOwotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuc2V0VGltZW91dChXVEY6
Om1vdmUoYWN0aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNl
dFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAKIEpTVmFsdWUgSlNXb3Jr
ZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNy
ZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBpbXBsKCkuY29udGVudFNlY3Vy
aXR5UG9saWN5KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlv
biA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxk
KCksIHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIWFj
dGlvbikKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogICAgIGludCBkZWxheSA9IHN0YXRl
LmFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgp
LnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOworICAgIHJldHVybiBqc051
bWJlcih3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggOTE1YjA2Mjg3NDBlNzdl
YTBkYTcwYTdmYmJlY2RiNzE4MGNiYTZiZC4uODliM2JjZmJiMmM2NGIyZTNiOGVmMWJmOGY2Mzc5
NmQ2YjhiMjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTU4LDE2ICs1OCwxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1
cGxvYWQgPSBpbXBsKCkub3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJlcXVlc3RV
cGxvYWQqIHVwbG9hZCA9IHdyYXBwZWQoKS5vcHRpb25hbFVwbG9hZCgpKQogICAgICAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3QodXBsb2FkKTsKIAotICAgIGlmIChEb2N1bWVudCogcmVzcG9uc2VE
b2N1bWVudCA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50
KiByZXNwb25zZURvY3VtZW50ID0gd3JhcHBlZCgpLm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKICAg
ICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlRG9jdW1lbnQpOwogCi0gICAgaWYg
KEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gaW1wbCgpLm9wdGlvbmFsUmVzcG9u
c2VBcnJheUJ1ZmZlcigpKQorICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZl
ciA9IHdyYXBwZWQoKS5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKICAgICAgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCi0gICAgaWYgKEJsb2Iq
IHJlc3BvbnNlQmxvYiA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlQmxvYigpKQorICAgIGlmIChC
bG9iKiByZXNwb25zZUJsb2IgPSB3cmFwcGVkKCkub3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAg
ICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiB9CiAKQEAgLTc3LDcg
Kzc3LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAKLSAgICBjb25zdCBVUkwmIHVybCA9IGltcGwoKS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3Ry
aW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgIGNvbnN0IFVSTCYgdXJsID0gd3JhcHBl
ZCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgU3RyaW5n
IG1ldGhvZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZh
bHVlKCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg4LDEzICs4OCwx
MyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAog
ICAgICAgICAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgpKSB7CiAgICAg
ICAgICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2so
JnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCg0KSk7Ci0gICAgICAgICAgICAgICAgaW1w
bCgpLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgZWMpOworICAgICAg
ICAgICAgICAgIHdyYXBwZWQoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dv
cmQsIGVjKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGltcGwoKS5vcGVu
KG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIHdyYXBwZWQo
KS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAg
ICAgd3JhcHBlZCgpLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYyk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5v
cGVuKG1ldGhvZCwgdXJsLCBlYyk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMzgsMzAgKzEzOCwzMCBAQCBwcml2YXRl
OgogCiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoaW1w
bCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLnVybCgpKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qod3JhcHBlZCgpLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgd3JhcHBlZCgpLnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIEpTVmFsdWUgdmFsID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYg
KHZhbC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBpbXBsKCkuc2VuZChlYyk7CisgICAg
ICAgIHdyYXBwZWQoKS5zZW5kKGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNEb2N1
bWVudDo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVk
KHZhbCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVk
KHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQot
ICAgICAgICBpbXBsKCkuc2VuZChKU0Jsb2I6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAg
IHdyYXBwZWQoKS5zZW5kKEpTQmxvYjo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlm
ICh2YWwuaW5oZXJpdHMoSlNET01Gb3JtRGF0YTo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNl
bmQoSlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgp
LnNlbmQoSlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2
YWwuaW5oZXJpdHMoSlNBcnJheUJ1ZmZlcjo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQo
dG9BcnJheUJ1ZmZlcih2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHRvQXJyYXlC
dWZmZXIodmFsKSwgZWMpOwogICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0FycmF5QnVmZmVy
Vmlldzo6aW5mbygpKSkgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB2aWV3ID0g
dG9BcnJheUJ1ZmZlclZpZXcodmFsKTsKLSAgICAgICAgaW1wbCgpLnNlbmQodmlldy5nZXQoKSwg
ZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZCh2aWV3LmdldCgpLCBlYyk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGltcGwoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
LCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpLCBlYyk7CiAKICAgICBTZW5kRnVuY3RvciBmdW5jdG9yOwogICAgIHN0YXRlLml0
ZXJhdGUoZnVuY3Rvcik7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5kTGluZUFuZENvbHVtbk51bWJl
cihmdW5jdG9yLmxpbmUoKSwgZnVuY3Rvci5jb2x1bW4oKSk7Ci0gICAgaW1wbCgpLnNldExhc3RT
ZW5kVVJMKGZ1bmN0b3IudXJsKCkpOworICAgIHdyYXBwZWQoKS5zZXRMYXN0U2VuZExpbmVBbmRD
b2x1bW5OdW1iZXIoZnVuY3Rvci5saW5lKCksIGZ1bmN0b3IuY29sdW1uKCkpOworICAgIHdyYXBw
ZWQoKS5zZXRMYXN0U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNjksNyArMTY5
LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyB0ZXh0ID0gaW1w
bCgpLnJlc3BvbnNlVGV4dChlYyk7CisgICAgU3RyaW5nIHRleHQgPSB3cmFwcGVkKCkucmVzcG9u
c2VUZXh0KGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE4MCwyNSArMTgwLDI1
IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSBDYWNoZWRBdHRyaWJ1dGUgZm9yIG90
aGVyIHR5cGVzIHRoYW4gSlNPTiBhcyB3ZWxsLgotICAgIGlmIChtX3Jlc3BvbnNlICYmIGltcGwo
KS5yZXNwb25zZUNhY2hlSXNWYWxpZCgpKQorICAgIGlmIChtX3Jlc3BvbnNlICYmIHdyYXBwZWQo
KS5yZXNwb25zZUNhY2hlSXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9yZXNwb25zZS5nZXQo
KTsKIAotICAgIGlmICghaW1wbCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgaW1wbCgpLnJlc3Bv
bnNlVHlwZUNvZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQorICAgIGlm
ICghd3JhcHBlZCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgd3JhcHBlZCgpLnJlc3BvbnNlVHlw
ZUNvZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7CiAKLSAgICBzd2l0Y2ggKGltcGwoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsK
KyAgICBzd2l0Y2ggKHdyYXBwZWQoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKICAgICBjYXNlIFhN
TEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEZWZhdWx0OgogICAgIGNhc2UgWE1MSHR0cFJlcXVl
c3Q6OlJlc3BvbnNlVHlwZVRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUp
OwogCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlSlNPTjoKICAgICAgICAg
ewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIGltcGwoKS5y
ZXNwb25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKKyAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBKU09OUGFyc2UoJnN0YXRlLCB3cmFwcGVkKCkucmVzcG9uc2VUZXh0SWdub3JpbmdS
ZXNwb25zZVR5cGUoKSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAg
IHZhbHVlID0ganNOdWxsKCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldChzdGF0ZS52bSgp
LCB0aGlzLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGltcGwoKS5kaWRDYWNoZVJlc3BvbnNlSlNP
TigpOworICAgICAgICAgICAgd3JhcHBlZCgpLmRpZENhY2hlUmVzcG9uc2VKU09OKCk7CiAKICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQpAQCAtMjA2LDcgKzIwNiw3IEBAIEpT
VmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
ICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEb2N1bWVudDoKICAgICAgICAg
ewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBpbXBsKCkucmVzcG9uc2VYTUwoZWMpOworICAgICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gd3JhcHBlZCgpLnJlc3BvbnNlWE1MKGVjKTsKICAgICAgICAgICAgIGlm
IChlYykgewogICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29u
c3QKICAgICAgICAgfQogCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlQmxv
YjoKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLnJl
c3BvbnNlQmxvYigpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3Qo
KSwgd3JhcHBlZCgpLnJlc3BvbnNlQmxvYigpKTsKIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6
OlJlc3BvbnNlVHlwZUFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCBpbXBsKCkucmVzcG9uc2VBcnJheUJ1ZmZlcigpKTsKKyAgICAgICAgcmV0
dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3BvbnNlQXJyYXlC
dWZmZXIoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCmluZGV4IDI0
MTZkNjc5MDgxMzkxM2YxM2VjMGE1MTljNWYxMDg2YzI2MzU4NTYuLjVkMzQ4NmU4NTljNjQyNTY2
NzdjZDg3YmNhYmZjN2I2YTE2MDM0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8mIHZhbHVlID0gaW1wbCgp
LnZhbHVlKCk7CisgICAgYXV0byYgdmFsdWUgPSB3cmFwcGVkKCkudmFsdWUoKTsKICAgICBpZiAo
dmFsdWUuaXNOb2RlU2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogdmFsdWUudG9O
b2RlU2V0KCkpCiAgICAgICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlLmdl
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9j
ZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vz
c29yQ3VzdG9tLmNwcAppbmRleCAzMzFiOWYxYjBiYmY1NzlhYzQ1MmQwN2VkYzFiOWY2NThmY2Y2
MTVmLi4xNTJiODczNzAwYjlhMGRjNDY4Y2MwM2ZiMDllMWE0MzI0ZGM3NjgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihF
eGVjU3RhdGUmIHN0YXRlKQogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmlu
ZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUp
LT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyB2YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnNldFBh
cmFtZXRlcihuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOworICAgIHdyYXBwZWQoKS5z
ZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nl
c3Nvcjo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2Nh
bE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOwotICAgIFN0cmluZyB2YWx1ZSA9IGltcGwoKS5nZXRQYXJhbWV0ZXIobmFtZXNw
YWNlVVJJLCBsb2NhbE5hbWUpOworICAgIFN0cmluZyB2YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJh
bWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5k
ZWZpbmVkKCZzdGF0ZSwgdmFsdWUpOwogfQogCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNY
U0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAg
U3RyaW5nIGxvY2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZz
dGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSk7CisgICAgd3JhcHBlZCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDA1OGM5
MWM5MjQ0YTVjODBhZTllOGYwZmI2NGFlMGE4NDZhM2Q1ZDMuLmZlYmQyOTAwZTYyNWU3Y2UzNmZj
NzI5MzM3YTQ5MmI4Mzk2ZDVkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0
aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIXdpbmRvdykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLmZy
YW1lKCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAw
NDMwYmE3ZmQ1M2NhYzJjNTQyZTg2MzIwNGRhYmFjNWZhMGJhZjE1Li4xY2NjZjhhZjIxMDBmMDdm
NTA1ZmU2N2JmYzAwYjU5NDQ4OTk0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9p
ZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogICAgICAgICAg
ICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ctPnZtKCksIHdpbmRvdyk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBmcmFtZS5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKTsKLSAgICAgICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygp
LT5pbXBsKCkgPT0gZG9tV2luZG93KQorICAgICAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2lu
ZG93KCktPndyYXBwZWQoKSA9PSBkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZG9tV2luZG93KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjE2
MWU2NmY4ZDkyYzgwYzRmYzhiMmI3MjZiYzI0ODY1N2RkNTJkOS4uNjI5YzQyMTNhZThmYTFiNmU5
ZDI2ZGUwMDNmZjRlMTBiNjZlOWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNjcmlwdENv
bnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wg
Z29pbmdJbnRvUAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93U2hlbGxzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gd2luZG93
U2hlbGxzW2ldLmdldCgpOwogCi0gICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5p
bXBsKCkgPT0gbmV3RE9NV2luZG93KQorICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3co
KS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50
IHdpbmRvdyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KQEAgLTM5MSw3ICszOTEsNyBA
QCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3Rvcjxz
dGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLAogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVu
ZCgpOyArK2l0ZXIpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBpdGVyLT52YWx1
ZS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biA9IGl0ZXItPnZhbHVlLT53aW5kb3coKS0+aW1wbCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCk7CisgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBpdGVyLT52YWx1ZS0+d2lu
ZG93KCktPndyYXBwZWQoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICBy
ZXN1bHQuYXBwZW5kKHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4o
ZXhlYywgb3JpZ2luKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCmluZGV4IDczMmM3Y2M2OWU0YzJmNTUwOWZkNjAwY2JmOWRhYzQyMjQyYmJm
NDkuLjMwMDdlYmEwNTg4ZGJhMWE5ZjJjOGJlYjg0NmFkMDk5NjA4MDNlZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9N
V2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSkKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRTdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0cyhK
U0RPTVdpbmRvd0Jhc2U6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+aW1wbCgp
OworICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0
KS0+d3JhcHBlZCgpOwogfQogCiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNjNm
NmI1NTJkMDRiOTU5NGJmMWUzMjk1M2NlNTFkYmZkOTg4Yzk4OC4uNDM1MmViNGUwZWI4YTlkZDM0
ODI0Y2JhMzgzNTk0YmJiZTIyNzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0K
QEAgLTU3MSw3ICs1NzEsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVu
dFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFvYmplY3QtPmluaGVyaXRzKEpTTm9kZTo6
aW5mbygpKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFdlYkNvcmU6Ok5vZGUmIG5vZGUg
PSBqc0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+aW1wbCgpOworICAgIFdlYkNvcmU6Ok5vZGUmIG5v
ZGUgPSBqc0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIHJldHVybiBraXQo
Jm5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVV0aWxpdHkubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW0K
aW5kZXggZmIxN2YwZDNkODZiMTBkYTU4MDhkMTg4Y2VjOTA0YzA5ODYyNzlhMS4uMWMzYzdjZmVl
MjUzZDA3NThkNTRiMzg0OWNmZjRiM2U1Y2Y3MzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NVXRpbGl0eS5tbQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIGlk
IGNyZWF0ZURPTVdyYXBwZXIoSlNDOjpKU09iamVjdCogb2JqZWN0KQogewogICAgICNkZWZpbmUg
V1JBUChjbGFzc05hbWUpIFwKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoV2ViQ29yZTo6
SlMjI2NsYXNzTmFtZTo6aW5mbygpKSkgXAotICAgICAgICAgICAgcmV0dXJuIGtpdCgmc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SlMjI2NsYXNzTmFtZSo+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAg
ICAgICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJDb3JlOjpKUyMjY2xhc3NOYW1lKj4ob2Jq
ZWN0KS0+d3JhcHBlZCgpKTsKIAogICAgIFdSQVAoQ1NTUnVsZSkKICAgICBXUkFQKENTU1J1bGVM
aXN0KQpAQCAtMTIxLDEwICsxMjEsMTAgQEAgc3RhdGljIGlubGluZSBpZCBjcmVhdGVET01XcmFw
cGVyKEpTQzo6SlNPYmplY3QqIG9iamVjdCkKICAgICAjdW5kZWYgV1JBUAogCiAgICAgaWYgKG9i
amVjdC0+aW5oZXJpdHMoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbCo+KG9i
amVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6
OkpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpLT53cmFwcGVkKCkpOwogCiAgICAgaWYgKG9iamVj
dC0+aW5oZXJpdHMoV2ViQ29yZTo6SlNET01JbXBsZW1lbnRhdGlvbjo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SlNET01JbXBsZW1lbnRhdGlvbio+
KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNv
cmU6OkpTRE9NSW1wbGVtZW50YXRpb24qPihvYmplY3QpLT53cmFwcGVkKCkpOwogCiAgICAgcmV0
dXJuIG5pbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0KaW5kZXggNTdmMzIwMmE4YzJkNjAxNGVlMWUxYWM4ZmNmN2U1YmQwNjJhNzdjOC4u
ZmI2ZGYyNWE0YzdiZjQ3OGZhMzMxMTM5NzIxMmM3MWM2ZjA1NzZiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTI1Miw3ICsyNTIs
NyBAQCBzdGF0aWMgdm9pZCBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIC8vIEpTRE9NV2luZG93QmFzZSogaXNuJ3QgdGhlIHJpZ2h0IG9iamVjdCB0byByZXByZXNl
bnQgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcKICAgICAvLyBKYXZhU2NyaXB0LiBJbnN0ZWFkLCB3
ZSBzaG91bGQgdXNlIEV4ZWNTdGF0ZSwgbGlrZSB3ZSBkbyBlbHNld2hlcmUuCiAgICAgSlNET01X
aW5kb3dCYXNlKiB0YXJnZXQgPSBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4ocm9vdC0+Z2xvYmFs
T2JqZWN0KCkpOwotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCksIHRhcmdldC0+aW1wbCgpKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB0YXJnZXQtPndyYXBwZWQoKSk7CiB9CiAK
IC0gKEpTR2xvYmFsQ29udGV4dFJlZilfZ2xvYmFsQ29udGV4dFJlZgpAQCAtNTQxLDcgKzU0MSw3
IEBAIHN0YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJy
YXkgKmFycmF5LCBSb290T2JqZWN0KiByb290CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJp
dHMoSlNIVE1MRWxlbWVudDo6aW5mbygpKSkgewogICAgICAgICAgICAgLy8gUGx1Z2luIGVsZW1l
bnRzIGNhY2hlIHRoZSBpbnN0YW5jZSBpbnRlcm5hbGx5LgotICAgICAgICAgICAgaWYgKE9iamNJ
bnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihwbHVnaW5JbnN0
YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KG9iamVjdCktPmltcGwoKSkpKQorICAgICAgICAg
ICAgaWYgKE9iamNJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2Uq
PihwbHVnaW5JbnN0YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KG9iamVjdCktPndyYXBwZWQo
KSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cyhPYmpDUnVudGltZU9iamVjdDo6aW5mbygp
KSkgewogICAgICAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0
aWNfY2FzdDxPYmpDUnVudGltZU9iamVjdCo+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDIxNmJjOTljODA1
MWM2ZmM2YzMwYTRiOTA1ZTYyMGZkNzVkYjFkNmQuLmI5ODQ2YWVjYzk4MjQxZmU1ODkxN2MwMjQx
YmI1ZTI1NWFiNTdmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsNyArNDIxLDcgQEAgc3ViIEdlbmVyYXRlR2V0
T3duUHJvcGVydHlTbG90Qm9keQogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+
c2lnbmF0dXJlLT50eXBlIGVxICJET01TdHJpbmciKSB7CiAgICAgICAgICAgICBwdXNoKEBnZXRP
d25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4KSB7XG4iKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIg
ICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVj
dC0+aW1wbCgpLmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3Bl
cnR5U2xvdEltcGwsICIgICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1
ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgfQog
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICB1bnNpZ25lZCBp
bmRleCA9IG9wdGlvbmFsSW5kZXgudmFsdWUoKTtcbiIpOwogICAgICAgICAjIEFzc3VtZSB0aGF0
IGlmIHRoZXJlJ3MgYSBzZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCkBAIC0xMTgx
LDkgKzExODEsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmIChOZWVkc0ltcGxlbWVu
dGF0aW9uQ2xhc3MoJGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKCRoYXNQYXJlbnQpIHsKLSAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUmIGltcGwo
KSBjb25zdFxuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbnRl
cmZhY2VOYW1lJiB3cmFwcGVkKCkgY29uc3RcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSY+KEJhc2U6OmltcGwoKSk7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSY+KEJhc2U6OndyYXBwZWQoKSk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNzUyLDkgKzE3NTIsOSBAQCBzdWIgR2V0SW5kZXhlZEdldHRlckV4cHJlc3Npb24KIHsK
ICAgICBteSAkaW5kZXhlZEdldHRlckZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgaWYgKCRpbmRleGVk
R2V0dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAg
ICByZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRoaXNPYmplY3QtPmltcGwoKS5p
dGVtKGluZGV4KSkiOworICAgICAgICByZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkiOwogICAgIH0KLSAgICByZXR1cm4g
InRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT5pbXBs
KCkuaXRlbShpbmRleCkpIjsKKyAgICByZXR1cm4gInRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpIjsKIH0KIAog
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KQEAgLTIyMjEsNyArMjIyMSw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVu
Y3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVY
KSB7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVu
Z3RoKCkpIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHtcbiIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAjIEFzc3VtZSB0aGF0IGlmIHRoZXJlJ3Mg
YSBzZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCiAgICAgICAgICAgICAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0p
IHsKQEAgLTIzMTksOSArMjMxOSw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CiAgICAgICAgICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7CiAgICAgICAgICAgICAg
ICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEJ5U2V0dGluZyJ9KSAuICJFbmFi
bGVkIjsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFj
YXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKVxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRo
aXMtPmltcGwoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2V0dGluZ3MuJGVuYWJsZV9mdW5jdGlvbigp
KVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMjMzNCw3ICsyMzM0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1
cml0eSJ9ICYmCiAgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCiAgICAgICAgICAgICAgICAg
ISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tT
ZWN1cml0eU9uR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhz
dGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
RE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIH0KIApAQCAtMjM1Miw3ICsyMzUyLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkZXhjZXB0
aW9uQ29kZSA9ICRnZXR0ZXJFeGNlcHRpb25zID8gImVjIiA6ICIwIjsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBiaW5kaW5nTmFtZShcIiRpbnRlcmZhY2VOYW1lLiRuYW1lXCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7XG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJG1lbW9pemVkVHlwZSBtZW1v
aXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgi
IC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICRtZW1vaXplZFR5cGUgbWVtb2l6ZWRSZXN1bHQgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwg
IiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8JG1lbW9p
emVkVHlwZT4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgJGV4
Y2VwdGlvbkNvZGUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAibWVtb2l6ZWRSZXN1bHQiLCAiY2FzdGVkVGhp
cyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTtcbiIpIGlmICRnZXR0ZXJFeGNlcHRpb25zOwpA
QCAtMjM3Niw3ICsyMzc2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSkpO1xuIik7CiAgICAgICAg
ICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBs
LiIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKCkpID8gIiAuIE5hdGl2ZVRvSlNW
YWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1w
bEdldHRlckZ1bmN0aW9uTmFtZSgpIiwgImNhc3RlZFRoaXMiKSAuICIgOiBqc051bGwoKSk7XG4i
KTsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudEhhbmRsZXIiKSB7CiAgICAg
ICAgICAgICAgICAgbXkgJGdldHRlciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IldpbmRvd0V2ZW50SGFuZGxlciJ9ID8gIndpbmRvd0V2ZW50SGFuZGxlckF0
dHJpYnV0ZSIKQEAgLTIzODQsNyArMjM4NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgIDogImV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7CiAgICAgICAg
ICAgICAgICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZSgk
YXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0oc3RhdGUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgkZ2V0dGVyKGNhc3RlZFRoaXMtPmltcGwoKSwg
JGV2ZW50TmFtZSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgkZ2V0dGVyKGNhc3RlZFRoaXMtPndyYXBwZWQoKSwg
JGV2ZW50TmFtZSkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICBteSAkY29u
c3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAg
ICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKQEAgLTI0MTIsOSArMjQx
Miw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgQGNh
bGxXaXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgIkpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRzdmdMaXN0UHJv
cGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPmltcGwoKS4kaW1wbEdldHRlckZ1
bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0ZWRU
aGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPndyYXBwZWQoKS4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJj
YXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHN2Z1Byb3Bl
cnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlw
ZSYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUg
ZXEgImZsb2F0IikgeyAjIFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAu
IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1l
LCAiaW1wbCIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0yNDM3LDcgKzI0MzcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
CiAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRoQXJncyk7
CiAgICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4g
am9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2Jq
ID0gJGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgb2JqLmdldCgpKTtcbiIpOwpAQCAtMjQ2MywxMCArMjQ2MywxMCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywg
R2VuZXJhdGVDYWxsV2l0aCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDYWxsV2l0aCJ9LCBcQGltcGxDb250ZW50LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpIikpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3Bl
cnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
c3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhpcy0+aW1wbCgpKTtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJv
cGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhpcy0+d3JhcHBlZCgpKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJl
c3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50
ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwg
QGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpT
VmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
IDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAKQEAgLTI1MDgsNyArMjUwOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgZGllIGlmICFDb25zdHJ1Y3Rv
clNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzdGF0ZSwgZG9tT2JqZWN0LT5pbXBsKCkpKVxuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+d3JhcHBlZCgpKSlcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAgLTI1NDAs
OSArMjU0MCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFw
cGVkKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
c3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm47XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTI2NTIsOSArMjY1Miw5IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAmJiAhJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0pIHsK
ICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmlt
cGwoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUs
IGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkpKVxuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxk
QWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSkp
XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgfQpAQCAtMjY2NywxMyArMjY2
NywxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICMgRklY
TUU6IEZpbmQgYSB3YXkgdG8gZG8gdGhpcyBzcGVjaWFsIGNhc2Ugd2l0aG91dCBoYXJkY29kaW5n
IHRoZSBjbGFzcyBhbmQgYXR0cmlidXRlIG5hbWVzIGhlcmUuCiAgICAgICAgICAgICAgICAgaWYg
KCgoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIG9yICgkaW50ZXJmYWNlTmFtZSBlcSAi
V29ya2VyR2xvYmFsU2NvcGUiKSkgYW5kICRuYW1lIGVxICJvbmVycm9yIikgewogICAgICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0Vycm9ySGFuZGxlci5oIn0gPSAxOwotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5pbXBsKCku
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxl
cihzdGF0ZSwgdmFsdWUsIGNhc3RlZFRoaXMpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcihzdGF0ZSwgdmFs
dWUsIGNhc3RlZFRoaXMpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogICAg
ICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiV2luZG93RXZlbnRIYW5kbGVyIn0gPyAic2V0V2luZG93RXZlbnRI
YW5kbGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICAgICAgOiAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb2N1bWVudEV2ZW50SGFuZGxlciJ9ID8g
InNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICAg
ICAgOiAic2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJHNldHRlcigqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRU
aGlzLT5pbXBsKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc2V0dGVyKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNh
c3RlZFRoaXMtPndyYXBwZWQoKSwgJGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
ID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlw
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKQEAgLTI2OTYsMTggKzI2OTYsMTggQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8
ICRuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwke2F0dHJpYnV0ZVR5cGV9PiBm
b3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFt
ZX0oKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFJlZlB0cjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghZm9yd2FyZGVk
SW1wbClcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gKmZvcndhcmRlZEltcGw7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyBBdHRyaWJ1dGUgaXMgbm90IG51bGxhYmxlLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZXhw
ZWN0ZWQgdG8gcmV0dXJuIGEgcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJ
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJl
Zjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
LiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBmb3J3YXJkZWRJbXBs
LmdldCgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAkYXR0cmlidXRlID0gJGNvZGVHZW5lcmF0b3ItPkdldEF0dHJpYnV0ZUZyb21JbnRl
cmZhY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlLCAkcHV0Rm9yd2Fy
ZHMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2Vw
dGlvbjsKQEAgLTI4MTQsMTMgKzI4MTQsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIp
OwogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgewotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2Jq
ZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpXG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tKHN0YXRlLCBpKSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJG5hbWVk
R2V0dGVyRnVuY3Rpb24pIHsKICAgICAgICAgICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGFk
ZCBhbiBJREwgZXh0ZW5kZWQgYXR0cmlidXRlIGF0IHNvbWUgcG9pbnQgaWYgYW4gaW50ZXJmYWNl
IG5lZWRzIGVudW1lcmFibGUgbmFtZWQgcHJvcGVydGllcy4KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkge1xu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yIChhdXRvJiBw
cm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT5pbXBsKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygp
KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yIChhdXRv
JiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlO
YW1lcygpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIHByb3BlcnR5
TmFtZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsK
ICAgICAgICAgfQpAQCAtMjkyMSwxNCArMjkyMSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlz
LT5pbXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0
YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRp
c0N1c3RvbSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRh
dGlvbk5hbWUgLiAiKCpzdGF0ZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW1wbC5pc1JlYWRPbmx5KCkpIHtc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTtcbiIp
OwpAQCAtMjk4MiwxMSArMjk4MiwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0gfHwgJGlu
dGVyZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICB0aGlzT2JqZWN0LT5pbXBsKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CiAgICAg
ICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4odmlzaXRvcik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifTsKICAgICAgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBvcnRFeHRyYU1lbW9yeUNvc3QifSkgewotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9y
eVZpc2l0ZWQodGhpc09iamVjdC0+aW1wbCgpLm1lbW9yeUNvc3QoKSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNp
dGVkKHRoaXNPYmplY3QtPndyYXBwZWQoKS5tZW1vcnlDb3N0KCkpO1xuIik7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKCRudW1DYWNoZWRBdHRyaWJ1dGVzID4gMCkgewogICAgICAgICAgICAgZm9y
ZWFjaCAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewpAQCAtMzAyOCw3ICszMDI4LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
bmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkg
ewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFj
ZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2Vs
bCgpKTtcbiIpOwogICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmhh
c1BlbmRpbmdBY3Rpdml0eSgpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkuaGFzUGVuZGluZ0FjdGl2aXR5
KCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiRXZlbnRUYXJnZXQiKSkgewpAQCAtMzAz
Niw3ICszMDM2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nh
c3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CiAg
ICAgICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1w
bCgpLmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmlzRmlyaW5n
RXZlbnRMaXN0ZW5lcnMoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiTm9kZSIpKSB7CkBAIC0zMDU1
LDM0ICszMDU1LDM0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAg
IG15ICRyb290U3RyaW5nOwogICAgICAgICAgICAgaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUo
JGludGVyZmFjZSkgZXEgIkltcGwiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0g
IiAgICAke2ltcGxUeXBlfSogcm9vdCA9ICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKTtcbiI7
CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICAke2ltcGxUeXBlfSogcm9vdCA9
ICZqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lm
IChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsV2ViR0xSZW5kZXJp
bmdDb250ZXh0IikgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1l
fS0+aW1wbCgpLmNvbnRleHQoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9
ICIgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtp
bnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmNvbnRleHQoKSk7XG4iOwogICAgICAgICAgICAgfSBl
bHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbEZyYW1lIikg
ewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRnJhbWUqIHJvb3QgPSBXVEY6
OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5mcmFtZSgpKTtcbiI7CisgICAgICAg
ICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBGcmFtZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpz
JHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmZyYW1lKCkpO1xuIjsKICAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAuPSAiICAgIGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJv
b3RTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxz
aWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxEb2N1bWVudCIp
IHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0g
V1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuZG9jdW1lbnQoKSk7XG4iOwor
ICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRG9jdW1lbnQqIHJvb3QgPSBXVEY6
OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5kb2N1bWVudCgpKTtcbiI7CiAg
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICBpZiAoIXJvb3QpXG4iOwogICAgICAg
ICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7CiAgICAg
ICAgICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJ
bXBsRWxlbWVudFJvb3QiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRWxlbWVu
dC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZUN1c3RvbS5o
In0gPSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRWxlbWVudCogZWxl
bWVudCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmVsZW1lbnQoKSk7
XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRWxlbWVudCogZWxlbWVu
dCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmVsZW1lbnQoKSk7
XG4iOwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFlbGVtZW50KVxu
IjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7
XG4iOwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgdm9pZCogcm9vdCA9IFdl
YkNvcmU6OnJvb3QoZWxlbWVudCk7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFj
ZU5hbWUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQiKSB7CiAgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siRWxlbWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTTm9kZUN1c3RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9
ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT5pbXBs
KCkuY2FudmFzKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZv
aWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmNh
bnZhcygpKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxl
KCRpbnRlcmZhY2UpIGVxICJJbXBsT3duZXJOb2RlUm9vdCIpIHsKICAgICAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcg
ID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPmlt
cGwoKS5vd25lck5vZGUoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIg
ICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVk
KCkub3duZXJOb2RlKCkpO1xuIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdCgmanMke2lu
dGVyZmFjZU5hbWV9LT5pbXBsKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAg
PSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KCZqcyR7aW50ZXJmYWNlTmFtZX0tPndy
YXBwZWQoKSk7XG4iOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgJHJvb3RTdHJpbmcpOwpAQCAtMzEwMiw3ICszMTAyLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0
PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxE
T01XcmFwcGVyV29ybGQqPihjb250ZXh0KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgp
LCBqcyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCks
IGpzJHtpbnRlcmZhY2VOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgIH0KIApAQCAtMzE5Nyw3ICszMTk3LDcgQEAgRU5ECiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiJGltcGxUeXBlKiAke2NsYXNzTmFtZX06OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSAiIC4gR2V0
Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKHZhbHVlKSlcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBs
KCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBudWxscHRyO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAg
ICAgfQpAQCAtNDI0MCw3ICs0MjQwLDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICAg
ICAgaWYgKCRzZWxmSXNUZWFyT2ZmVHlwZSkgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJTVkdNYXRyaXhUZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAg
ICAgICMgRklYTUU6IEJsaW5rOiBEb24ndCBjcmVhdGUgYSBuZXcgb25lIGV2ZXJ5dGltZSB3ZSBh
Y2Nlc3MgdGhlIG1hdHJpeCBwcm9wZXJ0eS4gVGhpcyBtZWFucywgZS5nLCA9PT0gd29uJ3Qgd29y
ay4KLSAgICAgICAgICAgICAgICAkdmFsdWUgPSAiU1ZHTWF0cml4VGVhck9mZjo6Y3JlYXRlKGNh
c3RlZFRoaXMtPmltcGwoKSwgJHZhbHVlKSI7CisgICAgICAgICAgICAgICAgJHZhbHVlID0gIlNW
R01hdHJpeFRlYXJPZmY6OmNyZWF0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksICR2YWx1ZSkiOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
U1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAg
ICAgICR0ZWFyT2ZmVHlwZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVy
dHlUZWFyT2ZmPCRpbnRlcmZhY2VOYW1lLCAvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcAppbmRleCA5OWUxMjJkM2Q3NTQxYTJmNTZhMDE5ZTAwZDk5NGFiY2VjZDQzMmFkLi5iMGQx
MmMzODkzYWZlMjdiNDRiNzI1ODgwMjIxZTc4MzljZmE3Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcApAQCAtMTQ5LDkgKzE0OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVj
dCo+KHNsb3RCYXNlKTsKLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhp
cy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmV4Y2l0aW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqLCBFbmMKICAgICBK
U1Rlc3RBY3RpdmVET01PYmplY3QqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0
aXZlRE9NT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZG9t
T2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRv
bU9iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgZG9tT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTc5LDkgKzE3OSw5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25FeGNpdGluZ0Z1bmN0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2Jq
ZWN0IiwgImV4Y2l0aW5nRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbygpKTsKLSAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVk
VGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBOb2RlKiBuZXh0Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+
YXJndW1lbnQoMCkpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShF
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVE
T01PYmplY3Q6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3Ry
aW5nIG1lc3NhZ2UgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQKIHsKICAg
ICBhdXRvKiBqc1Rlc3RBY3RpdmVET01PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRp
Y19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCAmanNUZXN0QWN0aXZlRE9NT2JqZWN0LT5pbXBsKCksIGpzVGVzdEFjdGl2ZURPTU9iamVj
dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RBY3RpdmVET01PYmplY3QtPndy
YXBwZWQoKSwganNUZXN0QWN0aXZlRE9NT2JqZWN0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKQEAgLTI2OSw3ICsyNjksNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RBY3RpdmVETwog
VGVzdEFjdGl2ZURPTU9iamVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBl
ci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKaW5kZXggMDlkNmFhYjgyNGUx
MWQ3Y2U0YzlkNzE5ZDdmZjliOWNkZGJkOTJlMC4uY2FhZGJjMWYwYjU3ZGQ1MTBlYmJhZTA2Yzhh
MGQzMTFlOTUwNTRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0MKIHsKICAgICBhdXRvKiBqc1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LT5pbXBsKCksIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LT53cmFwcGVkKCksIGpzVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKQEAgLTE4NCw3ICsxODQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdXN0b21Dbwog
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCi0gICAgICAgIHJl
dHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAKaW5kZXggMzdjMWU1ODEyZjQxYTU1MjU1NDlmMzQwMzMxZTVmOGU3NjliNTA2OS4u
OTk0ZjM2NmVmNDRjMWU4NDA5OTY5YWE4MDMwYTQ5ODI0NGI5NmUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9u
QW5vdGhlckZ1bmMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsICJh
bm90aGVyRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmco
c3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBKU1Rlc3RDdXN0
b21OYW1lZEdldHRlck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm8KIHsKICAgICBhdXRvKiBqc1Rlc3RDdXN0b21OYW1lZEdldHRlciA9IGpzQ2FzdDxK
U1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyLT5pbXBsKCks
IGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpz
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLT53cmFwcGVkKCksIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVy
KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTI1NCw3ICsyNTQsNyBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RDdXN0b21OYQogVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDFhOWZlYTdjMTE3YzcwNGZhM2JjNjYz
YjRmMzUwYzIzYTg2OTgzOGQuLjhkZjkyZDlmZDE4NzM1M2MyN2ZmNjAzOWRhYThjYjg0MjA5ZDAx
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Nyw3ICsxNjcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRy
MSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2
ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjEo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTg0LDcgKzE4
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0
dHIyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRy
MigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yMTQsNyAr
MjE0LDcgQEAgdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3RFdmVu
dENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBl
cldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVu
dENvbnN0cnVjdG9yLT5pbXBsKCksIGpzVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgpLCBqc1Rl
c3RFdmVudENvbnN0cnVjdG9yKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
QEAgLTI2NCw3ICsyNjQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudENvbgogVGVzdEV2ZW50Q29u
c3RydWN0b3IqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2
ZW50Q29uc3RydWN0b3IqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgp
OworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggZjE3NWRkYjNiYmRhNDM2OWNh
Mjc5N2YzMmM0NGE5MDc1YzExMjMyZC4uMGViMTUwZmRlNWY1ZWFlYzQ3N2M1YjM5NTYyYWJkMmRh
YTc3NTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNDUsMTAgKzE0NSwxMCBA
QCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJ
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKLSAgICBpZiAob3B0aW9uYWxJbmRleCAm
JiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHsK
KyAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBvcHRp
b25hbEluZGV4LnZhbHVlKCk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBEb250RGVs
ZXRlIHwgUmVhZE9ubHk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmli
dXRlcywgdG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3Qt
PmltcGwoKS5pdGVtKGluZGV4KSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IGF0dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIGlmIChnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRUYXJnZXQsIEJhc2U+
KHN0YXRlLCBKU1Rlc3RFdmVudFRhcmdldFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQpAQCAtMTcxLDkgKzE3MSw5IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzCiB7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAg
IGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKSkgeworICAgIGlmIChpbmRl
eCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzID0gRG9udERlbGV0ZSB8IFJlYWRPbmx5OwotICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRleCkpKTsKKyAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKQEAgLTE5OSwxMCArMTk5LDEwIEBAIHZvaWQg
SlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBzdGF0ZSwKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpOyBpIDwgY291
bnQ7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShzdGF0
ZSwgaSkpOwogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewotICAg
ICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPmltcGwoKS5zdXBwb3J0
ZWRQcm9wZXJ0eU5hbWVzKCkpCisgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhp
c09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIHByb3BlcnR5
TmFtZSkpOwogICAgIH0KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25J
dGVtKEV4ZWNTdGF0ZSogcwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIml0
ZW0iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2
ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIHVu
c2lnbmVkIGluZGV4ID0gdG9VSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFs
Q29udmVyc2lvbik7CkBAIC0yMzcsNyArMjM3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcigK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJhZGRFdmVudExpc3RlbmVyIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRh
cmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5l
ciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMjUyLDcgKzI1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZl
bnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0RXZlbnRUYXJnZXQiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+
YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI2Nyw3ICsy
NjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50KEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2
ZW50VGFyZ2V0IiwgImRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjg1LDEzICsy
ODUsMTMgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0RXZlbnRUYXJnZXQqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5pbXBsKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJz
KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS52aXNpdEpTRXZlbnRMaXN0ZW5l
cnModmlzaXRvcik7CiB9CiAKIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiBqc1Rlc3RFdmVudFRhcmdldCA9
IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAg
ICBpZiAoanNUZXN0RXZlbnRUYXJnZXQtPmltcGwoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkp
CisgICAgaWYgKGpzVGVzdEV2ZW50VGFyZ2V0LT53cmFwcGVkKCkuaXNGaXJpbmdFdmVudExpc3Rl
bmVycygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgSlNUZXN0RXZlbnRU
YXJnZXRPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqIGNvCiB7CiAgICAgYXV0byoganNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8SlNUZXN0RXZl
bnRUYXJnZXQqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAq
c3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBw
ZXIod29ybGQsICZqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLCBqc1Rlc3RFdmVudFRhcmdldCk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVudFRhcmdldC0+d3JhcHBlZCgp
LCBqc1Rlc3RFdmVudFRhcmdldCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CkBAIC0zNTEsNyArMzUxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRUYXIKIFRlc3RFdmVudFRh
cmdldCogSlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0
Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKaW5kZXggMzVkYTBlNzU5ZTQ4MzliMTIzZjllNTIzY2RkMjYxNTlmMTky
YTFlNS4uY2FkNmU5OWRlNGM1MDEzMDg3OWUxMzUwMDI2MmRiMDkwOWFhMDAyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
eGNlcHRpb25OYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihzbG90
QmFzZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBKU1Rlc3RFeGNlcHRpb25P
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNv
bnQKIHsKICAgICBhdXRvKiBqc1Rlc3RFeGNlcHRpb24gPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9u
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0RXhjZXB0aW9uLT5pbXBsKCksIGpzVGVzdEV4Y2VwdGlvbik7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFeGNlcHRpb24tPndyYXBwZWQoKSwganNUZXN0RXhjZXB0
aW9uKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTIxOSw3ICsyMTks
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3RFeGNlcHRpbwogVGVzdEV4Y2VwdGlvbiogSlNUZXN0RXhjZXB0
aW9uOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPih2YWx1ZSkpCi0gICAgICAgIHJl
dHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCmluZGV4IDU3M2EwOTBhY2Y3YTg3MGUwYmI3MTliZmY3ZjE1YzE5Y2UxZTYz
NTguLmM3NDA2YWMxOTU0ZTkwOTJiYTU1ZjMyNGFmMWJjZTFkNWNkY2NkNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBKU1Zh
bHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbAogYm9vbCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byoganNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiByb290
ID0gJmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKTsKKyAgICBUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZSogcm9vdCA9ICZqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLT53cmFwcGVkKCk7
CiAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QpOwogfQogCkBAIC0x
MzEsNyArMTMxLDcgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLAogewogICAgIGF1dG8qIGpzVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUgPSBqc0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKSwganNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLT53cmFwcGVkKCksIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogfQogCiAjaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMTgxLDcgKzE4MSw3IEBAIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dEdlbmVyYXRlCiBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IGQyZDdiODAxMzQ4ZmQ2Y2M0YzYxYTkxOWU3YjEyMDMwYzY2YjYxMjkuLmZkOGNl
YTM1ZGMyZWZmZjBkNTRhZWUzMTM2NjE0MjJlMzVjMGJjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC00NjIsNyArNDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50c1N0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00ODEsNyArNDgxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
U3RyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01MTIsNyArNTEyLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGOjpnZXRQdHIoaW1wbC5pbXBsZW1lbnRzTm9kZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVt
ZW50YWxTdHIxIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxTdHIxKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtNTc0LDcgKzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKCZpbXBsKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNjA1LDcgKzYwNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFs
Tm9kZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxOb2Rl
KCZpbXBsKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTY2
Niw3ICs2NjYsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJp
bmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNO
b2RlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03Mzcs
NyArNzM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmlu
ZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBA
IC03NzMsNyArNzczLDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2Rl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxO
b2RlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03OTUs
NyArNzk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEUKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW1wbC5pbXBsZW1lbnRzTWV0aG9kMSgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC04MTAsNyArODEwLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkltcGxlbWVudHNNZXRob2QyKEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c01ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg2MSw3ICs4NjEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
U3VwcGxlbWVudGFsTWV0aG9kMQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoJmltcGwpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC04NzYsNyArODc2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtOTIyLDcgKzkyMiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvCiBib29sIEpTVGVzdEludGVyZmFjZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIGpzVGVzdEludGVy
ZmFjZSA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
Ci0gICAgaWYgKGpzVGVzdEludGVyZmFjZS0+aW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQor
ICAgIGlmIChqc1Rlc3RJbnRlcmZhY2UtPndyYXBwZWQoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEpTVGVzdEludGVyZmFjZU93bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udAog
ewogICAgIGF1dG8qIGpzVGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c1Rlc3RJbnRlcmZhY2UtPmltcGwoKSwganNUZXN0SW50ZXJmYWNlKTsKKyAgICB1bmNhY2hlV3Jh
cHBlcih3b3JsZCwgJmpzVGVzdEludGVyZmFjZS0+d3JhcHBlZCgpLCBqc1Rlc3RJbnRlcmZhY2Up
OwogfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZhY2UqIGltcGwpCkBAIC05
NjEsNyArOTYxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50ZXJmYWMKIFRlc3RJbnRlcmZhY2UqIEpT
VGVzdEludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odmFsdWUpKQot
ICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVy
LT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAxZjQwY2NkZTVkMmFjY2RhNTM1YTE4
MGE2ZmY1ZDEyM2FlMmZmNzY1Li5kMDYxMWU1ZWVjYTU3NmU4NzkyN2M5NjRhMjIwZTk3YTVhZTY3
MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBA
IC0xMzUsNyArMTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoIXN0YXRl
LT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGwKIHsKICAgICBhdXRvKiBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
ID0ganNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihoYW5kbGUuc2xvdCgpLT5h
c0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxk
Kj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLT5pbXBsKCksIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci0+d3Jh
cHBlZCgpLCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKIH0KIAogI2lmIEVOQUJMRShC
SU5ESU5HX0lOVEVHUklUWSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RNZWRp
YVF1ZQogVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPih2YWx1
ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDYxZGUzOTI0YWI5YzI0NzE5MTBiYmEzZGI0MjQz
MDgzM2NjMDU3ZTAuLmM4YTYxNjQ2YjgyZGQ5MWE1YzYzNzkyNmFkNTQzZjlhMWIyODAzZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBK
U1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5hbWVkQ29uc3RydWN0b3IoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYgogYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byoganNUZXN0TmFt
ZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwotICAgIGlmIChqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT5pbXBsKCku
aGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAgaWYgKGpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPndy
YXBwZWQoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Myw3ICsxNzMs
NyBAQCB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaQogewogICAgIGF1dG8qIGpzVGVzdE5hbWVkQ29u
c3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29y
bGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkQ29u
c3RydWN0b3ItPmltcGwoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7CisgICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53cmFwcGVkKCksIGpzVGVzdE5h
bWVkQ29uc3RydWN0b3IpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAt
MjIzLDcgKzIyMyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkQ29uCiBUZXN0TmFtZWRDb25zdHJ1
Y3RvciogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7Cisg
ICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAKaW5kZXggNzljZDUxYjQ5N2JmODk3YzAxOTk3ZDA1YjJlMmY2NDkyZDEw
ZDdlZi4uZDBlYWEzMTc4OGY3MDEyOTZkZjAxZjBkYzAyNTA2MzA5ZDc0ZDFjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsCiAgICAgICAg
ICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3ROb2Rl
IiwgIm5hbWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAg
dm9pZCBzZXRKU1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGgKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJp
bmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpTVGVz
dE5vZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5vZGUqPihjZWxsKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5pbXBs
KCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKaW5kZXgg
OGZkMGQzZDIyY2Q0NWQ3OWNjYTdjY2FhM2FkYmExMzdkODA2NzkwNS4uMGM3MmEzMWJkYjZiY2Jm
OWIxN2E3ZDZiYzExOWU1YjM0ODQ2MDAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCkBAIC00OSw5ICs0OSw5IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKLSAgICBUZXN0Tm9kZSYgaW1wbCgpIGNvbnN0Cisg
ICAgVGVzdE5vZGUmIHdyYXBwZWQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRlc3ROb2RlJj4oQmFzZTo6aW1wbCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRlc3ROb2RlJj4oQmFzZTo6d3JhcHBlZCgpKTsKICAgICB9CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0Tm9kZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RO
b2RlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCA1YzBhNTdh
N2MxZTM2N2UyZTAxMWZiZmU2NTljMjk5YjhmMWI5OTlkLi4xOTJhZTA4YWJjYjQ0NGNlNWYzMGMy
NjYxOTQyN2Q5MzQ4NzQxYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3Bw
CkBAIC0xNTIsNyArMTUyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y05vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoRXhlY1N0YXRlKiBzdGEKICAgICBJbnB1dEN1
cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0
ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7Ci0g
ICAgICAgIGludCBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS5ub25kZXRlcm1p
bmlzdGljUmVhZG9ubHlBdHRyKCk7CisgICAgICAgIGludCBtZW1vaXplZFJlc3VsdCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKCk7CiAgICAgICAg
IGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxpbnQ+PihiaW5kaW5nTmFtZS5n
ZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0ZSogc3Rh
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTg5LDcgKzE4
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9
IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9u
ZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5n
IG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNXcml0
ZWFibGVBdHRyKCk7CisgICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cigpOwogICAgICAgICBjdXJz
b3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0
KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRy
KEV4ZWNTdGF0ZSogc3QKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
Lm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRl
KiBzdAogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29y
KCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGlu
Z05hbWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRy
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5p
c0NhcHR1cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRo
aXMtPmltcGwoKS5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigpOworICAgICAgICBTdHJp
bmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3Rp
Y0V4Y2VwdGlvbkF0dHIoKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9N
UmVzdWx0PFN0cmluZz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3Vs
dCwgMCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMjQxLDcgKzI0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9u
QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yNjQs
NyArMjY0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICBJbnB1dEN1cnNvciYgY3Vy
c29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yy5ub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAg
ICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJt
aW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoZWMpOworICAgICAgICBTdHJpbmcgbWVtb2l6ZWRS
ZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2Vw
dGlvbkF0dHIoZWMpOwogICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1
bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCBl
Yyk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG1l
bW9pemVkUmVzdWx0KTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC0y
ODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICAgICAgfQogICAgIH0K
ICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25B
dHRyKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0
cihFeGVjU3RhCiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRD
dXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBi
aW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4
Y2VwdGlvbkF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBp
ZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0
ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRy
KCk7CisgICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KS5ub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cigpOwogICAgICAgICBjdXJzb3Iu
YXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0KCku
c3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMTksNyArMzE5LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25B
dHRyKEV4ZWNTdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5v
bmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIHNldEpTVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKUwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5v
bmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NSw3
ICszNjUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
RXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKUwogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5p
c3RpY0V4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUp
LT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUq
IHN0YQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRl
dGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5h
dGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTQw
NSw3ICs0MDUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YQogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJt
aW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5n
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00MjcsNyArNDI3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90
eXBlRnVuY3Rpb25Ob25kZXRlcm1pbmkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE5vbmRldGVybWluaXN0aWM6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0OwogI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5pbnB1dEN1cnNvcigpOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQg
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyA9
IGpzQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy0+
aW1wbCgpLCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdE5vbmRldGVybWluaXN0aWMtPndyYXBwZWQoKSwganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC01MTIsNyArNTEy
LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0Tm9uZGV0ZXIKIFRlc3ROb25kZXRlcm1pbmlzdGljKiBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAg
IGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggZmM3YWFkM2EyNDZkMTE3MThiODI0ZDU0OGJhMzUxN2YyZGU4MDBhOC4uZDdkM2Iw
NGY4YzQ1NDQ3ODJiM2FhNzU1MmE2Mzk2MzE5NjcxY2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTczNiw3
ICs3MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5TG9u
Z0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVhZE9ubHlMb25nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJlYWRPbmx5TG9uZ0F0dHIoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNzUzLDcgKzc1Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInJlYWRPbmx5U3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5yZWFkT25s
eVN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtNzcwLDcgKzc3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9i
akF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVh
ZE9ubHlUZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnJlYWRPbmx5VGVzdE9iakF0dHIo
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTgxMiw5ICs4
MTIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
Z0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBpZiAoIWNhc3RlZFRoaXMtPmltcGwo
KS5mcmFtZSgpKQorICAgIGlmICghY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgU2V0dGluZ3Mm
IHNldHRpbmdzID0gY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCktPnNldHRpbmdzKCk7CisgICAg
U2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCktPnNldHRp
bmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncy50ZXN0U2V0dGluZ0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC04MzIsNyArODMyLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC04NDksNyArODQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0
ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJieXRlQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTg2Niw3ICs4NjYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldEF0dHIi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5vY3RldEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtODgzLDcgKzg4Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialNob3J0
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAic2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnNob3J0QXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05MDAsNyArOTAwLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVu
c2lnbmVkU2hvcnRBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRTaG9ydEF0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTE3LDcgKzkxNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC05MzQsNyArOTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJs
b25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0xvbmdBdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTk1MSw3ICs5NTEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTY4LDcgKzk2
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJz
dHJpbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTg1LDcgKzk4NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0
dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwu
dGVzdE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTEwMDIsNyArMTAwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
WE1MT2JqQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihpbXBsLnhtbE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwMTksNyArMTAxOSw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5pc0NyZWF0
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDM2LDcg
KzEwMzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0
cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0
ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDUz
LDcgKzEwNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYQogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZEludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJbnRl
Z3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0
dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDcwLDcg
KzEwNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KHN0ZDo6bWF4KDAsIGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRC
b29sZWFuQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2Us
IEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xMTIxLDcgKzExMjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTE1NSw3ICsxMTU1LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0cikpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExNzIsNyArMTE3Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmdldFVS
TEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExODksNyArMTE4
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwudHlwZWRBcnJheUF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTEyMDcsNyArMTIwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKICAgICBzZXRET01FeGNl
cHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xMjI1LDcgKzEyMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwuYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjYxLDcgKzEyNjEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTEyNzgsNyArMTI3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNo
ZWNraW5nQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLnN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSgpKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWwKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAib25mb28iKTsKICAgICB9CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0
ZWRUaGlzLT5pbXBsKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXZlbnRIYW5kbGVyQXR0cmlidXRlKGNhc3RlZFRoaXMtPndyYXBwZWQoKSwg
ZXZlbnROYW1lcygpLmZvb0V2ZW50KSk7CiB9CiAKIApAQCAtMTMyMSw3ICsxMzIxLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG8KICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlKCpzdGF0ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTEzMzgsNyArMTMzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0
aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5k
U2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC53aXRoQ2FsbFdpdGhBbmRTZXR0ZXJD
YWxsV2l0aEF0dHJpYnV0ZSgqc3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKUwog
ICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0KSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEzNzYsNyArMTM3Niw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIp
OwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0
YXRlLCBlYykpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIHN0YQogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhz
Y3JpcHRDb250ZXh0LCBlYykpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDE5LDcgKzE0MTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKEV4ZWNTdAogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCkpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDQwLDcgKzE0NDAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKAogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCwgZWMpKSk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTQ2MSw3ICsxNDYxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWIKICAgICBhdXRvKiBz
Y3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlw
dENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKnN0YXRlLCBz
Y3JpcHRDb250ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTE0NzgsNyArMTQ3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0CiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTE0OTYsNyArMTQ5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29u
ZGl0aW9uYWxBdHRyMSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxB
dHRyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTE1
LDcgKzE1MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlv
bmFsQXR0cjIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjIo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUzNCw3ICsx
NTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0
dHIzIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIzKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1OTAsNyArMTU5MCw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hl
ZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLmdldCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5jYWNoZWRBdHRyaWJ1dGUxKCkuaGFzTm9WYWx1
ZSgpID8ganNOdWxsKCkgOiBpbXBsLmNhY2hlZEF0dHJpYnV0ZTEoKS5qc1ZhbHVlKCkpOwogICAg
IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMS5zZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRo
aXMsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTYx
MCw3ICsxNjEwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICB9CiAgICAgaWYgKEpT
VmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTIuZ2V0KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBsLmNhY2hlZEF0dHJpYnV0ZTIo
KS5oYXNOb1ZhbHVlKCkgPyBqc051bGwoKSA6IGltcGwuY2FjaGVkQXR0cmlidXRlMigpLmpzVmFs
dWUoKSk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLnNldChzdGF0ZS0+dm0o
KSwgY2FzdGVkVGhpcywgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xNjI4LDcgKzE2MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZAogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImFueUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gKGltcGwuYW55QXR0cmlidXRlKCkuaGFzTm9W
YWx1ZSgpID8ganNOdWxsKCkgOiBpbXBsLmFueUF0dHJpYnV0ZSgpLmpzVmFsdWUoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTY0MCw3ICsxNjQwLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oc2xvdEJhc2UpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLmNvbnRl
bnREb2N1bWVudCgpKSA/IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLmNvbnRlbnREb2N1bWVudCgpKSkgOiBqc051bGwoKSk7CiB9CiAKQEAg
LTE2NTYsNyArMTY1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0
YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRlc3RPYmosIFNWR1Bv
aW50Pjo6Y3JlYXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1cGRhdGVN
dXRhYmxlUG9pbnQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtMTY3Myw3ICsxNjczLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9p
bnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmMKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJp
bW11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3Jl
YXRlKGltcGwuaW1tdXRhYmxlUG9pbnQoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJsdWViZXJy
eSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzA3LDcg
KzE3MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInN0cmljdEZsb2F0Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuc3RyaWN0RmxvYXQoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTcyNCw3ICsxNzI0LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqRGVzY3JpcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJkZXNjcmlwdGlvbiIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJkZXNjcmlwdGlvbiIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmRlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTE3NDEsNyArMTc0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iaklkKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJpZCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJpZCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTE3NTgsNyArMTc1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakhhc2goRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiaGFzaCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJoYXNoIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmhh
c2goKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTc3NSw3
ICsxNzc1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJs
ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJlcGxhY2VhYmxl
QXR0cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTE3OTMsNyArMTc5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91Ymxl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlRG91Ymxl
QXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZURv
dWJsZUF0dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4MTMsNyArMTgxMyw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29s
IGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlm
IChpc051bGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAt
MTgzMyw3ICsxODMzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFu
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG8KICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVCb29sZWFu
QXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwubnVsbGFibGVC
b29sZWFuQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTg1Myw3ICsxODUzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
Ym9vbCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ0F0dHJp
YnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4NzMsNyArMTg3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wg
aXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpKTsK
ICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KTsKQEAgLTE4OTQsNyArMTg5NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
U3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlCiAgICAgfQog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxs
YWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKICAgICBpZiAoaXNOdWxsKQpAQCAtMTkxNCw3ICsxOTE0LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlIik7CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC0xOTMxLDcgKzE5MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdp
dGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdp
dGhSZXNlcnZlZEVudW1UeXBlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTE5NDgsNyArMTk0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZv
cndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwucHV0Rm9yd2Fy
ZHNBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTE5NjUsNyArMTk2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmli
dXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBs
LnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTIwMTUsNyArMjAxNSw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
RW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRK
U1ZhbHVlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImVudW1BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFs
dWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakJ5dGVB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJi
eXRlQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbnQ4X3QgbmF0aXZlVmFsdWUgPSB0b0ludDgoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjA1Nyw3ICsyMDU3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHUK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0
ZXRBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQ4KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIwNzcsNyArMjA3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNo
b3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9JbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMDk3LDcgKzIwOTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialVuc2ln
bmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNv
ZAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1
bnNpZ25lZFNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICB1aW50MTZfdCBuYXRpdmVWYWx1ZSA9IHRvVUludDE2KHN0YXRlLCB2YWx1
ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMTcsNyArMjExNyw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImxvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzNyw3ICsyMTM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1YKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvSW50NjQoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1Nyw3ICsyMTU3LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG5hdGl2ZVZh
bHVlID0gdG9VSW50NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE3
Nyw3ICsyMTc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5Nyw3
ICsyMTk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmEKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMTcsNyArMjIxNyw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBK
U1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVj
ayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIHNldEpTVGVzdE9i
alJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
amVjdCwgRQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjk3LDcgKzIyOTcsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBiYXNlTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBuYXRpdmVW
YWx1ZSA9IHRvVUludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIz
MTcsNyArMjMxNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRy
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGJv
b2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzM3LDcgKzIz
MzcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVW
YWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIz
NTcsNyArMjM1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsIHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjM3Nyw3ICsyMzc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmoKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRv
Qm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
amVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5n
V2l0aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNDM3LDcgKzI0MzcsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBFbmNvZGVkSgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8RmxvYXQzMkFycmF5PiBuYXRpdmVW
YWx1ZSA9IHRvRmxvYXQzMkFycmF5KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNDc3LDcgKzI0
NzcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1
ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCkBAIC0yNDk5LDcgKzI0OTksNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhz
dGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxOSw3ICsyNTE5LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0yNTQx
LDcgKzI1NDEsNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iagogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRy
aWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICF2YWx1ZS5pbmhl
cml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpKSB7CiAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIiwgIlRl
c3RPYmoiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU3Nyw3ICsyNTc3LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGgKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib25mb28iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzZXRFdmVu
dEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+aW1wbCgp
LCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKKyAgICBzZXRFdmVudEhhbmRsZXJBdHRy
aWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVudE5h
bWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKIH0KIAogCkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNjEzLDcgKzI2
MTMsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0
aEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI2MzMsNyArMjYzMyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNjU2LDcgKzI2NTYsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogYmFzZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2NzYsNyArMjY3Niw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0yNjk5LDcgKzI2OTksNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdAogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVl
ID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNzIyLDcgKzI3MjIsNyBAQCB2
b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMoRXhlY1N0YQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4
ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjc2OCw3ICsyNzY4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5k
Q2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2IKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjc4OSw3ICsyNzg5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBF
bmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MTEsNyArMjgxMSw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVj
dCwgRW5jb2RlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yODMzLDcgKzI4MzMsNyBAQCB2b2lkIHNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuY29kZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUs
IHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg5OSw3ICsyODk5LDcgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuY29kZWRKU1YKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5hdGl2ZVZh
bHVlID0geyBzdGF0ZS0+dm0oKSwgdmFsdWUgfTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkxOSw3ICsyOTE5LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJh
c2VPYmplY3QsIEVuY29kZWRKU1YKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4q
IG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkzOSw3
ICsyOTM5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEoKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlU
ZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yOTU5LDcgKzI5NTksNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmF3YmVycnko
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbAogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJhd2Jl
cnJ5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjk3OSw3ICsyOTc5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmEKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0Rmxv
YXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
ZmxvYXQgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Zsb2F0KHN0YXRlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5OSw3ICsy
OTk5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCB2
b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZl
VmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMw
NTYsNyArMzA1Niw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50
IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0zMDc2LDcgKzMwNzYsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNl
cnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRo
UmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzA5OCw3ICszMDk4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpQ
dXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVj
dCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBS
ZWY8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCkucHV0Rm9yd2Fy
ZHNBdHRyaWJ1dGUoKTsKKyAgICBSZWY8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKTsKICAgICBhdXRvJiBpbXBsID0g
Zm9yd2FyZGVkSW1wbC5nZXQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0
cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKQEAgLTMxMTksNyArMzExOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9y
d2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1
dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCkucHV0
Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOworICAgIFJlZlB0cjxUZXN0Tm9kZT4gZm9yd2Fy
ZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmli
dXRlKCk7CiAgICAgaWYgKCFmb3J3YXJkZWRJbXBsKQogICAgICAgICByZXR1cm47CiAgICAgYXV0
byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsOwpAQCAtMzE0Miw3ICszMTQyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2Qo
RXhlY1N0YXRlKiBzdGEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidm9pZE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLnZvaWRNZXRob2QoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMzE1NCw3ICsz
MTU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAidm9pZE1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgaW50IGxvbmdBcmcgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzE3Nyw3ICszMTc3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhl
Y1N0YXRlKiBzdGEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZU1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwuYnl0ZU1ldGhvZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0zMTg5LDcgKzMxODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQ4X3QgYnl0ZUFyZyA9IHRvSW50OChzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMyMTIsNyArMzIx
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIHN0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm9jdGV0TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldE1ldGhvZCgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMjI0LDcgKzMyMjQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RX
aXRoQXJncyhFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZFdp
dGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgdWludDhf
dCBvY3RldEFyZyA9IHRvVUludDgoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC0zMjQ3LDcgKzMyNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIHN0YQog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTWV0
aG9kKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMyNTks
NyArMzI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImxvbmdNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMyODIsNyArMzI4Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9iak1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLm9iak1l
dGhvZCgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzI5
NCw3ICszMjk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMzE3LDcgKzMzMTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
U2VxdWVuY2VBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBW
ZWN0b3I8UmVmUHRyPFNjcmlwdFByb2ZpbGU+PiBzZXF1ZW5jZUFyZyA9ICh0b1JlZlB0ck5hdGl2
ZUFycmF5PFNjcmlwdFByb2ZpbGUsIEpTU2NyaXB0UHJvZmlsZT4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgJkpTU2NyaXB0UHJvZmlsZTo6dG9XcmFwcGVkKSk7CkBAIC0zMzM0LDcgKzMzMzQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMzNTEsNyArMzM1MSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51
bUFyZyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhFbnVt
QXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgLy8gS2VlcCBw
b2ludGVyIHRvIHRoZSBKU1N0cmluZyBpbiBhIGxvY2FsIHNvIHdlIGRvbid0IG5lZWQgdG8gcmVm
IHRoZSBTdHJpbmcuCkBAIC0zMzcyLDcgKzMzNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFy
ZwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJn
QW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6
ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3Vu
dCA8PSAwKSB7CkBAIC0zNDAxLDcgKzM0MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CkBAIC0zNDI0LDcgKzM0MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKEV4ZWNT
dGF0ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzZXJpYWxpemVkVmFsdWUiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkQXJnID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0zNDQxLDcgKzM0NDEsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0
aW9uc09iamVjdChFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9wdGlv
bnNPYmplY3QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBEaWN0
aW9uYXJ5IG9vID0geyBzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApIH07CkBAIC0zNDYxLDcgKzM0
NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbihl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC0zNDk1LDcgKzM0OTUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
UHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInBy
aXZhdGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBT
dHJpbmcgYXJndW1lbnQgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CkBAIC0zNTEyLDcgKzM1MTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1l
bnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM1MjcsNyArMzUyNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25SZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFko
IWxpc3RlbmVyLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMzU0Miw3ICszNTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQoRXhl
Y1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWQo
KnN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpA
QCAtMzU1NCw3ICszNTU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaihFeGVjU3QKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRlT2JqKCpzdGF0
ZSkpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM1NjgsNyArMzU2OCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVW
b2lkRXhjZXB0aW9uKCpzdGF0ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMp
OwpAQCAtMzU4Miw3ICszNTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGkKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKCpzdGF0ZSwgZWMpKSk7
CiAKQEAgLTM1OTksNyArMzU5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2MTQsNyArMzYxNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzYyOSw3ICszNjI5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvKiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENv
bnRleHQpCkBAIC0zNjQ5LDcgKzM2NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlcyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAo
IXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC0zNjY2LDcgKzM2NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbAogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJn
dW1lbnRzKHN0YXRlLCAwKSk7CiAgICAgaW1wbC53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrKHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjc5LDcgKzM2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
QXJnKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxB
cmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50
ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAg
LTM3MDEsNyArMzcwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmRECiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0
ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzcyMyw3
ICszNzIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9uT3B0ID0gdG9JbnQzMihz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM3NTAsNyAr
Mzc1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBub25PcHQgPSB0b0ludDMy
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzc4NSw3
ICszNzg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZygKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7
CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zODA3LDcgKzM4MDcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAg
ICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM4MjksNyArMzgyOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zODQ0LDcgKzM4NDQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmciKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZCgpID8gU3RyaW5nKCkgOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmco
c3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0zODU5LDcgKzM4NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZQogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVj
dCgpKQpAQCAtMzg3Niw3ICszODc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9u
Q2FsbGJhY2sgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZl
cnNpb24pOwpAQCAtMzg5Niw3ICszODk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGkKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFj
az4gY2FsbGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51
bGwoKSkgewogICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc09iamVj
dCgpKQpAQCAtMzkxNCw3ICszOTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW8KICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoIXN0YXRlLT5hcmd1
bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC0zOTMxLDcgKzM5MzEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM5NTEsNyArMzk1MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFja0Z1bmN0aW9uPiBjYWxsYmFjazsKICAg
ICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAg
IGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKQEAgLTM5OTMs
NyArMzk5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmNv
bmRpdGlvbmFsTWV0aG9kMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC00MDA4LDcgKzQwMDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEV4ZWNTdAogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDIoKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDAyMyw3ICs0MDIzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Y29uZGl0aW9uYWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlt
cGwuY29uZGl0aW9uYWxNZXRob2QzKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KQEAgLTQwMzcsNyArNDAzNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDEoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBK
U1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDA1Nyw3ICs0MDU3
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMigKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1
bWVudCgwKSk7CkBAIC00MDg0LDcgKzQwODQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzKAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIHN0ckFyZyA9IHN0YXRlLT5h
cmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKQEAgLTQxMDEsNyArNDEw
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwg
Tm9ybWFsQ29udmVyc2lvbik7CkBAIC00MTE4LDcgKzQxMTgsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q1KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTQxMzUsNyArNDEzNSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDYoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gbGlzdEFyZyA9IHRvRE9NU3RyaW5nTGlzdChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKQEAgLTQxNTIsNyArNDE1Miw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcoCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyA9IHRv
TmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQxNjks
NyArNDE2OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgoCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0
ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDE4Niw3ICs0MTg2LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOSgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFy
cmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkp
OwpAQCAtNDIwMyw3ICs0MjAzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTAKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gYXJyYXlBcmcgPSB0b05h
dGl2ZUFycmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQyMjAs
NyArNDIyMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBTdHJpbmcgc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtNDIzNyw3ICs0MjM3LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMTIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBWZWN0b3I8QmxvYio+IGJsb2JB
cmdzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291
bnQoKTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoaSkuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQpAQCAtNDI4OSw3ICs0Mjg5LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kV2kKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3Zl
cmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZzEgPSBKU1Rlc3RPYmo6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDMxNiw3ICs0MzE2LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kV2kKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1l
dGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRl
LT5hcmd1bWVudCgwKSk7CkBAIC00NDMzLDcgKzQ0MzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAo
RXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjbGFzc01ldGhvZFdpdGhDbGFtcCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIHVuc2lnbmVkIHNob3J0
IG9iakFyZ3NTaG9ydCA9IDA7CkBAIC00NDYzLDcgKzQ0NjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVk
TG9uZ1NlcQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBW
ZWN0b3I8dW5zaWduZWQ+IHVuc2lnbmVkTG9uZ1NlcXVlbmNlID0gdG9OYXRpdmVBcnJheTx1bnNp
Z25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NDgwLDcgKzQ0ODAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3Ry
aW5nQXJyYXlGdW5jdGlvbihFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
bmdBcnJheUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NTAwLDcgKzQ1MDAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlz
dEZ1bmN0aW9uKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJkb21TdHJpbmdMaXN0
RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKQEAgLTQ1MjAsNyArNDUyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhBbmRXaXRob3V0
TnVsbGFibGVTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ1NDAsNyArNDU0MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
QW5kV2l0aG91dE51bGxhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhB
bmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZTIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1
bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NTYwLDcgKzQ1NjAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
R2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJn
ZXRTVkdEb2N1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBp
bXBsLmdldFNWR0RvY3VtZW50KGVjKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwpAQCAtNDU3Nyw3ICs0NTc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSogc3RhdGUK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDEiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0
b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ1OTQsNyArNDU5NCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
MihFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQy
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZh
bHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NjEx
LDcgKzQ2MTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDQoRXhlY1N0YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIFRlc3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMCkpOwpAQCAtNDYyOCw3ICs0NjI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ1KEV4ZWNTdGF0ZSogc3RhdGUK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDUiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0
b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ2NDUsNyArNDY0NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxl
UG9pbnRGdW5jdGlvbihFeGVjCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQ
b2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLm11dGFibGVQb2lu
dEZ1bmN0aW9uKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtNDY1Nyw3ICs0NjU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oRXgKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDY2OSw3ICs0NjY5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShF
eGVjU3RhdGUqIHN0YXRlKQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvcmFuZ2UiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5iYW5hbmEoKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDY4MSw3ICs0NjgxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blN0cmljdEZ1bmN0aW9uKEV4ZWNTdGF0ZSoKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
c3RyaWN0RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ3MDcsNyArNDcwNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlv
bldpdGhTZXF1ZW5jCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9u
V2l0aFNlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NzMyLDcgKzQ3MzIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25X
aXRoQXJyYXkoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldp
dGhBcnJheSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwpAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9k
KEV4ZWMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNTdHJpbmdNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBTdHJpbmcgaGVhZCA9
IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKQEAgLTQ3
NzcsNyArNDc3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgZG91YmxlIGhlYWQgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9O
dW1iZXIoc3RhdGUpOwpAQCAtNDc5Nyw3ICs0Nzk3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVj
U3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgTm9kZSogaGVhZCA9IEpTTm9k
ZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00ODIwLDcgKzQ4MjAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55
KEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFueSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGZsb2F0IGEgPSBzdGF0ZS0+
YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CkBAIC00ODQ2LDcgKzQ4NDYsNyBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvblByb21pcwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0UHJvbWlz
ZUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwudGVzdFBy
b21pc2VGdW5jdGlvbihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBwcm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQpAQCAtNDg2NCw3ICs0ODY0LDcgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoRmwKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlvbldp
dGhGbG9hdEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgZmxvYXQgYSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Zsb2F0KHN0YXRlKTsKQEAgLTQ4OTEs
NyArNDg5MSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGltcGwudGVz
dFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtNDkxMSw3ICs0OTExLDcgQEAgc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoT3AKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5j
dGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAg
aWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC00OTQ2LDcgKzQ5NDYsNyBAQCB2b2lkIEpTVGVzdE9i
ak93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKIHsKICAgICBhdXRvKiBqc1Rlc3RPYmogPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0T2JqLT5pbXBsKCksIGpzVGVzdE9iaik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c1Rlc3RPYmotPndyYXBwZWQoKSwganNUZXN0T2JqKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKQEAgLTQ5OTYsNyArNDk5Niw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE9iaiogaW1w
CiBUZXN0T2JqKiBKU1Rlc3RPYmo6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggZGQ1MGJhMjZlMWVjMmQyODkzOGQw
NmIwNzJmOTcxYjU5NGNiYjM5My4uZGU0YWJmYWNmODRhYWY3MTA1OGYzYmJlYTA5MTI5MThmMmVk
M2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApA
QCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiB7CiAgICAgYXV0byog
anNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+aW1wbCgpLCBqc1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPndyYXBwZWQoKSwganNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjEsNyAr
MjYxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWQKIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXIt
PmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCAz
ZDk3YjEzY2FiYjA3M2QxNDFiNjRhNTk3NDczMjdmMWY4ZWU4NmE0Li40MWYzZjI0OTIyMTFiNDRk
YWJjZmY5NzJhZDJiNDI1YzdjMDY3NjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3QKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgZm9yIChh
dXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT5pbXBsKCkuc3VwcG9ydGVkUHJvcGVydHlO
YW1lcygpKQorICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPndy
YXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBwcm9wZXJ0eU5hbWUpKTsKICAg
ICB9CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJv
cGVydHlOYW1lcywgbW9kZSk7CkBAIC0xOTIsNyArMTkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0
ZW0oRXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwgIm5hbWVkSXRl
bSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T3Zl
cnJpZGVCdWlsdGluczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5n
IG5hbWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yMTEsNyArMjExLDcgQEAgdm9p
ZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5z
ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LT5pbXBsKCksIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMpOworICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+d3JhcHBlZCgpLCBqc1Rlc3RPdmVycmlkZUJ1
aWx0aW5zKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTI2MSw3ICsy
NjEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVycmlkZQogVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnMqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAppbmRleCBiYzc1ZDJlYTVjZWZmY2RjNGVhN2RiODZhZjI5Yjk0ODVjNzIxNGY4Li4zYTMyNzIx
ZWIxZTkyYmMxOTBhM2QwYWZlZTUyNGQxNTU2MzFjODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMTM3LDcgKzEz
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC52
YWx1ZSgpID8gaW1wbC52YWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTU0LDcgKzE1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlKiBzdGF0CiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwucmVhZG9ubHlWYWx1ZSgpID8g
aW1wbC5yZWFkb25seVZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwKICAg
ICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFZh
bHVlLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmNhY2hlZFZh
bHVlKCkgPyBpbXBsLmNhY2hlZFZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICBjYXN0ZWRUaGlzLT5tX2NhY2hl
ZFZhbHVlLnNldChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywgcmVzdWx0KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FycmF5KHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wb3J0cygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0yMTAsNyArMjEwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShFeGVjU3Rh
dGUKICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2Nh
Y2hlZFJlYWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FjaGVkVmFsdWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGltcGwuY2FjaGVkUmVhZG9ubHlWYWx1ZSgpID8gaW1wbC5jYWNoZWRSZWFkb25seVZhbHVlKCkt
PmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051
bGwoKTsKICAgICBjYXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUuc2V0KHN0YXRlLT52
bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYQogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRpdmVW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZQogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRp
dmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwg
MCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vdwogewogICAg
IGF1dG8qIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IGpzQ2FzdDxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UtPmltcGwoKSwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS0+d3JhcHBlZCgpLCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMzQwLDcgKzM0
MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdFNlcmlhbGl6CiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+
d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApp
bmRleCBjMjNkZmUyZGM5NzhhNGJhNDI2MzI4ZDM0NTM2NDcyMzAwOTMxYjdmLi40ZTRjZmU4NWEy
MDdlZTFhNzZmMjNiY2NhZjgwMmMyNzlmMWU4MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAg
LTIyMCw3ICsyMjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9u
Z0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbAogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
dW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTIzNyw3ICsyMzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKUwog
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZh
bHVlKCkgPyBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6
ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAg
ICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbihl
YykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTI4Myw3ICsyODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3Rh
dGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMwMSw3ICszMDEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MzE5LDcgKzMxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPCiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplYwogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xv
bmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUludDY0KHN0YXRlLCB2YWx1
ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIHNldEpTVGVz
dFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KHN0YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIHNldEpTVGVz
dFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50
MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDA1LDcgKzQwNSw3IEBA
IHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogYmFzZU9iCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUs
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhz
dGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgc2V0SlNUZXN0
VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVl
KHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQ2
OSw3ICs0NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogc3RhdAogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFR5cGVkZWZzIiwgImZ1bmMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
IAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlm
IChhcmdzQ291bnQgPD0gMCkgewpAQCAtNDkxLDcgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhFeGVj
U3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic2V0U2hhZG93Iik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBmbG9hdCB3aWR0aCA9
IHN0YXRlLT5hcmd1bWVudCgwKS50b0Zsb2F0KHN0YXRlKTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoU2VxdWVuY2VBcgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
Im1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBzZXF1
ZW5jZUFyZyA9ICh0b1JlZlB0ck5hdGl2ZUFycmF5PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICZKU1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6dG9XcmFwcGVkKSk7CkBAIC01NDksNyArNTQ5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVBcnJheUFyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJudWxs
YWJsZUFycmF5QXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTU2Niw3ICs1NjYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENs
YW1wKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImZ1bmNXaXRoQ2xh
bXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5
cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBhcmcxID0gMDsKQEAgLTYwMyw3ICs2MDMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQ
b2ludEZ1bmN0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVBv
aW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFi
bGVQb2ludEZ1bmN0aW9uKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtNjE1LDcgKzYxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CkBAIC02MzUsNyArNjM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBcnJheUZ1bmN0aW9uMiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CkBAIC02NTUsNyArNjU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXQKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5j
bHVkZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVj
dG9yPFJlZlB0cjxUZXN0RXZlbnRUYXJnZXQ+PiBzZXF1ZW5jZUFyZyA9ICh0b1JlZlB0ck5hdGl2
ZUFycmF5PFRlc3RFdmVudFRhcmdldCwgSlNUZXN0RXZlbnRUYXJnZXQ+KHN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksICZKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKSk7CkBAIC02NzIsNyAr
NjcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbigKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW1wbC5tZXRob2RXaXRo
RXhjZXB0aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTY5MCw3
ICs2OTAsNyBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZQogewogICAgIGF1dG8qIGpzVGVzdFR5
cGVkZWZzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0VHlwZWRlZnMtPmltcGwoKSwg
anNUZXN0VHlwZWRlZnMpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0VHlwZWRl
ZnMtPndyYXBwZWQoKSwganNUZXN0VHlwZWRlZnMpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdf
SU5URUdSSVRZKQpAQCAtNzQwLDcgKzc0MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFR5cGVkZWZzCiBU
ZXN0VHlwZWRlZnMqIEpTVGVzdFR5cGVkZWZzOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVl
KQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
cyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJl
dHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmli
dXRlLmNwcAppbmRleCA2NGFmMzE4NGFiZWI2MzlmNjRlODNjZjcyNWJlODZjMTM1MDAxYjI2Li5l
MmZjYmFmYjIwZTNhNGFjZTZjODFkZmQxYmE0ZGYxOWE2ZmRjMWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJhdHRyaWJ1dGUiLCAi
cmVhZG9ubHkiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
ImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5yZWFkb25s
eSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTIsNyAr
MTUyLDcgQEAgdm9pZCBKU2F0dHJpYnV0ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBhdXRvKiBqc2F0dHJpYnV0
ZSA9IGpzQ2FzdDxKU2F0dHJpYnV0ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzYXR0cmlidXRlLT5pbXBsKCksIGpzYXR0cmlidXRl
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzYXR0cmlidXRlLT53cmFwcGVkKCksIGpz
YXR0cmlidXRlKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTIwMiw3
ICsyMDIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGF0dHJpYnV0ZSogaQogYXR0cmlidXRlKiBKU2F0dHJpYnV0
ZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGUqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmluZGV4IDU0ZmNhOGM3NzkwYjc4ZGJl
MTYzOGFkOTZkOWM4NDUxM2FlNzVkNjUuLmNlZTgyNTI3NjY1N2Y1NmMzN2VjOGQyM2NlZWJjODlh
MjJmNDE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEpTcmVhZG9u
bHlPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
IGNvbnRleHQpCiB7CiAgICAgYXV0byoganNyZWFkb25seSA9IGpzQ2FzdDxKU3JlYWRvbmx5Kj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0
PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAm
anNyZWFkb25seS0+aW1wbCgpLCBqc3JlYWRvbmx5KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzcmVhZG9ubHktPndyYXBwZWQoKSwganNyZWFkb25seSk7CiB9CiAKIEpTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgcmVhZG9ubHkqIGltcGwpCkBAIC0xNjAsNyArMTYwLDcgQEAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCByZWFkb25seSogaW0KIHJlYWRvbmx5KiBKU3JlYWRvbmx5Ojp0b1dyYXBwZWQoSlNDOjpKU1Zh
bHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU3Jl
YWRvbmx5Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAg
ICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IDM5MTQwODUxYzI3
YWQ5YzM4NmUzODE4NDg5NDg1NGUzOTlkMDkzOTQuLmIxMjYxMjdlZDJmNDQ3YjQ0NmM4YWExNWZh
MGQwZjY2OWMzYzkyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNw
cApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gQ2FsbGluZyBhIHJ1bnRpbWUgb2JqZWN0IG9mIGEgcGx1Z2luIGVsZW1lbnQ/CiAgICAgICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNIVE1MRWxlbWVudDo6aW5mbygpKSkKLSAgICAgICAg
ICAgIGluc3RhbmNlID0gcGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09i
amVjdCh0aGlzVmFsdWUpKS0+aW1wbCgpKTsKKyAgICAgICAgICAgIGluc3RhbmNlID0gcGx1Z2lu
SW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdCh0aGlzVmFsdWUpKS0+d3Jh
cHBlZCgpKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZSkKICAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA5MDA3NTExMzljN2Q3NjU2NWIyYzhmY2Nh
NjI4ZGI1OWFjNGIyZjMwLi5jZDdhN2IzODc5M2E4MDc0MWFmYzAzM2ZjNWI3NmEwOTVhYTkyMzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC00NDAsNyArNDQwLDcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpjYW5BY2Nl
c3NJbnNwZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3QKICAgICBpZiAo
IWluc3BlY3RlZFdpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzY3JpcHRTdGF0ZSwg
aW5zcGVjdGVkV2luZG93LT5pbXBsKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcik7CisgICAg
cmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzY3Jp
cHRTdGF0ZSwgaW5zcGVjdGVkV2luZG93LT53cmFwcGVkKCksIERvTm90UmVwb3J0U2VjdXJpdHlF
cnJvcik7CiB9CiAKIEluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRsZXIgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZnVuY3Rpb25DYWxsSGFuZGxlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCA4MzdiNmJjYjQ1OWRkYWYwZTMxOTg1MDE5YWIyZDU4YzQ1YjI3Zjhi
Li5kMTE1MThmNWU3MTQ3NzE5ODY2NzQ5YjhhNmUxNzBlYTQ1M2YyMWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTIwODEsNyArMjA4MSw3IEBAIHN0YXRpYyBXZWJG
cmFtZUxvYWRUeXBlIHRvV2ViRnJhbWVMb2FkVHlwZShGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5
cGUpCiAgICAgICAgIGFueVdvcmxkR2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5k
b3dTaGVsbCo+KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpOwogCiAgICAgLy8gR2V0IHRoZSBm
cmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgotICAgIEZyYW1l
KiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAg
QVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IHdlYkZy
YW1lKGtpdChmcmFtZSkpOyAvLyBSdW5uaW5nIGFyYml0cmFyeSBKYXZhU2NyaXB0IGNhbiBkZXN0
cm95IHRoZSBmcmFtZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW0KaW5kZXggZmVmYzNhYjk1ZjUwNWRmOWJlNmNlYmNmYzQ3NmRiNGMwZTQzNzU0
MS4uN2I1YzQ4NDM3ZjI2MDhkODFjYjdiOTNlNWQwMWMxYzlhNDMxMTE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC02OCw3ICs2OCw3
IEBAIHN0YXRpYyBOU1VSTCAqdG9OU1VSTChjb25zdCBTdHJpbmcmIHMpCiBzdGF0aWMgV2ViRnJh
bWUgKnRvV2ViRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBKU0RP
TVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3Qp
OwotICAgIHJldHVybiBraXQod2luZG93LT5pbXBsKCkuZnJhbWUoKSk7CisgICAgcmV0dXJuIGtp
dCh3aW5kb3ctPndyYXBwZWQoKS5mcmFtZSgpKTsKIH0KIAogV2ViU2NyaXB0RGVidWdnZXI6Oldl
YlNjcmlwdERlYnVnZ2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBmODAwYzIyZmNm
NTJjN2IzNjY2ODE0ZGRhMjZiNzQ0MmExYzY0MGI3Li5mOWMyNjA2ODFlYWQ4NjY3YzYwZjkzZDc4
Yjg0MzU3ZjZjNDZjN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTY4Myw3ICs2ODMsNyBAQCBXZWJGcmFtZSogV2ViRnJhbWU6OmZy
YW1lRm9yQ29udGV4dChKU0NvbnRleHRSZWYgY29udGV4dCkKICAgICBpZiAoc3RyY21wKGdsb2Jh
bE9iamVjdE9iai0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIkpTRE9NV2luZG93U2hlbGwiKSAh
PSAwKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0
PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxPYmplY3RPYmopLT53aW5kb3coKS0+aW1wbCgpLmZy
YW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+
KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpLT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICByZXR1
cm4gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKIH0KIApAQCAtNzI4LDcgKzcyOCw3
IEBAIFN0cmluZyBXZWJGcmFtZTo6Y291bnRlclZhbHVlKEpTT2JqZWN0UmVmIGVsZW1lbnQpCiAg
ICAgaWYgKCF0b0pTKGVsZW1lbnQpLT5pbmhlcml0cyhKU0VsZW1lbnQ6OmluZm8oKSkpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50
KCZqc0Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPmltcGwoKSk7CisgICAgcmV0dXJu
IGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoJmpzQ2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQp
KS0+d3JhcHBlZCgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpwcm92aXNpb25hbFVSTCgpIGNv
bnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264304</attachid>
            <date>2015-10-28 23:21:31 -0700</date>
            <delta_ts>2015-10-28 23:52:30 -0700</delta_ts>
            <desc>Fixing win</desc>
            <filename>bug-150613-20151029072028.patch</filename>
            <type>text/plain</type>
            <size>422925</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1NGIxNDgyYWUxNWJh
ZjBhNzlhZjI3ZjliNTcwYWFmYjE2NGQ2My4uZWMxNWQzYzhjMjNmMDJhMTNiYTFiMGEwNjU1OTFi
NWM1MmVmZTc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4NCBAQAorMjAxNS0xMC0yNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFw
cGVkIGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvci4KKworCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6SlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjphY2Nlc3NMb2cpOgorICAgICAgICAoV2ViQ29yZTo6
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZXJyb3JMb2cpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXR0ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F0dHI6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVy
U291cmNlTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQnVmZmVyU291
cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnNldEtpbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NSdWxlTGlzdE93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJv
cGVydHlWYWx1ZUZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5R2V0dGVy
UGl4ZWxPclBvc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxDYW52YXNTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0
TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldFdlYmtpdExpbmVEYXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2hhcmFj
dGVyRGF0YTo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2hhcmFjdGVyRGF0YTo6YWZ0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjpyZXBsYWNlV2l0aCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3RlZE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmRhdGFiYXNlSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OnN0b3JhZ2VJZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXk6OmFsZ29yaXRobSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ3J5cHRvS2V5UGFpcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21FdmVudDo6ZGV0YWlsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRo
TlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFjdGl2ZURPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpmaXJz
dERPTVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxGb3JtRWxlbWVudE9yTnVsbCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTUZvcm1EYXRhOjphcHBlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU1p
bWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW5BcnJh
eTo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW46Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVN0cmluZ0xpc3Q6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdN
YXA6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
U3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
U3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVG9rZW5MaXN0Ojp0b2dnbGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaG91bGRBbGxvd0FjY2Vzc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjp1cGRhdGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpwcmludEVycm9yTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6OnN1cHBvcnRzUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFz
ZTo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZhbHVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGlsZEZyYW1l
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc0RPTVdpbmRvd1dlYktpdCk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRv
d0luZGV4ZWREQik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OmdldEVudW1lcmFibGVMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldEludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dT
aGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6Ondy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V3JhcHBlcjo6d3JhcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXI6OkpTRE9N
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRGF0YUN1ZTo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
YXRhQ3VlOjpzZXRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhVHJhbnNmZXI6OnR5cGVzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25J
bmNsdWRpbmdHcmF2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6
OnJvdGF0aW9uUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50Ojpp
bnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2
aWNlTW90aW9uRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRp
b25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9u
RXZlbnQ6OmFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6YmV0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6Omdh
bW1hKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0
Q29tcGFzc0hlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojp3ZWJraXRDb21wYXNzQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9y
aWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9j
dW1lbnQ6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6YXBwZW5kKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudEZyYWdtZW50OjpwcmVwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6YXBwZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50
VHlwZTo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRUeXBlOjphZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50VHlwZTo6cmVwbGFjZVdpdGgpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0VsZW1lbnQ6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OmFmdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6cmVwbGFjZVdpdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFbGVtZW50OjpwcmVwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6
YXBwZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXZlbnQ6OmNsaXBib2FyZERhdGEpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNGaWxlUmVhZGVyOjpyZXN1bHQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9s
b2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9j
YXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1l
bnQ6OnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENh
bnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpu
YW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRDYWxsaW5nRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om9w
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRXcml0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxF
bGVtZW50OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6Om5hbWVHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxGcmFtZUVsZW1lbnQ6OnNldExvY2F0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4U2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TFNlbGVjdEVsZW1lbnQ6OmluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MVGVt
cGxhdGVFbGVtZW50Ojpjb250ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNs
b3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSGlzdG9yeTo6c3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXNoU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0
RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6dG9TdHJpbmdGdW5jdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU01l
ZGlhU291cmNlU3RhdGVzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJj
ZVN0YXRlczo6ZnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0
ZXM6OmFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6
OmZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6dm9s
dW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0QWRkaXRpb25hbENoaWxk
cmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6ZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVJbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnBv
c3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpkZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpKU01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9j
a1JlcXVlc3REZWNpc2lvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25PYnNlcnZlck93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6
Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU05vZGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpy
ZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpyZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJh
dG9yOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0T3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVP
clN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b05vZGVPclN0cmluZ1ZlY3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU09zY2lsbGF0b3JOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJO
b2RlOjpzZXRQYW5uaW5nTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJOb2RlOjpz
ZXREaXN0YW5jZU1vZGVsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBs
dWdpblZpZXdCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblNjcmlwdE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1BvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSVENTdGF0c1Jlc3BvbnNl
OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxSZXN1bHRTZXRSb3dMaXN0Ojpp
dGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU1ZHTGVuZ3RoOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6c2V0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdl
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6cHV0
RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldExpc3Q6Om5hbWVHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3VidGxlQ3J5cHRvOjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5
cHRvOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpzaWduKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp2ZXJpZnkpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNTdWJ0bGVDcnlwdG86OndyYXBLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0
bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tD
dWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tDdWVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tD
dWU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFjazo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldEtp
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXh0VHJhY2tMaXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Ry
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUcmFja0V2ZW50Ojp0cmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVHJlZVdhbGtl
cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2tMaXN0
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRh
Y2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjFmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJp
YjJmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZl
cnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlcjo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNXb3JrZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjp3cmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNj
cmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxI
dHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWFBhdGhSZXN1bHQ6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hl
ZEZyYW1lRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFtZURhdGE6
OnJlc3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9tV2luZG93RnJvbUV4ZWNTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9E
T00ubW06CisgICAgICAgICgrW0RPTU5vZGUgX25vZGVGcm9tSlNXcmFwcGVyOl0pOgorICAgICAg
ICAqIGJpbmRpbmdzL29iamMvRE9NVXRpbGl0eS5tbToKKyAgICAgICAgKEpTQzo6Y3JlYXRlRE9N
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBfaXNTYWZlU2NyaXB0XSk6CisgICAgICAgICgrW1dl
YlNjcmlwdE9iamVjdCBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6b3JpZ2luUm9vdE9iamVjdDpy
b290T2JqZWN0Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdldEluZGV4ZWRHZXR0ZXJFeHByZXNzaW9uKToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoTmF0aXZlVG9KU1Zh
bHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0
aW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVG
dW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZl
RE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkFub3RoZXJGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21O
YW1lZEdldHRlck93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RFdmVudENvbnN0cnVjdG9yQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRD
b25zdHJ1Y3RvckF0dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0
b3JPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdl
dDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RF
dmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlw
ZUZ1bmN0aW9uRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRh
cmdldDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdl
dE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RFdmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV4Y2Vw
dGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uT3duZXI6OmZpbmFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6dG9XcmFwcGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdElu
dGVyZmFjZUltcGxlbWVudHNTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFj
ZUltcGxlbWVudHNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbFN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVu
dHNNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uSW1wbGVtZW50c01ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lck93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVy
OjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp0
b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b2RlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVy
bWluaXN0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNSZWFkb25seUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY0dldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVh
YmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
U2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1p
bmlzdGljUHJvdG90eXBlRnVuY3Rpb25Ob25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWNPd25lcjo6ZmluYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialJlYWRPbmx5VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpFbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpCeXRlQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPY3RldEF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialVuc2ln
bmVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxvbmdBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3RPYmpBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialhNTE9iakF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxl
Y3RlZFN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkSW50
ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVk
SW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEJvb2xl
YW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVHlwZWRBcnJheUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iak9uZm9vKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
aldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRl
MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakFueUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpDb250ZW50RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTXV0
YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakltbXV0YWJsZVBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqRGVz
Y3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqSGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZXBsYWNl
YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZURvdWJs
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQnl0
ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakFueUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqU3RyYXdiZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpTdHJpY3RGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnl0ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVs
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0
aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlv
bmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEw
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDExKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aE9wdGlvbmFsUGFyYW1ldGVyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0
cmluZ0xpc3RGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVs
bGFibGVTZXF1ZW5jZTIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25HZXRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbnZlcnQ1KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1
bmN0aW9uV2l0aEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudFByb21pc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T2JqT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE9iajo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
RnVuY3Rpb25OYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWls
dGluc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDYWNoZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hl
ZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZU93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xv
bmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlw
ZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFNlcXVlbmNlQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdB
cnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNPd25l
cjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBl
ZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzYXR0cmlidXRlUmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNhdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRy
aWJ1dGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seU93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Ojp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OmNhbGxSdW50aW1lTWV0
aG9kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRTY3Jp
cHRTdGF0ZSk6CisKIDIwMTUtMTAtMjUgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1RleE1hcF0gRml4IGEgbWlzdXNlZCBmbGFnIGZvciBHc3RHTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDMxOTE2MmQ5ZDBlZDY1MmI0YTQ0ZWFmYjE3OTIxMTQ2ZjE2ZWU0ZWMu
LjMyNmQ3ZDIzNWY2ZjVmOWY4NTZiNjJiNGQyZmE1YzgzM2IzZmU0ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0xMC0yNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5m
YWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFtZSBKU0RPTVdyYXBwZXIuaW1wbCB0
byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFt
ZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVj
dDppblNjcmlwdFdvcmxkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
bW06CisgICAgICAgICh0b1dlYkZyYW1lKToKKwogMjAxNS0xMC0yMyAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEludm9rZSB0aGUgY29udGV4dCBtZW51
IGRlbGVnYXRlIGNhbGxiYWNrIHJpZ2h0IGJlZm9yZSB3ZSByZXR1cm4gdGhlIG1lbnUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCA1YzhhMDE4OWY1ZWNjODM4ZWUxMDlhZjQxNTg2ZTRmZjBkZGUyZTA3Li5m
NDNmMjkzMWJjNDdiZWJjNDQ3NGM3MTg5ZTA3NDllYjZmZmJmYTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTAtMjcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBSZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8g
SlNET01XcmFwcGVyLndyYXBwZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKToKKwogMjAxNS0xMC0yMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgbWVudSBjcmVh
dGlvbiB0byBXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWVmMzcxMTFjNzIzYWZlNjVkYThmYWFiOTcy
MzVjMDc3ODEzMGE2Yi4uMGFlOWUzY2IyOGU5OTFkZGNkMGE2Mzg2NjI1ODQ4ZjlkMTE3ZDJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTEwLTI3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVuYW1lIEpTRE9NV3JhcHBl
ci5pbXBsIHRvIEpTRE9NV3JhcHBlci53cmFwcGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpmcmFtZUZvckNvbnRleHQpOiBSZW5hbWluZyBp
bXBsKCkgdG8gd3JhcHBlZCgpLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y291bnRlclZh
bHVlKTogRGl0dG8uCisKIDIwMTUtMTAtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEsrIGJ1aWxkIGFmdGVy
IHIxOTE1NDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggMTZiYjE4YmE1YjI2ZTE2OWZi
Y2VmYWM1ZTQ2YWM2ZTEyMzg5NTVkYi4uZTQ1MzJjOGExNWZkNTYyOWQyYTE4NTg4Zjk3YjE1NGEy
MDhmMGRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0
YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRh
dGFJdGVtVHlwZSAqaXRlbSwgSlNDCiBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IGltcGwoKS5w
YXJlbnRFbGVtZW50KCk7CisgICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgp
LnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBKU0M6
OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpCiBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6YWNjZXNzTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gaW1wbCgpLnBhcmVudEVs
ZW1lbnQoKTsKKyAgICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50
RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAgICAg
ICByZXR1cm4gSlNDOjpqc051bGwoKTsKIApAQCAtNDE2LDcgKzQxNiw3IEBAIEpTQzo6SlNWYWx1
ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjphY2Nlc3NMb2coSlNDOjpFeGVjU3RhdGUm
IHN0YXRlKSBjb25zCiBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6
ZXJyb3JMb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogI2lmIFBMQVRGT1JNKElP
UykKLSAgICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnQgPSBpbXBsKCkucGFyZW50RWxlbWVudCgp
OworICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQoKS5wYXJlbnRFbGVtZW50
KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkpCiAgICAgICAgIHJldHVy
biBKU0M6OmpzTnVsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F0dHJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3Vz
dG9tLmNwcAppbmRleCA0MmYxMmYwZWQyZDEzYzRlNzVlMDY0YTMzNmJiNzNjMGFkNTM1ZDM1Li5k
NDVjZjZkMmM4YThlZTJhZDdjMzdhZGJkZTcwOGY0ZGRlNGE1YjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXR0cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlND
OjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGlt
cGwoKS5vd25lckVsZW1lbnQoKSkKKyAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHdyYXBwZWQo
KS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoZWxl
bWVudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKaW5kZXggMWM5YzMyOGIxMjEyNWQ5
YmJlMzkyY2UzMWUyNjM4MTZlMmYxMzRlZC4uMzNmNzY4ZTNjODM0NTNkYWU5NzUwMmY1MzQ4M2Nk
M2RkMjliZTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2
b2lkIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZmZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWlt
cGwoKS5zZXRCdWZmZXIoYnVmZmVyKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5zZXRCdWZmZXIoYnVm
ZmVyKSkKICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5
cGVFcnJvcigmc3RhdGUsICJBdWRpb0J1ZmZlciB1bnN1cHBvcnRlZCBudW1iZXIgb2YgY2hhbm5l
bHMiKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJh
Y2tDdXN0b20uY3BwCmluZGV4IDM2ZjMxZDlkNjJlY2Q3OGZkMWFhZjE5MWMyMmI5YTU1MDAyMjc3
M2QuLjE1MzE4MTVhYzYzNzVkOTYwZmViMjM3NWY1ZmMzZTE1N2M2YTliZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNBdWRpb1RyYWNrOjp2aXNp
dEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiB2b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEpTQXVk
aW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1
dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNl
dEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC01OSw3
ICs1OSw3IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm47Ci0gICAgaW1wbCgpLnNldExhbmd1YWdlKHN0cmluZyk7CisgICAgd3JhcHBlZCgp
LnNldExhbmd1YWdlKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKaW5kZXggODMxZTQyNWM4NjVkNGI4NTdk
M2FjNDBhOGVlOTdhZmJhYWQyNWMzYS4uNmZkMWE1MDQwMjUwZTdkNDc3NmM2ZTk4ZjU0NjJlOTgz
YjE1OGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2b2lkIEpTQXVkaW9UcmFja0xpc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwo
KS5lbGVtZW50KCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCku
ZWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCmlu
ZGV4IGY2ZmE4NmY1YzM3NGZlYmJjMGI4MWJmZmNhZmM1ZWVkY2E0MWIzMWUuLjkyMWJhZWYzYmRl
MjkzZDhhMTdjMjM2ZjI2NGUyMTFiOThiYzYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcApAQCAtNDIsNyAr
NDIsNyBAQCB2b2lkIEpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2
YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGUgPSB2YWx1ZS50b1VJbnQz
Migmc3RhdGUpOwotICAgICAgICBpZiAoIWltcGwoKS5zZXRUeXBlKHR5cGUpKQorICAgICAgICBp
ZiAoIXdyYXBwZWQoKS5zZXRUeXBlKHR5cGUpKQogICAgICAgICAgICAgc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsICJJbGxlZ2FsIEJpcXVh
ZEZpbHRlck5vZGUgdHlwZSIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxLDcgKzUx
LDcgQEAgdm9pZCBKU0JpcXVhZEZpbHRlck5vZGU6OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBTdHJp
bmcgdHlwZSA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgICAg
IGlmICh0eXBlID09ICJsb3dwYXNzIiB8fCB0eXBlID09ICJoaWdocGFzcyIgfHwgdHlwZSA9PSAi
YmFuZHBhc3MiIHx8IHR5cGUgPT0gImxvd3NoZWxmIiB8fCB0eXBlID09ICJoaWdoc2hlbGYiIHx8
IHR5cGUgPT0gInBlYWtpbmciIHx8IHR5cGUgPT0gIm5vdGNoIiB8fCB0eXBlID09ICJhbGxwYXNz
IikgewotICAgICAgICAgICAgaW1wbCgpLnNldFR5cGUodHlwZSk7CisgICAgICAgICAgICB3cmFw
cGVkKCkuc2V0VHlwZSh0eXBlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCmlu
ZGV4IGZmMjYzMDc4ODMxZjNjOTcxMTljN2EwOTlhNDRkMDIyY2YzYjlhZTIuLjBkMzM3Nzc5Njkz
MTEwZmNhOTdiY2ExY2MzMWU2OTgyMWQ4MWQ2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgSlNDU1NSdWxlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1w
bCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQog
CiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ1NTUnVsZSogcnVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NSdWxlTGlzdEN1c3RvbS5jcHAKaW5kZXggODllOTkyMTUwNmZmNTBlODFlMGM4YjhiODM5ZjJl
OTg2YmRhOTNiNC4uMDI4NDQ0ZmUzZGQ5MThiYzBkMDgwNTBlOWRiYzI4NjI5MjdhNWRiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5j
cHAKQEAgLTQxLDkgKzQxLDkgQEAgYm9vbCBKU0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGEKICAgICBKU0NTU1J1
bGVMaXN0KiBqc0NTU1J1bGVMaXN0ID0ganNDYXN0PEpTQ1NTUnVsZUxpc3QqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7CiAgICAgaWYgKCFqc0NTU1J1bGVMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0
aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5
bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPmltcGwoKS5zdHlsZVNoZWV0KCkpCisgICAgaWYgKENT
U1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBqc0NTU1J1bGVMaXN0LT53cmFwcGVkKCkuc3R5bGVT
aGVldCgpKQogICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChz
dHlsZVNoZWV0KSk7Ci0gICAgaWYgKENTU1J1bGUqIGNzc1J1bGUgPSBqc0NTU1J1bGVMaXN0LT5p
bXBsKCkuaXRlbSgwKSkKKyAgICBpZiAoQ1NTUnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3Qt
PndyYXBwZWQoKS5pdGVtKDApKQogICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1
ZVJvb3Qocm9vdChjc3NSdWxlKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAKaW5kZXggZGUyZjkwNzM0NWE3NjhmNWNlZjM2ODg0OTYyN2NiNDJkNWU0NTFlYy4uOTFi
YTMxMjI5OTA5ZDY0OGZjOTBhN2RmNDJmM2E1ZTY5MjNjZTlmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIGNsYXNzIENTU1By
b3BlcnR5SW5mbyB7CkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGdl
dFByb3BlcnR5VmFsdWVGYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXIK
IHsKICAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2gg
YXMgInBhZGRpbmciKSwKICAgICAvLyBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQ
cm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2Jq
LT5pbXBsKCkuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5
SUQ+KGluZGV4KSkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2Jq
LT53cmFwcGVkKCkuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3Bl
cnR5SUQ+KGluZGV4KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUgY3NzUHJvcGVydHlH
ZXR0ZXJQaXhlbE9yUG9zUHJlZml4KEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0
aW9uKiB0aGlzT2JqLCB1bnNpZ25lZCBwcm9wZXJ0eUlEKQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhl
Y1N0YXRlKiBleGVjLCBKU0NTU1N0CiAgICAgLy8gcG9zVG9wIHJldHVybnMgIkNTUyB0b3AiIGFz
IG51bWJlciB2YWx1ZSBpbiB1bml0IHBpeGVscyBfaWZfIGl0cyBhCiAgICAgLy8gcG9zaXRpb25l
ZCBlbGVtZW50LiBpZiBpdCBpcyBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQsIHJldHVybiAwCiAg
ICAgLy8gZnJvbSBNU0lFIGRvY3VtZW50YXRpb24gRklYTUU6IElNUExFTUVOVCBUSEFUIChEaXJr
KQotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwog
ICAgIGlmICh2KSB7CiAgICAgICAgIGlmICh2LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAg
ICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odiktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwpAQCAtMzAw
LDcgKzMwMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVs
T3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0CiAKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBjc3NQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiogdGhpc09iaiwgdW5zaWduZWQgcHJvcGVydHlJRCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IHYgPSB0aGlzT2JqLT5pbXBsKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRp
Y19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IHYgPSB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRp
Y19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKICAgICBpZiAodikKICAgICAgICAg
cmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHYtPmNzc1RleHQoKSk7CiAKQEAgLTM0MSw3ICsz
NDEsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVy
dHlJRD4ocHJvcGVydHlJbmZvLnByb3BlcnR5SUQpOwotICAgIGltcGwoKS5zZXRQcm9wZXJ0eUlu
dGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1ZSwgaW1wb3J0YW50LCBlYyk7CisgICAgd3JhcHBl
ZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQs
IGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0zNTMsMTEgKzM1MywxMSBAQCBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8Q1NT
VmFsdWU+IGNzc1ZhbHVlID0gaW1wbCgpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1l
KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gd3JhcHBlZCgpLmdldFByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWNzc1ZhbHVlKQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7CiAKLSAgICBnbG9iYWxPYmplY3QoKS0+d29ybGQoKS5tX2Nzc1ZhbHVlUm9v
dHMuYWRkKGNzc1ZhbHVlLmdldCgpLCByb290KCZpbXBsKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlND
U1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgorICAgIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1f
Y3NzVmFsdWVSb290cy5hZGQoY3NzVmFsdWUuZ2V0KCksIHJvb3QoJndyYXBwZWQoKSkpOyAvLyBC
YWxhbmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKCkuCiAgICAgcmV0dXJuIHRvSlMo
JnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY3NzVmFsdWUpKTsKIH0KIApAQCAt
MzY2LDcgKzM2Niw3IEBAIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KG9i
amVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCmluZGV4IGVkNTEyNTMzZWQzM2Ez
OTIyNTJiZjY0NTJjMjFlYmM5YWVhOWExNzYuLmQ4ZjQ3MDVhZWJkMmFjNGY3MmFjYjA5YjAyOGJk
NTM3MzIxMDJlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
VmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFs
dWVDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgSlNDU1NWYWx1ZU93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiAg
ICAgaWYgKCFqc0NTU1ZhbHVlLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nzc1ZhbHVl
Um9vdHMuZ2V0KCZqc0NTU1ZhbHVlLT5pbXBsKCkpOworICAgIHZvaWQqIHJvb3QgPSB3b3JsZC0+
bV9jc3NWYWx1ZVJvb3RzLmdldCgmanNDU1NWYWx1ZS0+d3JhcHBlZCgpKTsKICAgICBpZiAoIXJv
b3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09w
YXF1ZVJvb3Qocm9vdCk7CkBAIC02MCw4ICs2MCw4IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkK
IHsKICAgICBKU0NTU1ZhbHVlKiBqc0NTU1ZhbHVlID0ganNDYXN0PEpTQ1NTVmFsdWUqPihoYW5k
bGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB3b3JsZC5tX2Nzc1ZhbHVl
Um9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLT5pbXBsKCkpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCAmanNDU1NWYWx1ZS0+aW1wbCgpLCBqc0NTU1ZhbHVlKTsKKyAgICB3b3JsZC5tX2Nzc1Zh
bHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLT53cmFwcGVkKCkpOworICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+d3JhcHBlZCgpLCBqc0NTU1ZhbHVlKTsKIH0KIAogSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENT
U1ZhbHVlKiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAppbmRleCBiOTkzYmRj
MjQyYjQyYzc5M2MyMWU5ZDA0NzIxOTQ2YjM5MGNlN2I3Li5kYTc1ODAyZWRmZmExNjcwMjhlZDhl
MGIxMjRhY2ExYzQ4NDMyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC01
Myw5ICs1Myw5IEBAIHN0YXRpYyBDYW52YXNTdHlsZSB0b0hUTUxDYW52YXNTdHlsZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVy
aXRzKEpTQ2FudmFzR3JhZGllbnQ6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBDYW52YXNTdHls
ZSgmanNDYXN0PEpTQ2FudmFzR3JhZGllbnQqPihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICBy
ZXR1cm4gQ2FudmFzU3R5bGUoJmpzQ2FzdDxKU0NhbnZhc0dyYWRpZW50Kj4ob2JqZWN0KS0+d3Jh
cHBlZCgpKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0NhbnZhc1BhdHRlcm46OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzUGF0dGVybio+
KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpT
Q2FudmFzUGF0dGVybio+KG9iamVjdCktPndyYXBwZWQoKSk7CiAgICAgcmV0dXJuIENhbnZhc1N0
eWxlKCk7CiB9CiAKQEAgLTY3LDEyICs2NywxMiBAQCBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjb21taXQoRXhlY1N0YXRlJikKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuc3Ryb2tlU3R5bGUoKSk7
CisgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnN0cm9r
ZVN0eWxlKCkpOwogfQogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJv
a2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9IGltcGwoKTsKKyAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkp
IHsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihhc1N0cmluZyh2YWx1ZSktPnZhbHVl
KCZzdGF0ZSkpOwogICAgICAgICByZXR1cm47CkBAIC04MiwxMiArODIsMTIgQEAgdm9pZCBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zmls
bFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvSlMoJnN0YXRl
LCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLmZpbGxTdHlsZSgpKTsKKyAgICByZXR1cm4gdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuZmlsbFN0eWxlKCkpOwogfQogCiB2b2lk
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRl
eHQgPSBpbXBsKCk7CisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJiBjb250ZXh0ID0gd3Jh
cHBlZCgpOwogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
RmlsbFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndlYmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgZGFzaCA9IGltcGwoKS5nZXRMaW5l
RGFzaCgpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhc2ggPSB3cmFwcGVkKCkuZ2V0TGlu
ZURhc2goKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgVmVjdG9yPGZs
b2F0Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGFzaC5lbmQoKTsKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaChFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAogICAgICAgICBkYXNoLmFwcGVuZChlbGVtKTsKICAg
ICB9CiAKLSAgICBpbXBsKCkuc2V0V2Via2l0TGluZURhc2goZGFzaCk7CisgICAgd3JhcHBlZCgp
LnNldFdlYmtpdExpbmVEYXNoKGRhc2gpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBlNWRkNmU4ODEyNzZjODU2MGFmYmQ1ZDk1MTNi
MjA3ZjIyMmRkZGZkLi43ZjUwNDM1ZjVhNjNkMjU4ZDJjMDNmY2NhMGYzNzg1ZDZiOWY0YjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFs
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3QoaW1wbCgpLmNhbnZhcygpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJv
b3Qod3JhcHBlZCgpLmNhbnZhcygpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKaW5kZXggY2I4MzFkMDRjZmI4ZWY4NTY4NDc2YmQ4ZmRl
M2Y4ZjgyZTlhN2M5MS4uNjAxN2YxZjYwOWZjNmRmM2ViZDk1M2U0ODUwMzM4YWJkM2Q5MWM4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFD
dXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUg
SlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3Rh
dGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CkBAIC00NSw3ICs0NSw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRh
OjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjphZnRl
cihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVk
KCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3
ICs1NCw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUmIHN0YXRl
KQogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRv
Tm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0
aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNw
cAppbmRleCBiMDY1ZDVjZmYxY2YxYjUwNjQ3NDU5NjJiZGNkOGQ2MWRmNzY3ZjUyLi41NWM3OTIx
MmExMjQwZjJmYmJiODBmYjZmZTBmNTRjY2RkZTJiN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0NvbW1hbmRM
aW5lQVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29t
bWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0ID0gaW1wbCgpLmluc3Bl
Y3RlZE9iamVjdCgpOworICAgIENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Qq
IG9iamVjdCA9IHdyYXBwZWQoKS5pbnNwZWN0ZWRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBKU1Zh
bHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUmIHN0
YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIFZlY3RvcjxFdmVudExp
c3RlbmVySW5mbz4gbGlzdGVuZXJzQXJyYXk7Ci0gICAgaW1wbCgpLmdldEV2ZW50TGlzdGVuZXJz
SW1wbChub2RlLCBsaXN0ZW5lcnNBcnJheSk7CisgICAgd3JhcHBlZCgpLmdldEV2ZW50TGlzdGVu
ZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJheSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxpc3RlbmVyc0FycmF5LnNpemUoKTsgKytpKSB7CkBAIC0xMjksNyArMTI5LDcgQEAgSlNWYWx1
ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlm
IChzdGF0ZS5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBvYmplY3Qoc3RhdGUudm0oKSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBoaW50cyhzdGF0ZS52bSgpLCBzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0gICAgICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmplY3Qu
dG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpLCBoaW50cy50b0luc3BlY3RvclZhbHVlKCZzdGF0ZSkp
OworICAgICAgICB3cmFwcGVkKCkuaW5zcGVjdEltcGwob2JqZWN0LnRvSW5zcGVjdG9yVmFsdWUo
JnN0YXRlKSwgaGludHMudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU1ZhbHVlIEpTQ29tbWFu
ZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBEYXRhYmFz
ZSogZGF0YWJhc2UgPSBKU0RhdGFiYXNlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIGlmIChkYXRhYmFzZSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgaW1wbCgpLmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7CisgICAgICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5kYXRhYmFzZUlkSW1wbChk
YXRhYmFzZSkpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNTQsNyArMTU0
LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6c3RvcmFnZUlkKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAKICAgICBTdG9yYWdlKiBzdG9yYWdlID0gSlNTdG9yYWdlOjp0b1dyYXBwZWQoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChzdG9yYWdlKQotICAgICAgICByZXR1
cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbXBsKCkuc3RvcmFnZUlkSW1wbChzdG9yYWdl
KSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5z
dG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCmluZGV4IGQw
N2JlYWNhMTVhNTQ3MmI0NjkwYWFjNDVjMWFkNzU0Y2Y1ZDlhMzkuLjY4N2VjZDFiNWI1NzNmYmJi
MmI1MDk5ZGM3ZWIxZjQ1ODc4OTZhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0N1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSlNWYWx1ZSBKU0NyeXB0bzo6
Z2V0UmFuZG9tVmFsdWVzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmdldFJhbmRvbVZhbHVlcyhhcnJheUJ1ZmZlclZpZXcuZ2V0KCksIGVjKTsKKyAgICB3cmFwcGVk
KCkuZ2V0UmFuZG9tVmFsdWVzKGFycmF5QnVmZmVyVmlldy5nZXQoKSwgZWMpOwogCiAgICAgaWYg
KGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9tLmNwcAppbmRleCBhZDgxZTRk
NDViMWU2MWVhZTE4NzBhYWVjNzNkZTNhZTVkYmM4OWY1Li41ODU5NGJlZjJkYjI5YTJmMDk3NWVj
OTlmZmNhZjg0MDUxZGI5ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0tleUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9LZXlDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIEpTVmFsdWUgSlNDcnlwdG9LZXk6OmFsZ29yaXRobShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0CiB7CiAgICAgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyIGJ1aWxkZXIoJnN0YXRlKTsK
LSAgICBpbXBsKCkuYnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihidWlsZGVyKTsKKyAgICB3cmFw
cGVkKCkuYnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihidWlsZGVyKTsKICAgICByZXR1cm4gYnVp
bGRlci5yZXN1bHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAKaW5kZXggOWZkYjg5YmMyN2Y2OGEyMmEzMmQ5Yzk5
NGJlZjI4ZGMxMjMyOTc5Zi4uYjRhZDA0NjIyY2ZmZGYyODgyNTAzZDU2Mjg5NTMwY2ExOTNjNWIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWly
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBh
aXJDdXN0b20uY3BwCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9p
ZCBKU0NyeXB0b0tleVBhaXI6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwoKS5wdWJsaWNL
ZXkoKSk7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGltcGwoKS5wcml2YXRlS2V5KCkpOwor
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh3cmFwcGVkKCkucHVibGljS2V5KCkpOworICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCh3cmFwcGVkKCkucHJpdmF0ZUtleSgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUV2ZW50Q3VzdG9tLmNwcAppbmRleCBhZjE0OWRhYWYwNTQyNTEyM2ZlODg2OTQ5OWQ1Yjdi
ZWY1ODAzZTVhLi5jNTU2YzllMmU1MDBhNTc1N2I3MmMzMGJkYWY1YzYwYjUxYjBlMDYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBKU1ZhbHVlIEpT
Q3VzdG9tRXZlbnQ6OmRldGFpbChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEN1c3Rv
bUV2ZW50JiBldmVudCA9IGltcGwoKTsKKyAgICBDdXN0b21FdmVudCYgZXZlbnQgPSB3cmFwcGVk
KCk7CiAgICAgCiAgICAgaWYgKGV2ZW50LmRldGFpbCgpLmhhc05vVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IGIyODdjNmI4OTk2MjdiNDE4MDg5OThi
MjY3NmE5MWU1Yjc4MTI1MmEuLjYwYzU3ZjhkM2ExOTNkODJkYzNjNjExNDUxZDQ4ZTYyNzIzM2Jk
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAg
ICAgIGNhbGxUeXBlID0gbV9jdXN0b21SZXNvbHZlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERh
dGEobV9jdXN0b21SZXNvbHZlci5nZXQoKSwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTE0MzEyPiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNl
VVJJIENvbnNvbGUgTWVzc2FnZSBzaG91bGQgaW5jbHVkZSBMaW5lLCBDb2x1bW4sIGFuZCBTb3Vy
Y2VVUkwKLSAgICAgICAgICAgIGlmIChQYWdlQ29uc29sZUNsaWVudCogY29uc29sZSA9IG1fZ2xv
YmFsT2JqZWN0LT5pbXBsKCkuY29uc29sZSgpKQorICAgICAgICAgICAgaWYgKFBhZ2VDb25zb2xl
Q2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxPYmplY3QtPndyYXBwZWQoKS5jb25zb2xlKCkpCiAg
ICAgICAgICAgICAgICAgY29uc29sZS0+YWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3Qg
aGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBtZXRob2QuIikpOwogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAppbmRleCAzMDJjN2E5YTA2NzRhMGY4ZTBkYTFjMWNlYzAzN2E1NGQ2MjQ5Mzgw
Li4yMGVmNjA5MTMxOTA2ZTM4ZjNkMjM3ZTcyZWM5YTI3ZjQzNWQzMTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9u
LCBDYWNoZWRTY3JpcHQqIGNhY2hlZAogCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSk7CiAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9N
V2luZG93Kj4oZ2xvYmFsT2JqZWN0KSkgewotICAgICAgICBpZiAoIXdpbmRvdy0+aW1wbCgpLmlz
Q3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBl
ZCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNTE1LDEyICs1MTUsMTIgQEAgdWludDY0X3QgdG9VSW50NjQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIAog
RE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVy
biBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAg
ICByZXR1cm4gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFw
cGVkKCk7CiB9CiAKIERPTVdpbmRvdyYgZmlyc3RET01XaW5kb3coRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSkt
PmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCkpLT53cmFwcGVkKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1
bWVudChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2Vj
dXJpdHlSZXBvcnRpbmdPcHRpb24gcmVwb3J0aW5nT3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3Rv
bS5jcHAKaW5kZXggMTNmZGI1MmQ2YzI1MzE5YzE5MzhhNzQyOTIyNDIyMDZhY2ZlYzY3OC4uYjA0
OGFmOTEzZDJmYjk2NzE2ZDUxNWFmMzA1ZWJiOTQ2YjY2NzYwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSFRNTEZvcm1FbGVtZW50KiB0b0hU
TUxGb3JtRWxlbWVudE9yTnVsbChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZh
bHVlLmluaGVyaXRzKEpTSFRNTEZvcm1FbGVtZW50OjppbmZvKCkpID8gJmpzQ2FzdDxKU0hUTUxG
b3JtRWxlbWVudCo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSA6IG51bGxwdHI7CisgICAgcmV0
dXJuIHZhbHVlLmluaGVyaXRzKEpTSFRNTEZvcm1FbGVtZW50OjppbmZvKCkpID8gJmpzQ2FzdDxK
U0hUTUxGb3JtRWxlbWVudCo+KGFzT2JqZWN0KHZhbHVlKSktPndyYXBwZWQoKSA6IG51bGxwdHI7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNET01Gb3JtRGF0
YShFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NCw5ICs2NCw5IEBAIEpTVmFsdWUgSlNET01Gb3JtRGF0
YTo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWU7
CiAgICAgICAgICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID49IDMgJiYgIXN0YXRlLmFy
Z3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUg
PSBzdGF0ZS5hcmd1bWVudCgyKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAg
ICAgICAgICAgaW1wbCgpLmFwcGVuZChuYW1lLCBKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSksIGZp
bGVuYW1lKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5hcHBlbmQobmFtZSwgSlNCbG9iOjp0b1dy
YXBwZWQodmFsdWUpLCBmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW1w
bCgpLmFwcGVuZChuYW1lLCB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsK
KyAgICAgICAgICAgIHdyYXBwZWQoKS5hcHBlbmQobmFtZSwgdmFsdWUudG9TdHJpbmcoJnN0YXRl
KS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5
Q3VzdG9tLmNwcAppbmRleCA0MzEyYWUyNzY5NWUyODZmNzc5MmI0MGUzZGQ1Yzc4NmU4MzY5YzAy
Li43NThjYjU4ZDJiMGZjNmQwNWFmYWI1YjE5NmJiYzZhOTczZWJkYjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTU1p
bWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1
dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29s
bGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDBkZDU0NTEyMTdkYzgwOGRkM2U5ZjUyYWJk
MmI0ZmZjZDY0ZjhiM2YuLjRmZjEyNjI5MjdjZGNhZGMyYWEyYTllYmIwNmE0MWQ0MzA4MzA0MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29s
bGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01O
YW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBib29sIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6bmFtZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVl
KQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAo
IWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAppbmRleCAyNjY5ZDgzN2Rm
MjkzNDY1MjM1YTg5NDI1MTQyZWY2YzE3NDk4MzA2Li41M2I0YjQ1NzMyNzNlNTIzNGRiMzY4ZDBi
MDZiNTk1Y2IyOWRjNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBib29sIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAg
ICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAppbmRleCAxYTc1ODZkYmZmYzAzMjNiODExYjU1N2UzOWY1
NThiNzBiY2YwM2U3Li5jY2ZjYTM0OWYyZmRmODc0NGVkYTg4M2EwOTI5YWRlYWM1YjIxMTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3Bw
CkBAIC0yOSw3ICsyOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNET01QbHVn
aW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9
IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCmlu
ZGV4IGZkNDAxYjI5MDVmNjkxZjZkZmZmZGI1ZDg1ZGQ0MjUzNGFkZjI4OWIuLjViZDMzY2IyZTUw
MzgzY2I3M2VmYTdiMjFlZTVjNjFiN2I2ZWFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcApAQCAtMjksNyArMjksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSlNET01TdHJpbmdM
aXN0Ojp0b1dyYXBwZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZS5pbmhlcml0cyhKU0RPTVN0cmluZ0xpc3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biAmanNDYXN0PEpTRE9NU3RyaW5nTGlzdCo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKTsKKyAg
ICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01TdHJpbmdMaXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+
d3JhcHBlZCgpOwogCiAgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcAppbmRleCA5YWY4NDVjMTgyMGI2YTQ0OTE4OTM0ZWUzMTAyMTVlNjhkNzRk
MzU1Li4yMjcxZmQ5YWI5YTdjYWQwZTNhM2I1OGM5YjkwZTM4N2YwODA5NzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBA
IC00MCw3ICs0MCw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgaWYgKHByb3BlcnR5
TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBuYW1lSXNW
YWxpZDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGl0ZW0gPSBpbXBsKCkuaXRlbShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBuYW1lSXNWYWxpZCk7CisgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBpdGVtID0gd3JhcHBlZCgpLml0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgbmFtZUlzVmFsaWQpOwogICAgIGlmIChuYW1lSXNWYWxpZCkgewogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpdGVtKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNTIsNyArNTIsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogewogICAgIEpTRE9NU3Ry
aW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4ob2JqZWN0KTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICB0aGlzT2JqZWN0LT5pbXBsKCkuZ2V0TmFtZXMo
bmFtZXMpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5nZXROYW1lcyhuYW1lcyk7CiAgICAg
c2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsIG5hbWVzW2ldKSk7CkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgSlNET01TdHJp
bmdNYXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVN0
cmluZ01hcCo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKICAgICAg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPmltcGwoKS5kZWxldGVJdGVtKHByb3BlcnR5
TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuZGVsZXRlSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0K
IAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCkKQEAgLTgzLDcgKzgzLDcgQEAgYm9v
bCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1YKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0SXRlbShw
cm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuICFlYzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcAppbmRl
eCBiZGQ0ODc3ODQ5ZWNhN2NjYzkxYmI2ZGE1YmM0M2QxNjYyOGRkZGNlLi41NGY3NWQwYTE5ZTY0
ZTcyNWQ1NGIwOTQzMTA3ZjYwOWUyNTNiZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBAIEpT
VmFsdWUgSlNET01Ub2tlbkxpc3Q6OnRvZ2dsZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIE9wdGlv
bmFsPGJvb2w+IGZvcmNlID0gc3RhdGUuYXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE51bGxv
cHQgOiBPcHRpb25hbDxib29sPihzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4o
JnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4o
aW1wbCgpLnRvZ2dsZSh0b2tlbiwgZm9yY2UsIGVjKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4od3JhcHBlZCgpLnRvZ2dsZSh0b2tlbiwgZm9yY2UsIGVjKSk7CiAKICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGJkZGMyMGNmZTYy
NzZkNTZiY2NjZDk5NzFjNDZiNWZkMjk1ODc4ZWUuLmYxNzY0ZTE3MDQ3YmYzOGMzOWUwMzY2OTg3
NzA1ODk2YmE2MmU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhp
c09iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6
OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgYXNKU0RPTVdpbmRvdyh0aGlzT2Jq
ZWN0KS0+aW1wbCgpKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KGV4ZWMsIGFzSlNET01XaW5kb3codGhpc09iamVjdCktPndyYXBwZWQo
KSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldp
bmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTRE9NV2luZG93QmFzZSkgfTsKQEAgLTcwLDcgKzcwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmc2gKIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hl
bGwqIHNoZWxsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJnNoZWxs
LT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93Q2xv
c2VXYXRjaHBvaW50cygod2luZG93ICYmIHdpbmRvdy0+ZnJhbWUoKSkgPyBJc1dhdGNoZWQgOiBJ
c0ludmFsaWRhdGVkKQotICAgICwgbV9pbXBsKHdpbmRvdykKKyAgICAsIG1fd3JhcHBlZCh3aW5k
b3cpCiAgICAgLCBtX3NoZWxsKHNoZWxsKQogICAgICwgbV9wcml2YXRlRnVuY3Rpb25zKHZtKQog
ewpAQCAtMTMxLDI1ICsxMzEsMjUgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQoKQogewot
ICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50KCkpOworICAgIEFTU0VSVChtX3dyYXBwZWQtPmRv
Y3VtZW50KCkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1i
b2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4
ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV9pbXBs
LT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCku
cHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1
bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogSlNET01XaW5kb3dCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9pbXBsLT5kb2N1bWVudCgpOworICAgIHJldHVybiBtX3dyYXBwZWQtPmRv
Y3VtZW50KCk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjpwcmludEVycm9yTWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CiB7Ci0gICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JG
cmFtZShpbXBsKCkuZnJhbWUoKSwgbWVzc2FnZSk7CisgICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JG
cmFtZSh3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3dC
YXNlOjpzdXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewog
ICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0
IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVj
dC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmlsaW5n
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiBib29sIEpTRE9NV2luZG93QmFzZTo6c3Vw
cG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAg
IGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpT
RE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+
aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0x
OTIsMTYgKzE5MiwxNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0
VG9QcmV2ZW50SW5maW5pdGVSZWN1cnNpb25XaGVuQ2xvc2luZ1BhZwogYm9vbCBKU0RPTVdpbmRv
d0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3Qt
PmltcGwoKS5mcmFtZSgpKTsKLSAgICBQYWdlKiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCktPnBhZ2UoKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkp
OworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgp
OwogICAgIHJldHVybiBzaG91bGRJbnRlcnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vy
c2lvbldoZW5DbG9zaW5nUGFnZShwYWdlKTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9i
amVjdCkKIHsKICAgICBjb25zdCBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNf
Y2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2UqPihvYmplY3QpOwotICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5pbXBsKCkuZnJhbWUoKSk7Ci0gICAgUGFnZSogcGFnZSA9IHRoaXNPYmplY3QtPmltcGwo
KS5mcmFtZSgpLT5wYWdlKCk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFt
ZSgpKTsKKyAgICBQYWdlKiBwYWdlID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnBh
Z2UoKTsKIAogICAgIGlmIChzaG91bGRJbnRlcnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJl
Y3Vyc2lvbldoZW5DbG9zaW5nUGFnZShwYWdlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0y
MTcsNyArMjE3LDcgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlw
dEJlZm9yZVRpbWVvdXQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG8KIFJ1bnRpbWVGbGFncyBKU0RP
TVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBjb25zdCBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2UqPihvYmplY3QpOwotICAgIEZyYW1lKiBmcmFt
ZSA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBSdW50aW1lRmxhZ3MoKTsKICAgICByZXR1cm4gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNjcmlw
dFJ1bnRpbWVGbGFncygpOwpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNl
OjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2ludHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cp
CiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJl
c29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVs
ZUtleSkKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxK
U0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmRvY3VtZW50KCkpCisgICAgaWYgKFJlZlB0
cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+cmVzb2x2ZShnbG9iYWxP
YmplY3QsIGV4ZWMsIG1vZHVsZU5hbWUsIGltcG9ydGVyTW9kdWxlS2V5KTsKICAgICBKU0M6OkpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJy
ZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTMzNCw3ICszMzQsNyBAQCBKU0M6
OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUo
SlNDOjpKU0dsb2JhbE9iamVjdAogSlNDOjpKU0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dC
YXNlOjptb2R1bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5KQogewogICAgIEpT
RE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+
KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlz
T2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1
bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
ZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5mZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVs
ZUtleSk7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpT
Qzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywganNVbmRlZmluZWQoKSk7CkBAIC0z
NDMsNyArMzQzLDcgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjpt
b2R1bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KgogSlNDOjpKU1ZhbHVlIEpTRE9N
V2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwg
SlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCkKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNP
YmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwotICAg
IGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmRvY3Vt
ZW50KCkpCisgICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2Fk
ZXIoKS0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVLZXksIG1vZHVsZVJlY29y
ZCk7CiAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggMTA3NjQwYzE3NjhmYjdkODJlNzk0
YjEwNmYwMjNiMjkxNDM4OWY5Zi4uZDY5OWE1YWU1N2I3ZjcyMmVhYmE0ODgyNzA2YzFhNGUxMDFm
M2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwogCi0gICAgICAgIERPTVdpbmRvdyYgaW1wbCgpIGNv
bnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAgICAgICAgRE9NV2luZG93JiB3cmFwcGVkKCkgY29u
c3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1
c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2luZG93IGZyb20gdGhlIEpTRE9NV2luZG93U2hlbGwu
CkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIEpT
Qzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAgICAgICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOwogCi0gICAgICAgIFJlZlB0
cjxET01XaW5kb3c+IG1faW1wbDsKKyAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVk
OwogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBtX3NoZWxsOwogCiAgICAgICAgIEpTQnVpbHRp
bkludGVybmFsRnVuY3Rpb25zIG1fcHJpdmF0ZUZ1bmN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAwYmMzMzc1NGFhMWZi
YzVhMzY5MzE3MzRmN2QxNTllNDI0OTA0NDZlLi4wMGU2MmE0MmI2NDliZjc4NTYzZDYwODhlYTM4
ZGY4MTA1OTYyMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCkBAIC02MiwyMSArNjIsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIEpTRE9NV2luZG93Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCkpCisgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpKQogICAgICAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3QoZnJhbWUpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2hpbGRGcmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1wbCgpLmZy
YW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT53cmFw
cGVkKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
IHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihz
bG90QmFzZSk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iai0+aW1wbCgpLmZyYW1l
KCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iai0+d3JhcHBl
ZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAKLSAgICBBU1NFUlQoQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmotPmltcGwoKSkpOworICAg
IEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgdGhpc09iai0+d3JhcHBlZCgpKSk7CiAgICAgQVNTRVJUKGlzPEhUTUxEb2N1bWVudD4oZG9j
dW1lbnQpKTsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CkBAIC05Niw5ICs5Niw5IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBuYW1lZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dXZWJLaXQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTRE9NV2luZG93KiBjYXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyhKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBj
YXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgY2FzdGVkVGhpcy0+aW1wbCgpLndlYmtpdE5hbWVzcGFj
ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkp
KTsKIH0KICNlbmRpZgogCkBAIC0xMTEsOSArMTExLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IGpzRE9NV2luZG93SW5kZXhlZERCKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LAogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuaW5kZXhlZERCRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhp
cy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4
ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U6OmluZGV4ZWREQigmaW1wbCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xMjksNyArMTI5LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHkKICAgICAvLyBXZSBkb24ndCB3YW50IGFueSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3Nl
IiBhbmQgImNsb3NlZCIgb24gYSBmcmFtZWxlc3Mgd2luZG93IChpLmUuIG9uZSB3aG9zZSBwYWdl
IGdvdCBjbG9zZWQsCiAgICAgLy8gb3Igd2hvc2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAv
LyBGSVhNRTogVGhpcyBkb2Vzbid0IGZ1bGx5IG1hdGNoIEZpcmVmb3gsIHdoaWNoIGFsbG93cyBh
dCBsZWFzdCB0b1N0cmluZyBpbiBhZGRpdGlvbiB0byB0aG9zZS4KLSAgICBpZiAoIXRoaXNPYmpl
Y3QtPmltcGwoKS5mcmFtZSgpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJh
bWUoKSkgewogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgaXMgc2FmZSBmb3IgY3Jvc3Mt
ZG9tYWluIGFuZCBzYW1lIGRvbWFpbiB1c2UuCiAgICAgICAgIC8vIEl0IGlnbm9yZXMgYW55IGN1
c3RvbSBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQgYmUgc2V0IG9uIHRoZSBET01XaW5kb3cgKGluY2x1
ZGluZyBhIGN1c3RvbSBwcm90b3R5cGUpLgogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZWQpIHsKQEAgLTE0NSwxNCArMTQ1LDE1IEBAIGJvb2wg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgIC8vIG5vdCBhbGxvd2VkLiAKICAgICAgICAgc2xv
dC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHNsb3Quc2V0V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hw
b2ludHMpOworICAgIH0KKworICAgIHNsb3Quc2V0V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LT5t
X3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMpOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3Ig
Y3Jvc3MtZG9tYWluIGFjY2VzcyBoZXJlIHdpdGhvdXQgcHJpbnRpbmcgdGhlIGdlbmVyaWMgd2Fy
bmluZyBtZXNzYWdlCiAgICAgLy8gYmVjYXVzZSB3ZSBhbHdheXMgYWxsb3cgYWNjZXNzIHRvIHNv
bWUgZnVuY3Rpb24sIGp1c3QgZGlmZmVyZW50IG9uZXMgZGVwZW5kaW5nIHdoZXRoZXIgYWNjZXNz
CiAgICAgLy8gaXMgYWxsb3dlZC4KICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGJvb2wg
YWxsb3dzQWNjZXNzID0gc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2Jq
ZWN0LT5pbXBsKCksIGVycm9yTWVzc2FnZSk7CisgICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJy
b3JNZXNzYWdlKTsKICAgICAKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxvb2tp
bmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcywgYnV0IGlnbm9yZSBvdmVycmlkZXMgY29t
cGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMgY3Jvc3MtZG9tYWluIGFjY2Vzcy4KQEAgLTE3Niw3
ICsxNzcsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgbm9uQ2FjaGlu
Z1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2luZG93UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVz
c2FnZSwgMj4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc2hvd01vZGFsRGlhbG9nKSB7Ci0gICAgICAg
IGlmICghRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2codGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCkpKSB7CisgICAgICAgIGlmICghRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2codGhp
c09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKSB7CiAgICAgICAgICAgICBzbG90LnNldFVuZGVm
aW5lZCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIwNyw3ICsy
MDgsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIH0KIAogI2lmIEVOQUJMRShVU0VS
X01FU1NBR0VfSEFORExFUlMpCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkud2Via2l0ICYmIHRoaXNPYmplY3QtPmltcGwoKS5zaG91bGRIYXZlV2ViS2l0TmFt
ZXNwYWNlRm9yV29ybGQodGhpc09iamVjdC0+d29ybGQoKSkpIHsKKyAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS53ZWJraXQgJiYgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgp
KSkgewogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBhbGxvd3NB
Y2Nlc3MgPyBEb250RGVsZXRlIHwgUmVhZE9ubHkgOiBSZWFkT25seSB8IERvbnREZWxldGUgfCBE
b250RW51bSwganNET01XaW5kb3dXZWJLaXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC0yMzcsNyArMjM4LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAvLyBuYW1p
bmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhh
dAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRo
ZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNP
YmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+d3JhcHBl
ZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBS
ZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI0Nyw5ICsyNDgsOSBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eQogCiAgICAgLy8gYWxsb3cgd2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgj
NTY5ODMpCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpOwotICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+aW1w
bCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkpIHsKKyAgICBpZiAoaW5kZXgg
JiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCku
c2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sCi0gICAgICAgICAgICB0b0pTKGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgudmFs
dWUoKSktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgu
dmFsdWUoKSktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMjYwLDcgKzI2MSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAg
ICAgfQogCiAgICAgLy8gQWxsb3cgc2hvcnRjdXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBk
b2N1bWVudC5pbWFnZXMuSW1hZ2UxCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVj
dC0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhU
TUxEb2N1bWVudD4oKmRvY3VtZW50KSkgewogICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9t
aWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwogICAgICAgICBpZiAo
YXRvbWljUHJvcGVydHlOYW1lICYmIGRvd25jYXN0PEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KS5o
YXNXaW5kb3dOYW1lZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpIHsKQEAgLTI3Niw3ICsyNzcs
NyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAKLSAgICBpZiAoIXRoaXNP
YmplY3QtPmltcGwoKS5mcmFtZSgpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBtZXNzYWdlIGhl
cmUgdGhhdCBleHBsYWlucyB3aHkgdGhlIHByb3BlcnR5IGFjY2Vzcy9mdW5jdGlvbiBjYWxsIHdh
cwogICAgICAgICAvLyBub3QgYWxsb3dlZC4gCiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7
CkBAIC0yODcsNyArMjg4LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKICAgICAvLyBiZWNh
dXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8gc29tZSBmdW5jdGlvbiwganVzdCBkaWZmZXJl
bnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nlc3MKICAgICAvLyBpcyBhbGxvd2VkLgogICAg
IFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxv
d0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSwgZXJyb3JNZXNzYWdl
KTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
ZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gTG9v
ayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29raW5nIGF0IGFueSBvZiBvdXIgb3duIHByb3BlcnRp
ZXMsIGJ1dCBpZ25vcmUgb3ZlcnJpZGVzIGNvbXBsZXRlbHkKICAgICAvLyBpZiB0aGlzIGlzIGNy
b3NzLWRvbWFpbiBhY2Nlc3MuCkBAIC0zMDEsNyArMzAyLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIHUKICAgICAvLyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2lu
ZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ug
d2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3
YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hp
bGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAo
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1
c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgY2hpbGRG
cmFtZUdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMyMyw5ICszMjQs
OSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUg
Y29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAogICAgIC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJl
bnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5m
cmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGRDb3VudCgpKSB7CisgICAgaWYgKGluZGV4IDwgdGhp
c09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkpIHsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUg
fCBEb250RW51bSwKLSAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
KSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgp
LT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMzNiw3ICszMzcsNyBAQCBib29sIEpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgdQogICAgIH0KIAogICAgIC8vIEFsbG93IHNob3J0Y3V0cyBsaWtlICdJ
bWFnZTEnIGluc3RlYWQgb2YgZG9jdW1lbnQuaW1hZ2VzLkltYWdlMQotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT5kb2N1bWVu
dCgpOwogICAgIGlmIChpczxIVE1MRG9jdW1lbnQ+KCpkb2N1bWVudCkpIHsKICAgICAgICAgLy8g
VGhpcyBwcm9wZXJ0eU5hbWUgaXMgZ2VuZXJhdGVkIGJ5IElkZW50aWZpZXI6OmZyb20uCiAgICAg
ICAgIC8vIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIElkZW50aWZpZXIgZnJvbSBTdHJpbmcgYW5k
IGFsd2F5cyByZXR1cm5zIHRoZSBub24tc3ltYm9sIElkZW50aWZpZXIuCkBAIC0zNTQsMTIgKzM1
NSwxMiBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKLSAgICBpZiAoIXRoaXNP
YmplY3QtPmltcGwoKS5mcmFtZSgpKQorICAgIGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgpLmZy
YW1lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE9wdGltaXphdGlvbjogYWNjZXNzIEph
dmFTY3JpcHQgZ2xvYmFsIHZhcmlhYmxlcyBkaXJlY3RseSBiZWZvcmUgaW52b2x2aW5nIHRoZSBE
T00uCiAgICAgaWYgKHRoaXNPYmplY3QtPkpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZv
cldyaXRlKGV4ZWMsIHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkp
KQorICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzY3LDI2ICszNjgsMjYgQEAgdm9pZCBKU0RPTVdp
bmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLAogICAgIGlmIChsb29rdXBQdXQoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2Jq
ZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCBzbG90KSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmIChCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBl
ZCgpKSkKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KGNlbGwpOwotICAgIGlmICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkp
CisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBpbmRleCk7CiAKICAgICAvLyBPcHRpbWl6YXRpb246IGFjY2VzcyBKYXZhU2NyaXB0IGds
b2JhbCB2YXJpYWJsZXMgZGlyZWN0bHkgYmVmb3JlIGludm9sdmluZyB0aGUgRE9NLgogICAgIGlm
ICh0aGlzT2JqZWN0LT5KU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShleGVj
LCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICAgICAg
aWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6OnB1dEJ5
SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlm
IChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhp
c09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0
LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIApAQCAtMzk0LDcgKzM5NSw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0
aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2Jq
ZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTQwMyw3ICs0MDQsNyBAQCBib29sIEpTRE9NV2luZG93
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5k
b3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJh
bWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRo
aXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
QmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiB9CkBAIC00MTIsNyArNDEzLDcgQEAgdWludDMyX3QgSlNET01XaW5kb3c6OmdldEVudW1l
cmFibGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEpT
RE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAg
ICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhl
IHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+
d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIEJhc2U6OmdldEVudW1l
cmFibGVMZW5ndGgoZXhlYywgdGhpc09iamVjdCk7CiB9CkBAIC00MjEsNyArNDIyLDcgQEAgdm9p
ZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFAKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93
IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2Jq
ZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtNDMwLDcgKzQzMSw3IEBAIHZvaWQgSlNET01X
aW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNE
T01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVt
ZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1w
bCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm47CiAgICAg
QmFzZTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiB9CkBAIC00MzksNyArNDQwLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmEKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+
KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkg
ZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMs
IHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpA
QCAtNDQ4LDcgKzQ0OSw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0CiB7CiAgICAgSlNET01X
aW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8v
IE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2Ft
ZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkpKQogICAgICAgICByZXR1cm47CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAgLTQ1Nyw3ICs0NTgs
NyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBv
YmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLAogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IGRl
ZmluaW5nIHByb3BlcnRpZXMgaW4gdGhpcyB3YXkgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdp
biwgYXMgaXQgYWxsb3dzIHNldHRlcnMgdG8gYmUgaW50cm9kdWNlZC4KLSAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0
LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
RE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIERvbid0IGFsbG93IHNoYWRvd2luZyBsb2NhdGlvbiB1c2luZyBhY2Nl
c3NvciBwcm9wZXJ0aWVzLgpAQCAtNDc2LDcgKzQ3Nyw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNl
dExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgLy8gYSBwcm9w
ZXJ0eSBuYW1lZCAibG9jYXRpb24iIGluc3RlYWQgb2YgcGVyZm9ybWluZyBhIG5hdmlnYXRpb24g
KDxyZGFyOi8vcHJvYmxlbS81Njg4MDM5PikuCiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9
IGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGFjdGl2ZUZy
YW1lLT5zZXR0aW5ncygpLnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkg
JiYgIWFjdGl2ZUZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coJnN0YXRlLCBpbXBsKCkp
KQorICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdygmc3RhdGUsIHdyYXBwZWQoKSkpCiAgICAgICAgICAgICAgICAgcHV0RGlyZWN0KHN0
YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibG9jYXRpb24iKSwgdmFs
dWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00ODcsNyArNDg4LDcgQEAg
dm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSBpbXBsKCkubG9jYXRpb24oKSkKKyAgICBpZiAo
TG9jYXRpb24qIGxvY2F0aW9uID0gd3JhcHBlZCgpLmxvY2F0aW9uKCkpCiAgICAgICAgIGxvY2F0
aW9uLT5zZXRIcmVmKGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLCBmaXJzdERPTVdpbmRvdygmc3Rh
dGUpLCBsb2NhdGlvblN0cmluZyk7CiB9CiAKQEAgLTUzMCw3ICs1MzEsNyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxET01X
aW5kb3c+IG9wZW5lZFdpbmRvdyA9IGltcGwoKS5vcGVuKHVybFN0cmluZywgZnJhbWVOYW1lLCB3
aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2lu
ZG93KCZzdGF0ZSkpOworICAgIFJlZlB0cjxET01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IHdyYXBw
ZWQoKS5vcGVuKHVybFN0cmluZywgZnJhbWVOYW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0
aXZlRE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSkpOwogICAgIGlmICgh
b3BlbmVkV2luZG93KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4g
dG9KUygmc3RhdGUsIG9wZW5lZFdpbmRvdy5nZXQoKSk7CkBAIC01ODUsNyArNTg2LDcgQEAgSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAg
ICBEaWFsb2dIYW5kbGVyIGhhbmRsZXIoc3RhdGUpOwogCi0gICAgaW1wbCgpLnNob3dNb2RhbERp
YWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0
YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSwgWyZoYW5kbGVyXShET01XaW5kb3cmIGRpYWxv
ZykgeworICAgIHdyYXBwZWQoKS5zaG93TW9kYWxEaWFsb2codXJsU3RyaW5nLCBkaWFsb2dGZWF0
dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0
ZSksIFsmaGFuZGxlcl0oRE9NV2luZG93JiBkaWFsb2cpIHsKICAgICAgICAgaGFuZGxlci5kaWFs
b2dDcmVhdGVkKGRpYWxvZyk7CiAgICAgfSk7CiAKQEAgLTYzNSwxMiArNjM2LDEyIEBAIHN0YXRp
YyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdpbmRvdyYgaW1wbCwgRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoaW1wbCgpLCBzdGF0ZSk7CisgICAg
cmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHdyYXBwZWQoKSwgc3RhdGUpOwogfQogCiBKU1ZhbHVl
IEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBpbXBsKCkuZG9jdW1lbnQo
KSA/IGltcGwoKS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7
CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB3cmFw
cGVkKCkuZG9jdW1lbnQoKSA/IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4g
YWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+
d29ybGQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNjUxLDcgKzY1Miw3IEBA
IEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBp
bnQgZGVsYXkgPSBzdGF0ZS5hcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQgcmVzdWx0ID0gaW1wbCgpLnNldFRpbWVvdXQoV1RG
Ojptb3ZlKGFjdGlvbiksIGRlbGF5LCBlYyk7CisgICAgaW50IHJlc3VsdCA9IHdyYXBwZWQoKS5z
ZXRUaW1lb3V0KFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwpAQCAtNjU5
LDcgKzY2MCw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9
IGltcGwoKS5kb2N1bWVudCgpID8gaW1wbCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpIDogbnVsbHB0cjsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1
cml0eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCkt
PmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUs
IGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBA
IC02NjksNyArNjcwLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0
YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IGltcGwoKS5zZXRJbnRlcnZhbChXVEY6Om1v
dmUoYWN0aW9uKSwgZGVsYXksIGVjKTsKKyAgICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldElu
dGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwpAQCAtNjc3LDcg
KzY3OCw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIApAQCAtNjg1LDEzICs2ODYsMTMgQEAgSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmICghbGlzdGVu
ZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBs
KCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50
b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChs
aXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSksIHN0YXRlLmFy
Z3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKKyAgICB3cmFwcGVkKCkuYWRkRXZlbnRMaXN0
ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygm
c3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMs
IGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9v
bGVhbigmc3RhdGUpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBw
ZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogCkBAIC02OTksNyArNzAwLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCkucmVtb3ZlRXZl
bnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0
cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciks
IHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSkucHRyKCksIHN0YXRlLmFyZ3Vt
ZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKKyAgICB3cmFwcGVkKCkucmVtb3ZlRXZlbnRMaXN0
ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygm
c3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMs
IGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSkucHRyKCksIHN0YXRlLmFyZ3VtZW50KDIp
LnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAt
NzA5LDkgKzcxMCw5IEBAIERPTVdpbmRvdyogSlNET01XaW5kb3c6OnRvV3JhcHBlZChKU1ZhbHVl
IHZhbHVlKQogICAgICAgICByZXR1cm4gMDsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTRE9NV2luZG93OjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCktPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpLT53cmFwcGVkKCk7
CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KG9iamVjdCktPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KG9iamVjdCktPndyYXBw
ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA1NGNiNWU1NDA0MjAxNTA1ZDVkYTdlYTQ3ZTc0
ZmEwYzJlZjBlMDY0Li4xMTIwNjY4NTIyMjI5ZjdkMTZkZWY4NjlkZjkxNzk2N2Y1MWNhNzA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApA
QCAtNzMsNyArNzMsNyBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVm
UHRyPERPTVdpbmRvdz4gZG9tV2luZG93KQogewogICAgIC8vIFJlcGxhY2luZyBKU0RPTVdpbmRv
dyB2aWEgdGVsbGluZyBKU0RPTVdpbmRvd1NoZWxsIHRvIHVzZSB0aGUgc2FtZSBET01XaW5kb3cg
aXQgYWxyZWFkeSB1c2VzIG1ha2VzIG5vIHNlbnNlLAogICAgIC8vIHNvIHdlJ2QgYmV0dGVyIG5l
dmVyIHRyeSB0by4KLSAgICBBU1NFUlQoIXdpbmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAhPSAm
d2luZG93KCktPmltcGwoKSk7CisgICAgQVNTRVJUKCF3aW5kb3coKSB8fCBkb21XaW5kb3cuZ2V0
KCkgIT0gJndpbmRvdygpLT53cmFwcGVkKCkpOwogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0
aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAgICAv
LyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9i
amVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHBy
b3RvdHlwZS4pCkBAIC05NCw5ICs5NCw5IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2lu
ZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiAvLyBKU0RPTVdpbmRvdyBtZXRo
b2RzCiAvLyAtLS0tCiAKLURPTVdpbmRvdyYgSlNET01XaW5kb3dTaGVsbDo6aW1wbCgpIGNvbnN0
CitET01XaW5kb3cmIEpTRE9NV2luZG93U2hlbGw6OndyYXBwZWQoKSBjb25zdAogewotICAgIHJl
dHVybiB3aW5kb3coKS0+aW1wbCgpOworICAgIHJldHVybiB3aW5kb3coKS0+d3JhcHBlZCgpOwog
fQogCiAvLyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmgKaW5kZXggY2VkYjU5YzczNTJhY2RmMTBhMzE3NmEwN2IyMTgzYWU3NTJjNjhhOC4uMDFm
MDQ4ZDY3YTRmNWI4ZDBmMWVlOTY5ZDVkMjc1NDVmMTI3NDZkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgICAgIERPTVdp
bmRvdyYgaW1wbCgpIGNvbnN0OworICAgICAgICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdDsK
IAogICAgICAgICBzdGF0aWMgSlNET01XaW5kb3dTaGVsbCogY3JlYXRlKEpTQzo6Vk0mIHZtLCBQ
YXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IGU0OTQxNWUyYmM0MjQ1ODBjMmJjOTAwYmQzMjNmNjdi
MDgwOTUyMzUuLjI2MjZmNThhZWVhOTAyNDUxMDBiZDJkYjlhZTEwN2RlMGMzM2RlZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC01MiwxNiArNTIsMTUg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgSW1wbGVtZW50YXRpb25DbGFzcz4gY2xhc3MgSlNET01XcmFw
cGVyIDogcHVibGljIEpTRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NT2Jq
ZWN0IEJhc2U7CiAKLSAgICBJbXBsZW1lbnRhdGlvbkNsYXNzJiBpbXBsKCkgY29uc3QgeyByZXR1
cm4gKm1faW1wbDsgfQotICAgIH5KU0RPTVdyYXBwZXIoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBs
LCBudWxscHRyKS0+ZGVyZWYoKTsgfQorICAgIEltcGxlbWVudGF0aW9uQ2xhc3MmIHdyYXBwZWQo
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEltcGxlbWVudGF0aW9uQ2xhc3MmPihtX3dyYXBw
ZWQuZ2V0KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8SW1w
bGVtZW50YXRpb25DbGFzcz4mJiBpbXBsKQogICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpCi0gICAgICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkgeyB9CisgICAgICAg
ICwgbV93cmFwcGVkKFdURjo6bW92ZShpbXBsKSkgeyB9CiAKIHByaXZhdGU6Ci0gICAgSW1wbGVt
ZW50YXRpb25DbGFzcyogbV9pbXBsOworICAgIFJlZjxJbXBsZW1lbnRhdGlvbkNsYXNzPiBtX3dy
YXBwZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAppbmRleCA3YWIzMjQ1ZDBiYmMyYmQ3ZGY1
N2YyYjc1OWIzNGIwNDgwZjMzNWExLi5iZTUzZWJlZDk1MTQxYmY2ODU2MTk3NWM0MTY3YWU1MmMw
MWUyZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3Rv
bS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxF
KERBVEFDVUVfVkFMVUUpCiBKU1ZhbHVlIEpTRGF0YUN1ZTo6dmFsdWUoRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1wbCgpLnZhbHVlKCZzdGF0ZSk7CisgICAgcmV0dXJu
IHdyYXBwZWQoKS52YWx1ZSgmc3RhdGUpOwogfQogCiB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpbXBsKCkuc2V0VmFsdWUo
JnN0YXRlLCB2YWx1ZSk7CisgICAgd3JhcHBlZCgpLnNldFZhbHVlKCZzdGF0ZSwgdmFsdWUpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0
YVRyYW5zZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRy
YW5zZmVyQ3VzdG9tLmNwcAppbmRleCAwYjBmYTkwNzYwMTY1NjcxMzFjYjhkNzAzM2M5Yzg2MThj
MGExZGU4Li5kZmM4ZDQ0Y2Y2NmQ1ZGUyZWQ5MmQyZWNkYmExZjM2NTY2MjhlNzQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0RhdGFU
cmFuc2Zlcjo6dHlwZXMoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlcyA9IGltcGwoKS50eXBlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0g
d3JhcHBlZCgpLnR5cGVzKCk7CiAgICAgcmV0dXJuIHR5cGVzLmlzRW1wdHkoKSA/IGpzTnVsbCgp
IDoganNBcnJheSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB0eXBlcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKaW5kZXggODM4OWQ2MWU1ODMxMzg1NGY1NTYzM2MyYzkz
ZDUxMTczMGMzZWEwZS4uMGU5Yjk3NjdmYzMyOWNkOWVjNTYzYmQ5YmU0YzFmZWZmMTY4NTk5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZTo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmltcGwoKSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RN
ZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2
ZW50Q3VzdG9tLmNwcAppbmRleCA3ZDgwZjZmMWI4ZmVhMWQwYTc3ZWRmODg4NmIzZWQzMzBmNjZi
ZjAwLi43Mzc2MmNhYTEzYzU0ZmU1Y2ZiOTYzNzgwOTE5MGY0OGM2Njg5ZTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUm90YXRp
b25SYXRlT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSoKIAogSlNW
YWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKIHsKLSAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmlj
ZU1vdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9u
RGF0YSgpLT5hY2NlbGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJl
dHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmplY3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+YWNj
ZWxlcmF0aW9uKCksIHN0YXRlKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBKU1ZhbHVlIEpTRGV2aWNl
TW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1Zh
bHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1w
bCgpOworICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFp
bXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4gY3JlYXRlQWNjZWxlcmF0aW9uT2Jq
ZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHko
KSwgc3RhdGUpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVu
dDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eShFeGVjU3RhdGUmIHN0YXRlKSBjb25zCiAK
IEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6cm90YXRpb25SYXRlKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7Ci0gICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBE
ZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAgIGlmICghaW1wLmRldmljZU1v
dGlvbkRhdGEoKS0+cm90YXRpb25SYXRlKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAg
ICByZXR1cm4gY3JlYXRlUm90YXRpb25SYXRlT2JqZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCkt
PnJvdGF0aW9uUmF0ZSgpLCBzdGF0ZSk7CkBAIC0xNjAsNyArMTYwLDcgQEAgSlNWYWx1ZSBKU0Rl
dmljZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAog
SlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjppbnRlcnZhbChFeGVjU3RhdGUmKSBjb25zdAog
ewotICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9u
RXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCkt
PmNhblByb3ZpZGVJbnRlcnZhbCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKGltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmludGVydmFsKCkpOwpAQCAtMTg5
LDcgKzE4OSw3IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlv
bkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgYm9vbCBpbnRlcnZhbFByb3ZpZGVkID0gIXN0
YXRlLmFyZ3VtZW50KDYpLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91YmxlIGludGVydmFs
ID0gc3RhdGUuYXJndW1lbnQoNikudG9OdW1iZXIoJnN0YXRlKTsKICAgICBSZWZQdHI8RGV2aWNl
TW90aW9uRGF0YT4gZGV2aWNlTW90aW9uRGF0YSA9IERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZShh
Y2NlbGVyYXRpb24sIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIHJvdGF0aW9uUmF0ZSwg
aW50ZXJ2YWxQcm92aWRlZCwgaW50ZXJ2YWwpOwotICAgIGltcGwoKS5pbml0RGV2aWNlTW90aW9u
RXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSwgZGV2aWNlTW90aW9uRGF0YS5nZXQoKSk7
CisgICAgd3JhcHBlZCgpLmluaXREZXZpY2VNb3Rpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5j
ZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdldCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggMTEyNzA1MmJjNjA1ZTdhY2Rm
NmQ1ZGE2NmRjNDI4ZjhhOGJmOGVjNi4uNTZhYmQ5YjI0MTgwMjJlMTZlMzk4NGRjMzc1MGNiNTUy
MjZmNzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFs
cGhhKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1w
ID0gaW1wbCgpOworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsK
ICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQWxwaGEoKSkKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+
YWxwaGEoKSk7CkBAIC00OCw3ICs0OCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50OjphbHBoYShFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6YmV0YShFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERldmljZU9yaWVudGF0aW9u
RXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3
cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50YXRpb24oKS0+Y2FuUHJvdmlkZUJldGEoKSkK
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50
YXRpb24oKS0+YmV0YSgpKTsKQEAgLTU2LDcgKzU2LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OmJldGEoRXhlY1N0YXRlJikgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU9y
aWVudGF0aW9uRXZlbnQ6OmdhbW1hKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQm
IGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRl
R2FtbWEoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihp
bXAub3JpZW50YXRpb24oKS0+Z2FtbWEoKSk7CkBAIC02NSw3ICs2NSw3IEBAIEpTVmFsdWUgSlNE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYShFeGVjU3RhdGUmKSBjb25zdAogI2lmIFBMQVRG
T1JNKElPUykKIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNz
SGVhZGluZyhFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQm
IGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKCFpbXAub3JpZW50YXRpb24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5n
KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9y
aWVudGF0aW9uKCktPmNvbXBhc3NIZWFkaW5nKCkpOwpAQCAtNzMsNyArNzMsNyBAQCBKU1ZhbHVl
IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0hlYWRpbmcoRXhlY1N0YXRl
JikgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBh
c3NBY2N1cmFjeShFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZl
bnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50YXRpb24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NBY2N1
cmFjeSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGlt
cC5vcmllbnRhdGlvbigpLT5jb21wYXNzQWNjdXJhY3koKSk7CkBAIC04Myw3ICs4Myw3IEBAIEpT
VmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzQWNjdXJhY3koRXhl
Y1N0YXRlJikgY29uc3QKICNpZiAhUExBVEZPUk0oSU9TKQogSlNWYWx1ZSBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OmFic29sdXRlKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQm
IGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRl
QWJzb2x1dGUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBqc0Jvb2xl
YW4oaW1wLm9yaWVudGF0aW9uKCktPmFic29sdXRlKCkpOwpAQCAtMTE0LDcgKzExNCw3IEBAIEpT
VmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVu
dChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGJvb2wgYWJzb2x1dGUgPSBzdGF0ZS5hcmd1bWVudCg2
KS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBv
cmllbnRhdGlvbiA9IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGFscGhhUHJvdmlkZWQs
IGFscGhhLCBiZXRhUHJvdmlkZWQsIGJldGEsIGdhbW1hUHJvdmlkZWQsIGdhbW1hLCBhYnNvbHV0
ZVByb3ZpZGVkLCBhYnNvbHV0ZSk7CiAjZW5kaWYKLSAgICBpbXBsKCkuaW5pdERldmljZU9yaWVu
dGF0aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSwgb3JpZW50YXRpb24uZ2V0KCkp
OworICAgIHdyYXBwZWQoKS5pbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCh0eXBlLCBidWJibGVz
LCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHAKaW5kZXggZWMwYjljMmJhMzBlODYwZjZlMmJhOTgwMTcwZDhmNzAyYjQ0NTJkNy4uMDk0
Y2UzZTMyMmRiMGQ3MGIyMGE4ZGJhMzBlNGIxMjM1OWM5ODQ3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRG9jdQogSlNWYWx1ZSBKU0RvY3VtZW50OjpwcmVwZW5kKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgp
LnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMTIs
NyArMTEyLDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUp
CiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCmluZGV4IGMzNTJkNWRiOTdiYmNkZTBj
NmNmYzk2MWRiYWVhNDgxY2I3MjE1YzUuLjdkYTM4NDdjMTc2ZjA2NzBjN2NjZDU5MTJmMzY5MDJm
ZDljMDQ4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1l
bnRGcmFnbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0
YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5wcmVwZW5kKHRv
Tm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRv
Tm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNDYsNyArNDYsNyBAQCBK
U1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogSlNW
YWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdW
ZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAppbmRleCA4MzMzODcyMDFiYmY2MDJiNTU1MzYw
OGJlYjU1MTA2MjljZWNiOTVhLi5hOTNkNjcxNzNkOTQyNTU2YjBmMjI2MmNiNDA4MTkyMjBiM2Zl
OWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlw
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5
cGVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFs
dWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3Rvcihz
dGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50VHlw
ZTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjphZnRl
cihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVk
KCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3
ICs1NCw3IEBAIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUp
CiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5yZXBsYWNlV2l0aCh0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkucmVwbGFjZVdpdGgo
dG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBmZWZkZTM1N2E3ZGNiNmVi
N2M1ZDZmNjYxZTdiNTdmNWMwMGU5NDMxLi4xZDY1MjQyZjE2MWE4YmU2NjJiZjczNmZmODJkNWY4
YTY2ZTE5OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1l
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKIEpTVmFs
dWUgSlNFbGVtZW50OjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpbXBsKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRl
KSwgZWMpOworICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CkBAIC03OSw3ICs3OSw3IEBAIEpTVmFsdWUgSlNFbGVtZW50OjpiZWZvcmUo
RXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNFbGVtZW50OjphZnRlcihFeGVjU3RhdGUmIHN0
YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2Rl
T3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC04OCw3ICs4OCw3IEBAIEpTVmFs
dWUgSlNFbGVtZW50OjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0VsZW1lbnQ6
OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTk3LDcgKzk3LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxh
Y2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVuZChFeGVj
U3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5w
cmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5w
cmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA2LDcg
KzEwNiw3IEBAIEpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3Rvcihz
dGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcAppbmRleCA1MWU5ZjBkOTMwZjZjOWY2OThmZDIwYWNhOWI4MDFhNjg3YWY4N2UwLi42
MDk5NTQxNjk1NmZiZGUxNTE4YTU5YWRkYzBhNWY0MDY2OTVmNWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNFdmVudDo6Y2xpcGJvYXJkRGF0YShFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiBpbXBsKCkuaXNDbGlwYm9hcmRFdmVudCgp
ID8gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuY2xpcGJvYXJkRGF0YSgpKSA6
IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHdyYXBwZWQoKS5pc0NsaXBib2FyZEV2ZW50KCkg
PyB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5jbGlwYm9hcmREYXRhKCkp
IDoganNVbmRlZmluZWQoKTsKIH0KIAogI2RlZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFD
RShpbnRlcmZhY2VOYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcAppbmRleCAyODBjYTEyZGViZDBmMDBmODVlYWIzMGM5OGNkYjM3OGVkZjM3
MGNiLi44M2VjYTk0YTQwN2UzYTEyOTljYWJmNzI5ODgyNjQ3Y2VmNjg1Zjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTkxLDEwICs5
MSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0g
anNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKCF3aW5kb3ct
PmltcGwoKS5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKKyAgICAgICAgaWYgKCF3aW5k
b3ctPndyYXBwZWQoKS5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhl
ciBjb250ZXh0cz8KLSAgICAgICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0ID0gd2luZG93LT5p
bXBsKCkuZnJhbWUoKS0+c2NyaXB0KCk7CisgICAgICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlw
dCA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCktPnNjcmlwdCgpOwogICAgICAgICBpZiAoIXNj
cmlwdC5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0Lmlz
UGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRleCBjN2M3NDUwNWE2
YTFmYWVmMGNjN2RhOWIyYzY2NTMyNGUyZDRmNzljLi5lOGVhZDFjMWQ0MmYwZGRmZmVlOTY2ZTE4
MjBlZDAyNTA4ODJmNGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTYsNyArNTYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdl
dCogdGFyZwogCiAjZGVmaW5lIFRSWV9UT19VTldSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNl
TmFtZSkgXAogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKUyMjaW50ZXJmYWNlTmFtZTo6aW5mbygp
KSkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gJmpzQ2FzdDxKUyMjaW50
ZXJmYWNlTmFtZSo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZq
c0Nhc3Q8SlMjI2ludGVyZmFjZU5hbWUqPihhc09iamVjdCh2YWx1ZSkpLT53cmFwcGVkKCk7CiAK
IEV2ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVy
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3Rv
bS5jcHAKaW5kZXggNTFmYmY0ZmExODJmNGMzYmM0NmJhNThmYmRlMDdjNWVmNThmMTA2OS4uYTNj
MDliMTgzMDQxMTlhOGVlOGRkNzdiNGQ3ZGZmNTQ4MmQzYjA5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0ZpbGVSZWFkZXI6OnJlc3VsdChF
eGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEZpbGVSZWFkZXImIGltcCA9IGltcGwoKTsK
KyAgICBGaWxlUmVhZGVyJiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKGltcC5yZWFkVHlwZSgp
ID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4g
dG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXAuYXJyYXlCdWZmZXJS
ZXN1bHQoKSkpOwogICAgIHJldHVybiBqc093bmVkU3RyaW5nT3JOdWxsKCZzdGF0ZSwgaW1wLnN0
cmluZ1Jlc3VsdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
R2VvbG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9s
b2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggZWJjNWJhN2FiNjMwY2ZhNTNkMDE1YjJjNmQzNDIzODk0
NTI4MDkxNy4uYjAxYmU3ZGJkMGYwM2VjYTgwYzZkMDk1ZjBhZWM4Yzc3NmU4NTJkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAK
QEAgLTExNCw3ICsxMTQsNyBAQCBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3Np
dGlvbihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsKIAotICAgIGltcGwoKS5nZXRDdXJyZW50UG9zaXRp
b24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOworICAgIHdyYXBwZWQoKS5nZXRDdXJy
ZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxs
YmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQogCkBAIC0xMzYsNyArMTM2LDcgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0
aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbk9wdGlvbnMpOwogCi0gICAgaW50IHdhdGNo
SUQgPSBpbXBsKCkud2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9z
aXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7
CisgICAgaW50IHdhdGNoSUQgPSB3cmFwcGVkKCkud2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxi
YWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25P
cHRpb25zLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKHdhdGNoSUQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCmluZGV4IDI1OTJmNDY3MmU4YTIxNzBlYmZmZWEyMmQ4MzM1NTgxMzM5ZjIx
ZjkuLjk0YmMzMjRhZWRlMzgwZjBhZDkyOWM4NDM0YzViOWRhYTk5YjBjNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEpT
VmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFZlY3RvcjxSZWY8
RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xsZWN0aW9uLT5pbXBsKCkubmFtZWRJdGVtcyhwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBWZWN0b3I8UmVmPEVs
ZW1lbnQ+PiBuYW1lZEl0ZW1zID0gY29sbGVjdGlvbi0+d3JhcHBlZCgpLm5hbWVkSXRlbXMocHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAKICAgICBpZiAobmFtZWRJ
dGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNTgsNyAr
NTgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENv
bGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gRG8gbm90IHVzZSB0aGlzT2JqIGhl
cmUuIEl0IGNhbiBiZSB0aGUgSlNIVE1MRG9jdW1lbnQsIGluIHRoZSBkb2N1bWVudC5mb3Jtcyhp
KSBjYXNlLgogICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIGpzQ29sbGVjdGlvbiA9IGpzQ2FzdDxK
U0hUTUxBbGxDb2xsZWN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIEhUTUxBbGxDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uID0ganNDb2xsZWN0aW9uLT5pbXBsKCk7CisgICAgSFRNTEFsbENvbGxl
Y3Rpb24mIGNvbGxlY3Rpb24gPSBqc0NvbGxlY3Rpb24tPndyYXBwZWQoKTsKIAogICAgIC8vIEFs
c28sIGRvIHdlIG5lZWQgdGhlIFR5cGVFcnJvciB0ZXN0IGhlcmUgPwogCkBAIC0xMDEsNyArMTAx
LDcgQEAgYm9vbCBKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3Rh
dGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlv
bjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KCpzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpLmltcGwoKSkpCi0gICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFs
T2JqZWN0KCksIGltcGwoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRv
SlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkp
OwogICAgIHJldHVybiBuYW1lZEl0ZW1zKHN0YXRlLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0
YXRlKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IGU2ZWM4ZGMzY2VhZjRmYWYxMzNlNDhl
OTQ1OWI5OGE2Mjg4ZGM2ODEuLjE0YWQ5NWJiMTc2MzUyODk3ODYwMzE3YzgyMDI4MWYwOGRmZDBi
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGdldDNE
Q29udGV4dEF0dHJpYnV0ZXMoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmUHRyPENhbnZhc0NvbnRleHRB
dHRyaWJ1CiAKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSBpbXBsKCk7Cisg
ICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJp
bmcmIGNvbnRleHRJZCA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CiAgICAgCiAgICAgUmVmUHRyPENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzPiBhdHRy
czsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250
ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJv
YmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFz
RWxlbWVudCYgY2FudmFzID0gaW1wbCgpOworICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMg
PSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJl
dHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
QEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnByb2JhYmx5
U3VwcG9ydHNDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNIVE1MQ2FudmFz
RWxlbWVudDo6dG9EYXRhVVJMKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTENhbnZhc0Vs
ZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0g
d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgY29uc3QgU3RyaW5n
JiB0eXBlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0
YXRlLmFyZ3VtZW50KDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNzI3OWE5NDUwYTE3MTM0MDUzZjY4MzAy
NWMzYzEwODdkYTUwNzkwYi4uODg5NzA1YWZlMGQ4MzZmYzZlYjViOTE4MjlmOTgwMDgzMTJhNmJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlv
bkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVj
dGlvbkN1c3RvbS5jcHAKQEAgLTQyLDEwICs0MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaW1wbCgpLnR5cGUoKSAhPSBGb3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUg
c3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGltcGwoKS50
eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdl
dHRlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uod3JhcHBlZCgpLnR5cGUoKSAhPSBGb3Jt
Q29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUgc3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKHdyYXBwZWQoKS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNo
b3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOwogCi0gICAgYXV0byBpdGVtID0g
aW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxE
b2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1
bWVudEN1c3RvbS5jcHAKaW5kZXggNDMxNzQyODU0NjhhZWFmNzE4NzFlMDk2NGY0MjYxMTJlYzVh
NjAwOS4uMTkxMmMwYjZiZTNiODk2MjQ0YzYyYmUxNmZlMTUxOTk2NGZlMDM3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApA
QCAtODEsNyArODEsNyBAQCBib29sIEpTSFRNTERvY3VtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZQogCiBib29sIEpTSFRNTERv
Y3VtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBpbXBsKCk7Cisg
ICAgYXV0byYgZG9jdW1lbnQgPSB3cmFwcGVkKCk7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBh
dG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwogICAgIGlmICgh
YXRvbWljUHJvcGVydHlOYW1lIHx8ICFkb2N1bWVudC5oYXNEb2N1bWVudE5hbWVkSXRlbSgqYXRv
bWljUHJvcGVydHlOYW1lKSkKQEAgLTExNSw3ICsxMTUsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3Vt
ZW50OjphbGwoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAgICBpZiAodikKICAgICAgICAgcmV0
dXJuIHY7CiAKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCku
YWxsKCkpOworICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQo
KS5hbGwoKSk7CiB9CiAKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBEb2N1bWVudCog
ZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmICghY2FsbGVyRnJh
bWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFzSlNET01XaW5kb3co
ZnVuY3Rvci5jYWxsZXJGcmFtZSgpLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCkuZG9j
dW1lbnQoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhmdW5jdG9yLmNhbGxlckZyYW1lKCkt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKS5kb2N1bWVudCgpOwogfQogCiAvLyBD
dXN0b20gZnVuY3Rpb25zCkBAIC0xNDEsNyArMTQxLDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVu
dDo6b3BlbihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdp
dGggb3RoZXIgYnJvd3NlcnMsIHBhc3Mgb3BlbiBjYWxscyB3aXRoIG1vcmUgdGhhbiAyIHBhcmFt
ZXRlcnMgdG8gdGhlIHdpbmRvdy4KICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID4gMikg
ewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCkpIHsKKyAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAgICAgICBKU0RP
TVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50
V29ybGQoJnN0YXRlKSk7CiAgICAgICAgICAgICBpZiAod3JhcHBlcikgewogICAgICAgICAgICAg
ICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB3cmFwcGVyLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgIm9wZW4iKSk7CkBAIC0xNTcsMTAgKzE1NywxMCBAQCBKU1ZhbHVl
IEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICAvLyBkb2N1bWVu
dC5vcGVuIGNsb2JiZXJzIHRoZSBzZWN1cml0eSBjb250ZXh0IG9mIHRoZSBkb2N1bWVudCBhbmQK
ICAgICAvLyBhbGlhc2VzIGl0IHdpdGggdGhlIGFjdGl2ZSBzZWN1cml0eSBjb250ZXh0LgotICAg
IERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IGFzSlNET01XaW5kb3coc3RhdGUubGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+aW1wbCgpLmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGFjdGl2ZURv
Y3VtZW50ID0gYXNKU0RPTVdpbmRvdyhzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFw
cGVkKCkuZG9jdW1lbnQoKTsKIAogICAgIC8vIEluIHRoZSBjYXNlIG9mIHR3byBwYXJhbWV0ZXJz
IG9yIGZld2VyLCBkbyBhIG5vcm1hbCBkb2N1bWVudCBvcGVuLgotICAgIGltcGwoKS5vcGVuKGFj
dGl2ZURvY3VtZW50KTsKKyAgICB3cmFwcGVkKCkub3BlbihhY3RpdmVEb2N1bWVudCk7CiAgICAg
cmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBlbnVtIE5ld2xpbmVSZXF1aXJl
bWVudCB7IERvTm90QWRkTmV3bGluZSwgRG9BZGROZXdsaW5lIH07CiAKIHN0YXRpYyBpbmxpbmUg
dm9pZCBkb2N1bWVudFdyaXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTERvY3VtZW50KiB0aGlz
RG9jdW1lbnQsIE5ld2xpbmVSZXF1aXJlbWVudCBhZGROZXdsaW5lKQogewotICAgIEhUTUxEb2N1
bWVudCogZG9jdW1lbnQgPSAmdGhpc0RvY3VtZW50LT5pbXBsKCk7CisgICAgSFRNTERvY3VtZW50
KiBkb2N1bWVudCA9ICZ0aGlzRG9jdW1lbnQtPndyYXBwZWQoKTsKICAgICAvLyBET00gb25seSBz
cGVjaWZpZXMgc2luZ2xlIHN0cmluZyBhcmd1bWVudCwgYnV0IGJyb3dzZXJzIGFsbG93IG11bHRp
cGxlIG9yIG5vIGFyZ3VtZW50cy4KIAogICAgIHNpemVfdCBzaXplID0gc3RhdGUuYXJndW1lbnRD
b3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50
Q3VzdG9tLmNwcAppbmRleCAzZDQ4ZGYwNDQ2MDkzM2VjY2Y0NTUzNGJiN2NjYTE3YzNkNmM1NmY1
Li41ODM2YTEwNzRiZTI5NTY3ZTE2Y2I4NmU1NTQyZDNjYzIyMGQ4MGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzYs
NyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU1Njb3BlKiBKU0hUTUxFbGVtZW50
OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkg
Y29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGltcGwoKTsKKyAgICBIVE1MRWxl
bWVudCYgZWxlbWVudCA9IHdyYXBwZWQoKTsKIAogICAgIC8vIFRoZSBkb2N1bWVudCBpcyBwdXQg
b24gZmlyc3QsIGZhbGwgYmFjayB0byBzZWFyY2hpbmcgaXQgb25seSBhZnRlciB0aGUgZWxlbWVu
dCBhbmQgZm9ybS4KICAgICBzY29wZSA9IEpTV2l0aFNjb3BlOjpjcmVhdGUoZXhlYywgYXNPYmpl
Y3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgJmVsZW1lbnQuZG9jdW1lbnQoKSkpLCBzY29w
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDhiNTVmYTdkZTM2ZTVj
NjA3ODg5YzliMWU5YTUxYzNlYzhhNjhiNzYuLjNhZmIzMjYwNzI2ZGRmNWYzNTgwZDJmNDJiNmY5
YWJlZGYwNmY1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zMywx
NSArMzMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVt
cyhFeGVjU3RhdGUmIHN0YXRlLCBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0
aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAg
VmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rpb24tPmltcGwoKS5uYW1l
ZEl0ZW1zKG5hbWUpOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xs
ZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVtcyhuYW1lKTsKIAogICAgIGlmIChuYW1lZEl0ZW1z
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKG5hbWVk
SXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlv
bi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRlbXNbMF0ucHRyKCkpOwogCi0gICAgQVNTRVJUKGNv
bGxlY3Rpb24tPmltcGwoKS50eXBlKCkgPT0gRm9ybUNvbnRyb2xzKTsKLSAgICByZXR1cm4gdG9K
Uygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCku
b3duZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSk7CisgICAgQVNTRVJUKGNvbGxl
Y3Rpb24tPndyYXBwZWQoKS50eXBlKCkgPT0gRm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gdG9K
Uygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLT53cmFwcGVk
KCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSk7CiB9CiAKIGJvb2wgSlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIHN0YXRlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRl
eCBlMzRjMDM1NDZkZGVhNmNhZGVkMWEzY2FjOWY3YmY3ZjMzODhiYmE0Li4zYWVkNzA1MmY0NjE1
ZWYwYWM5MzU5ZTcxYTkxNTg3ODBiM2JkNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUm
IHZhbHVlKQogewotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBpbXBsKCku
bmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
KyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zID0gd3JhcHBlZCgpLm5hbWVkRWxl
bWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgCiAg
ICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCBhYjAwMGY3MTMwMTllOWI4YTBiZjU4ZTIzNWQ3NDEzYTlhY2I5NTQyLi42
ZmQ1YTk3YjI1N2M2MDg1OGY4OTI5YjJlOWEyOTkxYjU3ZGYxZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFsbG93U2V0dGluZ0phdmFzY3Jp
cHRVUkwoRXhlY1N0YXRlJiBzdGF0ZSwgSFRNTEZyYW1lRWxlbWVudCoKIAogdm9pZCBKU0hUTUxG
cmFtZUVsZW1lbnQ6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgSFRNTEZyYW1lRWxlbWVudCYgaW1wID0gaW1wbCgpOworICAgIEhUTUxGcmFtZUVs
ZW1lbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBTdHJpbmcgbG9jYXRpb25WYWx1ZSA9IHZhbHVl
VG9TdHJpbmdXaXRoTnVsbENoZWNrKCZzdGF0ZSwgdmFsdWUpOwogCiAgICAgaWYgKCFhbGxvd1Nl
dHRpbmdKYXZhc2NyaXB0VVJMKHN0YXRlLCAmaW1wLCBsb2NhdGlvblZhbHVlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRD
dXN0b20uY3BwCmluZGV4IDcwODU2ZTU1M2M0ZmQ2YzdkMDIwZmI5NzM1ODk4NmEyNjUyNTM1NmEu
LjEyNWFlZjdlYzFkNzMxZjIyZTExNjQwZTgwZjMyYmI3MGFhZWVhYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNI
VE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byogZnJhbWVFbGVt
ZW50ID0gaW1wbCgpLmNoaWxkcmVuKCktPm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvKiBmcmFtZUVsZW1lbnQgPSB3cmFwcGVkKCku
Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwogICAgIGlmICghaXM8SFRNTEZyYW1lRWxlbWVudD4oZnJhbWVFbGVtZW50KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA4ZjQyZGJlZjUyNGZkNmZk
OGNlM2RhYTExMTlkZGZkYjNiOWIwMTU1Li4zNzJmMzQyOTgxNGNhODUyZmEzNWE3MjhkYWRjZmUw
YmEzNjQ1ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGlt
cGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CiAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6
OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIHZvaWQgSlNIVE1MSW5w
dXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNl
bGVjdGlvbigpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydChFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6
c2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgSFRNTElucHV0RWxl
bWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC02Miw3ICs2Miw3IEBAIEpTVmFsdWUgSlNI
VE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAog
dm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgp
OworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5w
dXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwog
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25F
bmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewot
ICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigp
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIApAQCAtODAsNyArODAs
NyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rp
b25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBIVE1M
SW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1
dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkgewogICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogICAgICAgICByZXR1cm47CkBAIC05MSw3ICs5
MSw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvblJhbmdlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTElucHV0
RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3
cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA0NDAwOTc2
MWQxMzlkMTMxODY0NmI1YzhlNTFlMjViYWQwZWIxNDAzLi4yZjQxY2ZlNWUyNGJmOTg4MWI2MDNl
MDVmNWQyZTNhOTc5YTBlNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgdm9p
ZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xsZXIoRXhlY1N0YXRlJiwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICAvLyA0LjguMTAuMTEuMiBNZWRpYSBjb250cm9sbGVyczogY29udHJvbGxl
ciBhdHRyaWJ1dGUuCiAgICAgLy8gT24gc2V0dGluZywgaXQgbXVzdCBmaXJzdCByZW1vdmUgdGhl
IGVsZW1lbnQncyBtZWRpYWdyb3VwIGF0dHJpYnV0ZSwgaWYgYW55LCAKLSAgICBpbXBsKCkuc2V0
TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAgd3JhcHBlZCgpLnNldE1lZGlhR3JvdXAoU3RyaW5n
KCkpOwogICAgIC8vIGFuZCB0aGVuIHNldCB0aGUgY3VycmVudCBtZWRpYSBjb250cm9sbGVyIHRv
IHRoZSBnaXZlbiB2YWx1ZS4KLSAgICBpbXBsKCkuc2V0Q29udHJvbGxlcihKU01lZGlhQ29udHJv
bGxlcjo6dG9XcmFwcGVkKHZhbHVlKSk7CisgICAgd3JhcHBlZCgpLnNldENvbnRyb2xsZXIoSlNN
ZWRpYUNvbnRyb2xsZXI6OnRvV3JhcHBlZCh2YWx1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHAKaW5kZXggOTE1ZTAyODdjNzhjZGMwOTVkYjFhZGUzMzVkNzYwY2QzYjU4M2U3ZC4u
OTIzNDVlNmI1N2ZjYzUwMzM4NmE5MGMzYTE3Nzk0YzRjMTMxNjg4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wg
SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0g
PSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTYxLDEzICs2MSwxMyBAQCB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpzZXRMZW5ndGgoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
ICAgIG5ld0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGhWYWx1ZSk7CiAgICAg
fQogICAgIGlmICghZWMpCi0gICAgICAgIGltcGwoKS5zZXRMZW5ndGgobmV3TGVuZ3RoLCBlYyk7
CisgICAgICAgIHdyYXBwZWQoKS5zZXRMZW5ndGgobmV3TGVuZ3RoLCBlYyk7CiAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogfQogCiB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
OjppbmRleFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZh
bHVlKQogewotICAgIHNlbGVjdEluZGV4U2V0dGVyKCZpbXBsKCkuc2VsZWN0RWxlbWVudCgpLCBl
eGVjLCBpbmRleCwgdmFsdWUpOworICAgIHNlbGVjdEluZGV4U2V0dGVyKCZ3cmFwcGVkKCkuc2Vs
ZWN0RWxlbWVudCgpLCBleGVjLCBpbmRleCwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTSFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKQEAgLTc1LDkgKzc1LDkg
QEAgSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgLy8gVGhlIGFyZ3VtZW50IGNhbiBiZSBhbiBIVE1MT3B0aW9uRWxlbWVudCBvciBh
biBpbmRleC4KICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAg
aWYgKEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24gPSBKU0hUTUxPcHRpb25FbGVtZW50Ojp0b1dy
YXBwZWQoYXJndW1lbnQpKQotICAgICAgICBpbXBsKCkucmVtb3ZlKG9wdGlvbik7CisgICAgICAg
IHdyYXBwZWQoKS5yZW1vdmUob3B0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIGltcGwoKS5yZW1v
dmUoYXJndW1lbnQudG9JbnQzMigmc3RhdGUpKTsKKyAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShh
cmd1bWVudC50b0ludDMyKCZzdGF0ZSkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IGIzZGYxM2Y3MmVhYThmYmFhMDc4NjA1ZjQ3NjMzOTI3ZWJl
MDJjYzYuLjMwZTNlYmJiODlhNGVmMjNhNTk2OTRjM2FiZWU1N2E4MGE2MjMxZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRD
dXN0b20uY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEpTVmFsdWUgSlNIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCA9IGltcGwoKTsKKyAgICBIVE1MU2VsZWN0
RWxlbWVudCYgc2VsZWN0ID0gd3JhcHBlZCgpOwogCiAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudENv
dW50KCkpIHsKICAgICAgICAgLy8gV2hlbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCwgd2Ugc2hv
dWxkIGNhbGwgRWxlbWVudDo6cmVtb3ZlKCkgdG8gZGV0YWNoLgpAQCAtNjksNyArNjksNyBAQCB2
b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZAogCiB2b2lkIEpTSFRNTFNlbGVjdEVsZW1lbnQ6OmluZGV4
U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewotICAgIHNlbGVjdEluZGV4U2V0dGVyKCZpbXBsKCksIGV4ZWMsIGluZGV4LCB2
YWx1ZSk7CisgICAgc2VsZWN0SW5kZXhTZXR0ZXIoJndyYXBwZWQoKSwgZXhlYywgaW5kZXgsIHZh
bHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMWJiODZkZjg4YzlkZWVhYjA5
YmEwNmYzMjVkZTdiZGY2NmQ0NDhhZi4uOTdhYmU3N2MwYjAzYWIxNjVkYjZkNDc2ZDhlYTE5OGQx
ODdiYzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVt
cGxhdGVFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUg
SlNIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soJnN0YXRlKTsKIAotICAgIERvY3VtZW50RnJhZ21lbnQq
IGNvbnRlbnQgPSBpbXBsKCkuY29udGVudCgpOworICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRl
bnQgPSB3cmFwcGVkKCkuY29udGVudCgpOwogCiAgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBnZXRD
YWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50KTsKICAgICBpZiAo
d3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9y
eUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20u
Y3BwCmluZGV4IGEyYzY5ZWJlZTNkYTg4YTM5Yjc0ZTg3MmRiZTRjOTJkNzVmNWE5ZDIuLjJiZDJm
NmQ4ZTM4NDdiMzA0ZmU5NThjNDI4MmYyMDE5N2EyMzliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29s
IEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydAogICAgIC8vIE91ciBjdXN0b20gY29kZSBpcyBvbmx5IG5lZWRl
ZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBjcm9zcy1kb21haW4gc2NoZW1lLCBzbyBpZiBhY2Nl
c3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1cm4gZmFsc2Ugc28gdGhlIG5vcm1hbCBsb29rdXAg
d2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoZXhlYywgaW1wbCgpLmZyYW1lKCksIG1lc3NhZ2UpKQorICAgIGlmIChz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgd3JhcHBlZCgpLmZyYW1lKCksIG1lc3NhZ2Up
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5j
dGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZlbiB3aGVuIGNhbGxlZCBjcm9zcy1kb21haW4uCkBAIC02
OSwxNCArNjksMTQgQEAgYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnQKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkuZnJhbWUo
KSwgbWVzc2FnZSk7CisgICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZSh3cmFwcGVkKCkuZnJh
bWUoKSwgbWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewotICAgIGlmICghc2hvdWxk
QWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB3cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBK
U0hpc3Rvcnk6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVMKIGJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU0hpc3RvcnkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNIaXN0b3J5Kj4oY2VsbCk7Ci0gICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwog
fQpAQCAtOTIsNyArOTIsNyBAQCBib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogYm9vbCBKU0hpc3Rv
cnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lKQogewogICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTAwLDE0ICsxMDAsMTQg
QEAgYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHIKIHZvaWQgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTSGlzdG9y
eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihvYmplY3QpOwotICAgIGlmICghc2hv
dWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkK
KyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1Zh
bHVlIEpTSGlzdG9yeTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIaXN0
b3J5JiBoaXN0b3J5ID0gaW1wbCgpOworICAgIEhpc3RvcnkmIGhpc3RvcnkgPSB3cmFwcGVkKCk7
CiAKICAgICBKU1ZhbHVlIGNhY2hlZFZhbHVlID0gbV9zdGF0ZS5nZXQoKTsKICAgICBpZiAoIWNh
Y2hlZFZhbHVlLmlzRW1wdHkoKSAmJiAhaGlzdG9yeS5zdGF0ZUNoYW5nZWQoKSkKQEAgLTEyMSw3
ICsxMjEsNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29u
c3QKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogewot
ICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKCZzdGF0ZSwgaW1wbCgpLmZyYW1lKCkp
KQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKCZzdGF0ZSwgd3JhcHBlZCgpLmZy
YW1lKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIDAsIDApOwpAQCAtMTQwLDcgKzE0MCw3
IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuc3RhdGVPYmplY3RBZGRl
ZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVj
dFR5cGU6OlB1c2gsIGVjKTsKKyAgICB3cmFwcGVkKCkuc3RhdGVPYmplY3RBZGRlZChoaXN0b3J5
U3RhdGUucmVsZWFzZSgpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1
c2gsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRl
LmNsZWFyKCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0
ZShFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0
YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
JnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwg
MCk7CkBAIC0xNjksNyArMTY5LDcgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShF
eGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1
cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQo
KS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhp
c3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3RhdGUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggZTUzNTA4ZjFi
NjVkM2FhYWM4NmNjM2U1NDkwYzBhOTNlODNhNDBlYi4uY2RlYjY4OTI0ZjNlNDcxMjI4MzcxZmRl
NDZiMWFiZWM3MmY4ODExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgSlNWYWx1ZSBKU0lEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUs
IGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCwgZWMpLmdldCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0
YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtl
eVBhdGgsIGF1dG9JbmNyZW1lbnQsIGVjKS5nZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDAxMjg4YzZl
YWNhZjc1Nzg0MzRjNDEyMTg1ZDA1NGQ1NjgyOGI5ZGEuLjE4ZjAyNGZmMjFjYWYzYjRmN2MwNDhh
ZGY5NDE1OWQ0YzMyMjk4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTVmFsdWUg
SlNJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0
YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLmNyZWF0ZUluZGV4KGNvbnRleHQsIG5hbWUsIGtl
eVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgZWMpLmdldCgpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmNyZWF0ZUluZGV4KGNv
bnRleHQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgZWMpLmdldCgpKTsKICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCBlMjZiYmU3OGQ5ZmJiYzQ5MjBjZTFlZmNiNGMzNTBm
ZDdhMTMyNGI4Li45ZTY5ZTFiZmQ2NjRiNjZhOGMzZGFkZjE3MjVmYTQ4ODY5OTM4ODZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9z
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgSlNWYWx1ZSBKU0luc3Bl
Y3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV4ZWNTdGF0ZSYgc3RhdGUpCiAjZWxz
ZQogICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0ZW1zID0gbWVudS5pdGVtcygpOwogI2Vu
ZGlmCi0gICAgaW1wbCgpLnNob3dDb250ZXh0TWVudShldmVudCwgaXRlbXMpOworICAgIHdyYXBw
ZWQoKS5zaG93Q29udGV4dE1lbnUoZXZlbnQsIGl0ZW1zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxMzFlMjg3MGJkYjU5ZDYwNTM2YTkxMGE3NzFkZDUwNzcy
YzA2ZTQ5Li4wMDgzZTBjZjE1OWNjMWY4OTAwY2ZhMThkZDdiNDI1NWUwOTM0MGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgp
LmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSkgewogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXIKIAogYm9vbCBK
U0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBG
cmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVk
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAt
MTAyLDcgKzEwMiw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wCiB7CiAgICAgSlNMb2NhdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBh
bGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hv
dWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkK
KyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTEx
MSw3ICsxMTEsNyBAQCBib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcAogewogICAgIEpTTG9jYXRpb24q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxs
b3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIXNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpCisg
ICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiB7CiAgICAgSlNMb2Nh
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4ob2JqZWN0KTsKICAgICAvLyBP
bmx5IGFsbG93IHRoZSBsb2NhdGlvbiBvYmplY3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4g
dGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNz
VG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtMTM0LDExICsxMzQsMTEgQEAgYm9vbCBKU0xvY2F0
aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmEKIAogSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCk7CisgICAg
RnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhc2hv
dWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKCZzdGF0ZSwgZnJhbWUpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwo
KS50b1N0cmluZygpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB3cmFw
cGVkKCkudG9TdHJpbmcoKSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAppbmRleCA4MDE4YjI2MzNiNzhlOWNl
MWRlMjkxMzNkOWQ5NGU2NzAyZWEzNTFlLi43NWU5Y2FiYmMzODk3ZTE2MDFlZDZjNjUzYzQ1Zjlj
YjVmMjUyNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlh
U291cmNlU3RhdGVzQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcApAQCAtMzcsNTQgKzM3LDU0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3Rh
dGUmKSBjb25zdAogewotICAgIGlmICghaW1wbCgpLmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYg
KCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLndpZHRoKCkpOworICAgIHJldHVybiBq
c051bWJlcih3cmFwcGVkKCkud2lkdGgoKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0
YXRlczo6aGVpZ2h0KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlk
ZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgp
LmhlaWdodCgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLmhlaWdodCgpKTsKIH0K
IAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJhdGUoRXhlY1N0YXRlJikgY29u
c3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlmICghd3JhcHBl
ZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuZnJhbWVSYXRlKCkpOworICAgIHJldHVybiBq
c051bWJlcih3cmFwcGVkKCkuZnJhbWVSYXRlKCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OmFzcGVjdFJhdGlvKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBs
KCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNOdW1i
ZXIoaW1wbCgpLmFzcGVjdFJhdGlvKCkpOworICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCku
YXNwZWN0UmF0aW8oKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5n
TW9kZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIGlmICghaW1wbCgpLmhhc1ZpZGVv
U291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGUgPSBp
bXBsKCkuZmFjaW5nTW9kZSgpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IHdyYXBw
ZWQoKS5mYWNpbmdNb2RlKCk7CiAgICAgaWYgKG1vZGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0
YXRlLCBpbXBsKCkuZmFjaW5nTW9kZSgpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
JnN0YXRlLCB3cmFwcGVkKCkuZmFjaW5nTW9kZSgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlhU291
cmNlU3RhdGVzOjp2b2x1bWUoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoaW1wbCgpLmhh
c1ZpZGVvU291cmNlKCkpCisgICAgaWYgKHdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNOdW1iZXIoaW1w
bCgpLnZvbHVtZSgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnZvbHVtZSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCAwMTk2NWU0YjQyNzI2
NmZmZDI3ODljOGI5YjI4NDhhOWFlMmRhODdhLi4zNzVkZDRiNWYwMzYzOTNmYWJlZmMzMzg4Nzdh
NjdiZWUyN2ZiYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcApAQCAtMzUsMTAgKzM1LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChNZXNzYWdlUG9ydCogcG9y
dCA9IGltcGwoKS5wb3J0MSgpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHdyYXBwZWQo
KS5wb3J0MSgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiAKLSAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCkucG9ydDIoKSkKKyAgICBpZiAoTWVzc2FnZVBv
cnQqIHBvcnQgPSB3cmFwcGVkKCkucG9ydDIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHBvcnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDRkOTU0N2Y2NzZlOTg1NmU5ZDVhNDFiNDc0MjUy
M2Q0YzcyMTUzMy4uYjU1ZGM0ZWEyNTI0NDAyZTViZTRhODJkMjI1NjYxMDBmNjIzMWM1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcApAQCAtNTMsNyArNTMsNyBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50OjpkYXRhKEV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIE1lc3NhZ2VFdmVudCYgZXZlbnQgPSBpbXBsKCk7CisgICAgTWVzc2FnZUV2ZW50JiBl
dmVudCA9IHdyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBzd2l0Y2ggKGV2ZW50
LmRhdGFUeXBlKCkpIHsKICAgICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5cGVTY3JpcHRWYWx1
ZTogewpAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50OjpkYXRhKEV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiAKICAgICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5cGVTZXJp
YWxpemVkU2NyaXB0VmFsdWU6CiAgICAgICAgIGlmIChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkVmFsdWUgPSBldmVudC5kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUo
KSkgewotICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0cyA9IGltcGwoKS5wb3J0cygp
OworICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0cyA9IHdyYXBwZWQoKS5wb3J0cygp
OwogICAgICAgICAgICAgLy8gRklYTUU6IFdoeSBkb2VzIHRoaXMgc3VwcHJlc3MgZXhjZXB0aW9u
cz8KICAgICAgICAgICAgIHJlc3VsdCA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoJnN0
YXRlLCBnbG9iYWxPYmplY3QoKSwgJnBvcnRzLCBOb25UaHJvd2luZyk7CiAgICAgICAgIH0gZWxz
ZQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3Nh
Z2VFdmVudChKU01lc3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAg
IE1lc3NhZ2VFdmVudCYgZXZlbnQgPSBqc0V2ZW50LT5pbXBsKCk7CisgICAgTWVzc2FnZUV2ZW50
JiBldmVudCA9IGpzRXZlbnQtPndyYXBwZWQoKTsKICAgICBldmVudC5pbml0TWVzc2FnZUV2ZW50
KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZywgb3JpZ2luQXJn
LCBsYXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCBXVEY6Om1vdmUobWVzc2FnZVBvcnRzKSk7CiAg
ICAganNFdmVudC0+bV9kYXRhLnNldChzdGF0ZS52bSgpLCBqc0V2ZW50LCBkYXRhQXJnLmpzVmFs
dWUoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDIzOWY0N2FmZDZkYTVl
YmU1MTkwZTdjYmI1OTNlMzNiZWJmOTFlMWYuLjZiMjEyNDQ5ODc1ZTc4ZThjYmJkZDcyZmMyM2Qw
ZjY5YjgzOTY5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgbG9jYWxseSBlbnRhbmdsZWQgcG9y
dCwgd2UgY2FuIGRpcmVjdGx5IG1hcmsgaXQgYXMgcmVhY2hhYmxlLiBQb3J0cyB0aGF0IGFyZSBy
ZW1vdGVseSBlbnRhbmdsZWQgYXJlIG1hcmtlZCBpbi11c2UgYnkgbWFya0FjdGl2ZU9iamVjdHNG
b3JDb250ZXh0KCkuCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgpLmxvY2FsbHlF
bnRhbmdsZWRQb3J0KCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gd3JhcHBlZCgpLmxv
Y2FsbHlFbnRhbmdsZWRQb3J0KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0
KTsKIH0KIAogSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZp
bXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJndyYXBwZWQoKSk7
CiB9CiAKIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSwgQXJyYXlCdWZm
ZXJBcnJheSYgYXJyYXlCdWZmZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKaW5k
ZXggYzQ2OGFhZDZhNjE0ZTQ5ZjJhN2ZjOTkyMmVjMmJhZDI0MjQyZWM1ZC4uZGVhYmM1NDFkYjA2
ZjEwOWU0ZDBiZmM2YzcxOTQwOWI1MTg5YjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0
b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIERlY2lzaW9uUG9pbnQgPSBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OwogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6ZGVjaXNpb25Qb2ludChFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERl
Y2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCA9IGltcGwoKS5kZWNpc2lvblBvaW50KCk7CisgICAg
RGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50ID0gd3JhcHBlZCgpLmRlY2lzaW9uUG9pbnQoKTsK
ICAgICBzd2l0Y2ggKGRlY2lzaW9uUG9pbnQpIHsKICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFm
dGVyV2lsbFNlbmRSZXF1ZXN0OgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVj
dDoKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNl
dERlY2lzaW9uUG9pbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWwKICAgICBjYXNlIERl
Y2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YToKICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVy
RmluaXNoZWRBZGRpbmdEYXRhOgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6TmV2ZXI6Ci0gICAg
ICAgIGltcGwoKS5zZXREZWNpc2lvblBvaW50KGRlY2lzaW9uUG9pbnQpOworICAgICAgICB3cmFw
cGVkKCkuc2V0RGVjaXNpb25Qb2ludChkZWNpc2lvblBvaW50KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBpbmxpbmUgRGVjaXNpb24gdG9EZWNp
c2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb24oRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdG9KU1ZhbHVlKGltcGwoKS5kZWNpc2lvbigpKTsKKyAgICByZXR1cm4gdG9KU1ZhbHVl
KHdyYXBwZWQoKS5kZWNpc2lvbigpKTsKIH0KIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNldERlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0x
MTYsMTIgKzExNiwxMiBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVj
aXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGltcGwoKS5zZXREZWNpc2lvbihk
ZWNpc2lvbik7CisgICAgd3JhcHBlZCgpLnNldERlY2lzaW9uKGRlY2lzaW9uKTsKIH0KIAogSlNW
YWx1ZSBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24o
RXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KU1ZhbHVlKGltcGwoKS51bmJsb2Nr
UmVxdWVzdERlY2lzaW9uKCkpOworICAgIHJldHVybiB0b0pTVmFsdWUod3JhcHBlZCgpLnVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSk7CiB9CiAKIHZvaWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlMKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGltcGwoKS5z
ZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIHdy
YXBwZWQoKS5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24p
OwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggMzgwNTU3
MjQ3MjAyNmIyYTQ4ZDQyMzM2YTZjYjA5ZDQ4YmRhNmI4NS4uYzZjNTcyNDAzYWU2Yjc4MzI0NjJl
MDYxYjZjMzI2MTMyNDQzMjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC02Myw3ICs2Myw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKEV4
ZWNTdGF0ZSogZXhlYykKIAogYm9vbCBKU011dGF0aW9uT2JzZXJ2ZXJPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZl
ciA9IGpzQ2FzdDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSkt
PmltcGwoKTsKKyAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciA9IGpzQ2FzdDxKU011dGF0
aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQoKTsKICAgICBh
dXRvIG9ic2VydmVkTm9kZXMgPSBvYnNlcnZlci5nZXRPYnNlcnZlZE5vZGVzKCk7CiAgICAgZm9y
IChhdXRvIGl0ID0gb2JzZXJ2ZWROb2Rlcy5iZWdpbigpLCBlbmQgPSBvYnNlcnZlZE5vZGVzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFx
dWVSb290KHJvb3QoKml0KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggODQ2Y2Y4ZmFhOGM1MTFlZjgyMTUxNzAxYjRh
MDA4YmFmYTFiZmNkMS4uYTMxZTQ2YTg0MzIxOGM5ODZhODQxMmE0ODA3NmYwOTg5YmI4NDUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3Vz
dG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNO
YW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkuZ2V0
TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
IGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9y
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcAppbmRleCAzZDVmZTEyNDg2NDg2MzRhNjRhMWQ4OTc1YzRhYzFiYzNkMWJkOWI4Li5mMjRj
MDU1ZmM4OWI5ZGU3YjlhNTVjNGU2MGU0OTA3MmNhZDk1NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC02OCwxMyArNjgsMTMg
QEAgSlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIGlmICghaW1w
bCgpLmZyYW1lKCkpIHsKKyAgICBpZiAoIXdyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gcHJvdGVj
dCB0aGUgY29udGV4dCAoaS5lLiBkb2N1bWVudCkgaGVyZSBhcyBVc2VyTWVkaWFSZXF1ZXN0IGlz
IG9ic2VydmluZyBjb250ZXh0IGRlc3RydWN0aW9uIGFuZCB3aWxsIGNoZWNrIHZhbGlkaXR5IGJl
Zm9yZSByZXNvbHZpbmcvcmVqZWN0aW5nIHByb21pc2UuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gaW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAgICBSZWZQdHI8TmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBKU05hdmlnYXRvclVzZXJN
ZWRpYVN1Y2Nlc3NDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8gcmVzb2x2ZUNhbGxiYWNrID0gW3N1
Y2Nlc3NDYWxsYmFjaywgZG9jdW1lbnRdKGNvbnN0IFJlZlB0cjxNZWRpYVN0cmVhbT4mIHN0cmVh
bSkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNw
cAppbmRleCAyYzFhOWY4MzBlMzUyNzE1NWE2Y2YzN2Q2NzdkY2IyMDJkMTM2Y2U4Li4zMTIzYzk0
NjA5NTRlYmRiMzVkMjI4Zjk4ZDk2MWNmNDdmYzNmMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21ET00oTm9kZSogbm9kZSwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiBib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIEpTTm9kZSoganNOb2RlID0ganNDYXN0PEpTTm9kZSo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKLSAgICByZXR1cm4gaXNSZWFjaGFibGVGcm9tRE9NKCZqc05vZGUtPmltcGwo
KSwgdmlzaXRvcik7CisgICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJvbURPTSgmanNOb2RlLT53cmFw
cGVkKCksIHZpc2l0b3IpOwogfQogCiBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBvayA9
IGltcGwoKS5pbnNlcnRCZWZvcmUoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkp
LCBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgxKSksIGVjKTsKKyAgICBib29sIG9r
ID0gd3JhcHBlZCgpLmluc2VydEJlZm9yZShKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVu
dCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICBpZiAob2spCiAgICAgICAgIHJldHVybiBz
dGF0ZS5hcmd1bWVudCgwKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBKU1ZhbHVlIEpTTm9kZTo6aW5z
ZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNoaWxk
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9v
bCBvayA9IGltcGwoKS5yZXBsYWNlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1l
bnQoMCkpLCBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgxKSksIGVjKTsKKyAgICBi
b29sIG9rID0gd3JhcHBlZCgpLnJlcGxhY2VDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5h
cmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOwog
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICBpZiAob2spCiAgICAgICAgIHJl
dHVybiBzdGF0ZS5hcmd1bWVudCgxKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBKU1ZhbHVlIEpTTm9k
ZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTTm9kZTo6cmVtb3Zl
Q2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBib29sIG9rID0gaW1wbCgpLnJlbW92ZUNoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFy
Z3VtZW50KDApKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkucmVtb3ZlQ2hpbGQoSlNO
b2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3Vt
ZW50KDApOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChF
eGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU05vZGU6OmFwcGVuZENoaWxkKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBvayA9IGltcGwo
KS5hcHBlbmRDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIGVjKTsK
KyAgICBib29sIG9rID0gd3JhcHBlZCgpLmFwcGVuZENoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0
YXRlLmFyZ3VtZW50KDApKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsK
ICAgICBpZiAob2spCiAgICAgICAgIHJldHVybiBzdGF0ZS5hcmd1bWVudCgwKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBKU1Njb3BlKiBKU05vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIG5vZGUpIGNvbnN0CiAKIHZvaWQgSlNOb2RlOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3
cmFwcGVkKCkpKTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVXcmFw
cGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcAppbmRleCAyYjQwNDBlM2Q5NmYxNjdlODY1YjY2ODA1YWYzZDk5
YTAzYjQzMDhmLi5iM2YwMzYxMzlmYTBmYjE4MDY0ODRhNjEwZDg0YWM1YWM1N2NhNGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20u
Y3BwCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU05vZGVJ
dGVyYXRvcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gaW1wbCgpLmZpbHRlcigpKQorICAg
IGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB3cmFwcGVkKCkuZmlsdGVyKCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCmluZGV4IGY3ZDg2M2I4ZTM5NWRiZmNmMTEz
Y2M2ODZiMzVmNDY4NzRkNTAwYTIuLmJhMDYyYmVhMjliNDYwM2Q0YjcxOWJjZDc3ZmI2ZjI3MWUz
MWQwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0
b20uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKICAgICBK
U05vZGVMaXN0KiBqc05vZGVMaXN0ID0ganNDYXN0PEpTTm9kZUxpc3QqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CiAgICAgaWYgKCFqc05vZGVMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoanNOb2RlTGlzdC0+aW1wbCgpLmlzTGl2
ZU5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChy
b290KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmltcGwoKSkub3duZXJO
b2RlKCkpKTsKLSAgICBpZiAoanNOb2RlTGlzdC0+aW1wbCgpLmlzQ2hpbGROb2RlTGlzdCgpKQot
ICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2Fz
dDxDaGlsZE5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAg
IGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNFbXB0eU5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PEVtcHR5Tm9kZUxp
c3QmPihqc05vZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7CisgICAgaWYgKGpzTm9kZUxp
c3QtPndyYXBwZWQoKS5pc0xpdmVOb2RlTGlzdCgpKQorICAgICAgICByZXR1cm4gdmlzaXRvci5j
b250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxMaXZlTm9kZUxpc3QmPihqc05vZGVM
aXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CisgICAgaWYgKGpzTm9kZUxpc3QtPndyYXBw
ZWQoKS5pc0NoaWxkTm9kZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8Q2hpbGROb2RlTGlzdCY+KGpzTm9kZUxpc3QtPndy
YXBwZWQoKSkub3duZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlz
RW1wdHlOb2RlTGlzdCgpKQorICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJv
b3Qocm9vdChzdGF0aWNfY2FzdDxFbXB0eU5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+d3JhcHBlZCgp
KS5vd25lck5vZGUoKSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCmluZGV4IDM0MzYxYWY0OTZhOGRjOTdl
YzdiMzQ2YTVjMDQzZDk2ZmNkYmI5NWYuLjQ0N2M1ZDcwMGQ1NjUxZWFkZjE0MDRiZDNhN2IxZjQ4
NjExMzMyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9y
U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmlu
Zy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgVmVjdG9yPE5vZGVPclN0cmluZz4gdG9Ob2RlT3JTdHJp
bmdWZWN0b3IoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50Q291bnQ7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoaSk7CiAgICAgICAgIGlmIChhdXRvKiBub2RlID0ganNEeW5hbWljQ2FzdDxK
U05vZGUqPih2YWx1ZSkpCi0gICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCZub2Rl
LT5pbXBsKCkpOworICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCgmbm9kZS0+d3Jh
cHBlZCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gdmFs
dWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICAgICAgICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3NjaWxsYXRv
ck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9y
Tm9kZUN1c3RvbS5jcHAKaW5kZXggOThjODgxNDlmMzllMmIwY2JhODFkMzUyZTViOWJkYjI5MDVj
YjI5Ny4uM2FkZjgwMjI1YzQzYmZiM2RkYjU2N2IxNjk1Y2FlN2QwMjZiZWFhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTT3NjaWxs
YXRvck5vZGU6OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAg
ICBPc2NpbGxhdG9yTm9kZSYgaW1wID0gaW1wbCgpOworICAgIE9zY2lsbGF0b3JOb2RlJiBpbXAg
PSB3cmFwcGVkKCk7CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKICAgICBpZiAodmFs
dWUuaXNOdW1iZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFu
bmVyTm9kZUN1c3RvbS5jcHAKaW5kZXggODZjMDNlZDNmYjg5MjU5YWNmOThjZTMzMmE2OTI0Mjg3
ZWUzYjAxZC4uNjc5MGY4NGE3Y2VlOWYxNjYxMjZjZjY0MTQ1MGMxYjQzNDY4NDM1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1Bhbm5lck5vZGU6
OnNldFBhbm5pbmdNb2RlbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAg
IFBhbm5lck5vZGUmIGltcCA9IGltcGwoKTsKKyAgICBQYW5uZXJOb2RlJiBpbXAgPSB3cmFwcGVk
KCk7CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKICAgICBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkgewpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01v
ZGVsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAKIHZvaWQgSlNQYW5uZXJOb2Rl
OjpzZXREaXN0YW5jZU1vZGVsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgUGFubmVyTm9kZSYgaW1wID0gaW1wbCgpOworICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBw
ZWQoKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051
bWJlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCBjNmY2MWViYjU0MzFiNzA0NjljNGQ3ZjBkYjY1
YjRkYzg0ZGE5MGNhLi44MzBjMzA1NTg4NDFjMDIyMmJkZjJkODgxM2VkZDdiMjE3OTA1ZGY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBwbHVnaW5T
Y3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkUK
IAogc3RhdGljIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2Uo
SlNIVE1MRWxlbWVudCoganNIVE1MRWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVu
dCA9IGpzSFRNTEVsZW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpz
SFRNTEVsZW1lbnQtPndyYXBwZWQoKTsKICAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50Pihl
bGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTY3LDcgKzY3LDcgQEAgc3Rh
dGljIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoSlNIVE1M
RWxlbWVudCoganNIVE1MRWxlbWUKIAogSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTSFRNTEVsZW1lbnQqIGpzSFRNTEVsZW1lbnQpCiB7Ci0gICAgSFRNTEVs
ZW1lbnQmIGVsZW1lbnQgPSBqc0hUTUxFbGVtZW50LT5pbXBsKCk7CisgICAgSFRNTEVsZW1lbnQm
IGVsZW1lbnQgPSBqc0hUTUxFbGVtZW50LT53cmFwcGVkKCk7CiAgICAgaWYgKCFpczxIVE1MUGx1
Z0luRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNjUs
NyArMTY1LDcgQEAgQ2FsbFR5cGUgcGx1Z2luRWxlbWVudEdldENhbGxEYXRhKEpTSFRNTEVsZW1l
bnQqIGVsZW1lbnQsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICAgICAgcmV0dXJuIENhbGxUeXBl
SG9zdDsKICAgICB9CiAgICAgCi0gICAgSW5zdGFuY2UqIGluc3RhbmNlID0gcGx1Z2luSW5zdGFu
Y2UoZWxlbWVudC0+aW1wbCgpKTsKKyAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0
YW5jZShlbGVtZW50LT53cmFwcGVkKCkpOwogICAgIGlmICghaW5zdGFuY2UgfHwgIWluc3RhbmNl
LT5zdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSkKICAgICAgICAgcmV0dXJuIENhbGxUeXBl
Tm9uZTsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUGx1Z2luOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAK
aW5kZXggNWY4NjlhOTEyZTA2NmU0OWI1MmVlOGEwZjE0YmY2NDc1ZGEyYThhOC4uOTVhMGZiNzgy
NWNiMzA2YjA0OGJjNzgzY2ZmMWM2YjlhMTE3YjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3
IEBAIEpTVmFsdWUgSlNQb3BTdGF0ZUV2ZW50OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBQb3BTdGF0ZUV2
ZW50JiBldmVudCA9IGltcGwoKTsKKyAgICBQb3BTdGF0ZUV2ZW50JiBldmVudCA9IHdyYXBwZWQo
KTsKIAogICAgIGlmICghZXZlbnQuc3RhdGUoKS5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgLy8g
V2UgbmVlZCB0byBtYWtlIHN1cmUgYSBQb3BTdGF0ZUV2ZW50IGRvZXMgbm90IGxlYWsgb2JqZWN0
cyBpbiBpdHMgc3RhdGUgcHJvcGVydHkgYWNyb3NzIGlzb2xhdGVkIERPTSB3b3JsZHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3Vz
dG9tLmNwcAppbmRleCA5ZWY1ZTkzZWQxY2U1YWZhYmJkOWFkY2IwZGNiNmEzOGI0ZjRhZDExLi40
MGU1YjkwY2MyN2U4YzRlMTMzMDAyYjYyZDhhMTE4YTAxNzQ1N2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTUlRDU3RhdHNS
ZXNwb25zZTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBp
dGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93
TGlzdEN1c3RvbS5jcHAKaW5kZXggYjMzNjRkMjY0NTE0NTI2YjU3YmZlZTBlZDE4ZGY1ZDZkMDQw
YzgyNC4uM2VhZWYyNjEyNWJmYWI4ZjdkNTJhNTIxMzYwMmRmMGYzMWZlMjlhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwCkBAIC00NywxNyArNDcsMTcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJv
d0xpc3Q6Oml0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9Ci0gICAgaWYgKGluZGV4IDwgMCB8fCAodW5zaWduZWQpaW5kZXggPj0gaW1wbCgpLmxl
bmd0aCgpKSB7CisgICAgaWYgKGluZGV4IDwgMCB8fCAodW5zaWduZWQpaW5kZXggPj0gd3JhcHBl
ZCgpLmxlbmd0aCgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIElOREVYX1NJ
WkVfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CiAKLSAgICB1bnNp
Z25lZCBudW1Db2x1bW5zID0gaW1wbCgpLmNvbHVtbk5hbWVzKCkuc2l6ZSgpOworICAgIHVuc2ln
bmVkIG51bUNvbHVtbnMgPSB3cmFwcGVkKCkuY29sdW1uTmFtZXMoKS5zaXplKCk7CiAgICAgdW5z
aWduZWQgdmFsdWVzSW5kZXggPSBpbmRleCAqIG51bUNvbHVtbnM7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bUNvbHVtbnM7IGkrKykgewotICAgICAgICBjb25zdCBTUUxWYWx1ZSYg
dmFsdWUgPSBpbXBsKCkudmFsdWVzKClbdmFsdWVzSW5kZXggKyBpXTsKKyAgICAgICAgY29uc3Qg
U1FMVmFsdWUmIHZhbHVlID0gd3JhcHBlZCgpLnZhbHVlcygpW3ZhbHVlc0luZGV4ICsgaV07CiAg
ICAgICAgIEpTVmFsdWUganNWYWx1ZTsKIAogICAgICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkg
ewpAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShF
eGVjU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZzdGF0ZSwgaW1wbCgpLmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVlLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgd3JhcHBlZCgpLmNvbHVtbk5hbWVz
KClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAgIHJl
dHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NR
TFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4IDk1YThkZmNlODVhMzI2YmIzMTViMGRmMmJlZjFl
ODQ0MGJhMTUxZmYuLjc0MjEyNTZiMDQ2YThkNzI2OGUyMzY3ZGMyZTEzY2ZhYWMyMjQzMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25D
dXN0b20uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpl
eGVjdXRlU3FsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgaW1wbCgpLmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNh
bGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICB3cmFw
cGVkKCkuZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFz
ZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCmluZGV4IGI2ZjBjZjgzNjE1
ZjcxZTY1NTg4Y2UzZGUzZmNiYmFkZDE1YjZlZGUuLjY0ZTExMjg0NmY4N2UyNmJhNDVmNDAzMTMw
NjgzYzg0YjBiYWE3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1ZHTGVuZ3RoQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NW
R0xlbmd0aEN1c3RvbS5jcHAKQEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjp2YWx1ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewot
ICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAg
U1ZHTGVuZ3RoJiBwb2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQo
aW1wbCgpLmNvbnRleHRFbGVtZW50KCkpOworICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dCh3cmFwcGVkKCkuY29udGV4dEVsZW1lbnQoKSk7CiAgICAgZmxvYXQgdmFsdWUgPSBwb2RJ
bXAudmFsdWUobGVuZ3RoQ29udGV4dCwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSlNTVkdM
ZW5ndGg6OnZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIHZvaWQgSlNTVkdMZW5ndGg6
OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGlt
cGwoKS5pc1JlYWRPbmx5KCkpIHsKKyAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewog
ICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTcsMjcgKzU3LDI3IEBAIHZvaWQgSlNT
VkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdMZW5ndGgmIHBvZEltcCA9IGltcGwoKS5wcm9w
ZXJ0eVJlZmVyZW5jZSgpOworICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnByb3Bl
cnR5UmVmZXJlbmNlKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVkdMZW5n
dGhDb250ZXh0IGxlbmd0aENvbnRleHQoaW1wbCgpLmNvbnRleHRFbGVtZW50KCkpOworICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh3cmFwcGVkKCkuY29udGV4dEVsZW1lbnQoKSk7
CiAgICAgcG9kSW1wLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoJnN0YXRlKSwgbGVuZ3RoQ29udGV4
dCwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBl
Yyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbXBsKCkuY29tbWl0Q2hhbmdlKCk7
CisgICAgd3JhcHBlZCgpLmNvbW1pdENoYW5nZSgpOwogfQogCiBKU1ZhbHVlIEpTU1ZHTGVuZ3Ro
Ojpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIGlmIChp
bXBsKCkuaXNSZWFkT25seSgpKSB7CisgICAgaWYgKHdyYXBwZWQoKS5pc1JlYWRPbmx5KCkpIHsK
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgU1ZHTGVu
Z3RoJiBwb2RJbXAgPSBpbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICBTVkdMZW5ndGgm
IHBvZEltcCA9IHdyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogCiAgICAgaWYgKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CkBA
IC04NywxNCArODcsMTQgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVk
VW5pdHMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQoaW1wbCgpLmNvbnRleHRFbGVtZW50KCkpOworICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dCh3cmFwcGVkKCkuY29udGV4dEVsZW1lbnQoKSk7CiAgICAgcG9kSW1wLmNvbnZl
cnRUb1NwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCBsZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYg
KGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaW1wbCgpLmNvbW1pdENoYW5nZSgpOwor
ICAgIHdyYXBwZWQoKS5jb21taXRDaGFuZ2UoKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAK
aW5kZXggNTg1ZDcyNDdiNjFiYTA5MGQ0MWQwODYxNmU1MmYyNTEwZTNmNGQzZi4uYjg0MjM0YjE3
ZTViMWI0NjUxMGIwZWU1Y2UyMjU5YzIxMDlhYWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIGJvb2wgSlNT
dG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgU3RyaW5nIGl0ZW0gPSBpbXBsKCkuZ2V0SXRlbShwcm9wZXJ0eU5hbWVU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBlYyk7CisgICAgU3RyaW5nIGl0ZW0gPSB3cmFwcGVkKCku
Z2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIGlmIChpdGVtLmlzTnVsbCgpKQpAQCAtNjks
NyArNjksNyBAQCBib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgICAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHRoaXNPYmplY3QtPmltcGwoKS5yZW1vdmVJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKKyAgICB0aGlzT2JqZWN0LT53
cmFwcGVkKCkucmVtb3ZlSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTgzLDEyICs4MywxMiBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogewogICAgIEpTU3Rv
cmFnZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0b3JhZ2UqPihvYmplY3QpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmltcGwo
KS5sZW5ndGgoZWMpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5sZW5ndGgoZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmtleShpLCBlYykpKTsK
KyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkua2V5KGksIGVjKSkpOwogICAgICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1Zh
bHVlLCBlYyk7CisgICAgd3JhcHBlZCgpLnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRleCAwYTY5YTJlNmZkMjNjMjk4M2Y3OThmNGQw
NWYyNjE3MTcxYWY2MzQwLi5jYjkzOTdlZjdkMzFkOTZlMDY1YzAyZjRmNDkwN2M2MTRjM2U4MmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3Rv
bS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTU3R5
bGVTaGVldDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
eWxlU2hlZXQqIHN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCmluZGV4IGQxYzYwNjVhOTc1ODBmMjk3ZTZl
YzI0N2JmZmY4MTc0Yjg5OTU2YzEuLmM0MjIyYTllMzRhZjI2NTU1OGJlZWVlN2U4NTEyYzM1NjIx
MTVmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVl
dExpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVT
aGVldExpc3RDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgSlNTdHlsZVNoZWV0TGlz
dDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTCiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvKiBpdGVtID0gaW1wbCgpLmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvKiBpdGVtID0gd3JhcHBlZCgpLmdldE5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0
ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4IGY1YmE0ZDMwMjljZDY4OGY5
MzVlZmUzMGI3OWQ3OWJlMjIzNDdmMjkuLmE1MGY4Mzk5YmE1ODY0ZDAxYWIxMzBjOGZjZDUxZGU0
ZWJkZWU2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5
cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZUVuY3J5
cHQpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNh
Z2VzIGRvIG5vdCBpbmNsdWRlICdlbmNyeXB0JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3Vt
ZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2VuY3J5cHQn
IikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTIwNSw3ICsyMDUsNyBA
QCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpkZWNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93
cyhDcnlwdG9LZXlVc2FnZURlY3J5cHQpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
QVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdkZWNyeXB0JyIpKTsKKyAg
ICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8g
bm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IH0KQEAgLTI1Nyw3ICsyNTcsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpzaWduKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAg
ICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVNpZ24pKSB7Ci0gICAgICAgIGltcGwo
KS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdz
aWduJyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktl
eSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOwogICAgICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KQEAgLTMwOSw3ICszMDksNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp2
ZXJpZnkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlVmVyaWZ5KSkgewot
ICAgICAgICBpbXBsKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBu
b3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBB
U0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3ZlcmlmeSciKSk7CiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtNjQ2LDcgKzY0Niw3IEBAIEpTVmFsdWUg
SlNTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIXdyYXBwaW5nS2V5LT5hbGxvd3Mo
Q3J5cHRvS2V5VXNhZ2VXcmFwS2V5KSkgewotICAgICAgICBpbXBsKCkuZG9jdW1lbnQoKS0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnd3JhcEtleSciKSk7CisgICAg
ICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5v
dCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
Tk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CkBAIC03MjgsNyArNzI4LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwog
CiAgICAgaWYgKCF1bndyYXBwaW5nS2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkp
KSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2Vz
IGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndW53cmFwS2V5
JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKaW5kZXggNTdmODhi
OTU1Y2Y1ODUxODhjMmE2YmVlNGRmNzc0ZjRmMjk1MWJlZi4uZGViNDQwYjNhYmVhYjdiOGZlNDIy
MGI3YmFhZDEwMjIwYTQ5N2I4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBib29sIEpTVGV4dFRyYWNrQ3VlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganND
YXN0PEpTVGV4dFRyYWNrQ3VlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIFRleHRU
cmFja0N1ZSYgdGV4dFRyYWNrQ3VlID0ganNUZXh0VHJhY2tDdWUtPmltcGwoKTsKKyAgICBUZXh0
VHJhY2tDdWUmIHRleHRUcmFja0N1ZSA9IGpzVGV4dFRyYWNrQ3VlLT53cmFwcGVkKCk7CiAKICAg
ICAvLyBJZiB0aGUgY3VlIGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlz
IHJlYWNoYWJsZSBiZWNhdXNlCiAgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9y
IG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgpAQCAtODQsNyArODQsNyBAQCBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGV4dFRy
YWNrQ3VlKiBjdWUpCiAKIHZvaWQgSlNUZXh0VHJhY2tDdWU6OnZpc2l0QWRkaXRpb25hbENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChUZXh0VHJhY2sqIHRleHRUcmFj
ayA9IGltcGwoKS50cmFjaygpKQorICAgIGlmIChUZXh0VHJhY2sqIHRleHRUcmFjayA9IHdyYXBw
ZWQoKS50cmFjaygpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0ZXh0VHJh
Y2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tD
dXN0b20uY3BwCmluZGV4IGViMTlmMjU3ODcxOTlmMWU3MGU5OWFmN2FkMmZiMDQyN2NlOWY3NWQu
LjdmY2U2YWQyYWU1ZDRmMWUxYjMxMjA3ODk1NWVhMGY2ODQwYWNlZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTVGV4dFRyYWNrOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qo
JndyYXBwZWQoKSkpOwogfQogCiB2b2lkIEpTVGV4dFRyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6
OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJp
bmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRLaW5kKHN0
cmluZyk7CisgICAgd3JhcHBlZCgpLnNldEtpbmQoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIEpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
Ci0gICAgaW1wbCgpLnNldExhbmd1YWdlKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldExhbmd1
YWdlKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0xpc3RDdXN0b20uY3BwCmluZGV4IGUxYjhjNjMwOTkyNjFkMWYyYjlmNWU3YTRmZjVk
YjY1MmE5MGE4NTQuLjNmNDZmNDMzMWJiYmU2NjgxMjc3MTE0ZmIzYjQyZjI0YmZlOWNkMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3Vz
dG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNU
ZXh0VHJhY2tMaXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS5lbGVtZW50
KCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuZWxlbWVudCgp
KSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCmluZGV4IDk3NTE0NjcyNGRiMDI2OTA1NDQ0NTg5
YWRkOTJmNDFiYjQ1MzA4YzUuLjlhOTQzNmFmODA5YWNmYWI2ZGM1MDk4ODY4YzZlNTk2ZjgwZGY4
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCkBA
IC00NCwxMSArNDQsMTEgQEAgVHJhY2tCYXNlKiB0b1RyYWNrKEpTVmFsdWUgdmFsdWUpCiAKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmlu
aGVyaXRzKEpTVGV4dFRyYWNrOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU1Rl
eHRUcmFjayo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNUZXh0
VHJhY2sqPihvYmplY3QpLT53cmFwcGVkKCk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNB
dWRpb1RyYWNrOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0F1ZGlvVHJhY2sq
PihvYmplY3QpLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmanNDYXN0PEpTQXVkaW9UcmFjayo+
KG9iamVjdCktPndyYXBwZWQoKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU1ZpZGVvVHJh
Y2s6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTVmlkZW9UcmFjayo+KG9iamVj
dCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4ob2JqZWN0
KS0+d3JhcHBlZCgpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcAppbmRleCBmNTFkM2I5NjNjODE4MDNj
ZmU3MWI5NDdiNDJjOWRiZDAyYmI4NWJlLi5lYWI2ZmYyMTM4YzUzZDdlM2ZlYjY0NDliMDZkNzFi
M2RmMmU1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNr
RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tF
dmVudEN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBK
U1ZhbHVlIEpTVHJhY2tFdmVudDo6dHJhY2soRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAg
ICBUcmFja0Jhc2UqIHRyYWNrID0gaW1wbCgpLnRyYWNrKCk7CisgICAgVHJhY2tCYXNlKiB0cmFj
ayA9IHdyYXBwZWQoKS50cmFjaygpOwogICAgIGlmICghdHJhY2spCiAgICAgICAgIHJldHVybiBq
c051bGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVl
V2Fsa2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtl
ckN1c3RvbS5jcHAKaW5kZXggYzFlNjgxZDQ5N2I0NGMwYjQ4ZTM3YTdmZWEwODFiMTJkMGZjMzVk
Ny4uMmJlMDhhOTkxZjdkZDE0ZWY5YTJhNjJkMThmMzFkOWNmMTcxNTNlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCkBAIC0yNyw3
ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYg
KE5vZGVGaWx0ZXIqIGZpbHRlciA9IGltcGwoKS5maWx0ZXIoKSkKKyAgICBpZiAoTm9kZUZpbHRl
ciogZmlsdGVyID0gd3JhcHBlZCgpLmZpbHRlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QoZmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAK
aW5kZXggOGZjNmVmOGZiMzBkMjBiMzliZDA5OGUyZjE5MzA1OTJmZjQyOGFmYi4uYWRmNDkzNjQ3
M2I0MjNkYzEyZGVjN2FkODBkYmY3MjBhYjNlYTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2VDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ym9vbCBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIGlmIChVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSBp
bXBsKCkuaGFuZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBn
bG9iYWxPYmplY3QoKS0+d29ybGQoKSkpIHsKKyAgICBpZiAoVXNlck1lc3NhZ2VIYW5kbGVyKiBo
YW5kbGVyID0gd3JhcHBlZCgpLmhhbmRsZXIocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkpKSB7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpcywgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0KCksIGhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAK
aW5kZXggNmYwYWY1YWY1YThlYTFlMWVhN2U1ZmUxOTFlMGM4MDdjMjA0MWU5MC4uZDgyOGUxMmZh
MGM2MmUwODNiMDM2YjljNzQzZjA0MGU0YzY3ZjhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1ZpZGVvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBl
ZCgpKSk7CiB9CiAKIHZvaWQgSlNWaWRlb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNWaWRlb1RyYWNrOjpzZXRL
aW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0g
dmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0S2luZChzdHJpbmcp
OworICAgIHdyYXBwZWQoKS5zZXRLaW5kKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU5LDcgKzU5LDcgQEAgdm9p
ZCBKU1ZpZGVvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCiAgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0
YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBpbXBsKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uo
c3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tMaXN0Q3VzdG9tLmNwcAppbmRleCA2NmQ3YmVhM2UwMGUwZGUzYWYwMTgxNWRhNmI5MjFk
ZWRkYmMxMzE0Li5hMmEzNjE4NGE0ZWVkNDk1NTI5NWExZTU4NzdiOWRlNDAxZTY2MzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3Vz
dG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNW
aWRlb1RyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkp
OworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5k
ZXggOTlmZjcwM2M0NjQ5YTYzMDRlNjg4YmZkYTAxZTZmOGIxMGZjZjQ2Yi4uN2M0ZWMwODE4Nzgx
Yzg3MjFlY2ZiZDc1NTBmZDYxNjgxYmYyYTExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHCiAKIHZvaWQgSlNXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJmltcGwoKSk7CisgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KCZ3cmFwcGVkKCkpOwogfQogCiBKU1ZhbHVlIEpTV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVj
KQpAQCAtOTksNyArOTksNyBAQCBKU1ZhbHVlIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
SW5kZXhlZFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSAhPSAyKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAKLSAgICBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlQ3VzdG9tLmNwcAppbmRleCA0ZTRlNWNhOThmYzE0OTAyYTJjYzAwMGI2YWIwNjM4OTBhMjFi
MTY1Li44MzFjZjU5MWVkN2QwOGU5YTA4ZTE2NDJhOTVhMzFjNDY2MWZkYmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgSlNWYWx1
ZSBnZXRPYmplY3RQYXJhbWV0ZXIoSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBvYmosIEV4
ZWNTdGF0ZSYgcwogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSBvYmotPmltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
ID0gb2JqLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgc3Rh
dGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFdlYkdMRXh0ZW4KIAogdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
JndyYXBwZWQoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKQEAgLTI3Myw3ICsyNzMsNyBAQCBK
U1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAg
ICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CkBAIC0yOTYsNyArMjk2LDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEV4dGVuc2lvbihFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAg
IAotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBjb25z
dCBTdHJpbmcgbmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMxNSw3ICszMTUsNyBAQCBKU1ZhbHVlIEpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEV4ZWNTdGF0ZQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdy
YXBwZWQoKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMzOSw3ICszMzksNyBAQCBKU1ZhbHVlIEpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsK
KyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAg
IHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmc3Rh
dGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CkBAIC0zNTcsNyArMzU3LDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAg
cmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKQEAgLTM4Myw3ICszODMsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmICgh
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkuaW5oZXJpdHMoSlNXZWJHTFNoYWRlcjo6aW5mbygpKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAgICAgV2ViR0xTaGFkZXIqIHNo
YWRlciA9IEpTV2ViR0xTaGFkZXI6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CkBAIC00MDAsNyArNDAwLDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFNoYWRlclBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyhFeGVjU3RhdGUm
IHN0YXRlKQogewotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBs
KCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsK
ICAgICBpZiAoY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKICAgICBWZWN0b3I8U3RyaW5nPiB2YWx1ZSA9IGNvbnRleHQuZ2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucygpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRVbmlmb3JtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNV
bmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CkBAIC02OTEsNzcgKzY5MSw3NyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1h
dHJpeChEYXRhRnVuY3Rpb25NYXRyaXhUb0NhbGwgZiwgSlNDOjpFeGVjU3RhdAogCiBKU0M6OkpT
VmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0xdiwgc3Rh
dGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtMXYsIHN0YXRl
LCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWl2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0
YUZ1bmN0aW9uaShmX3VuaWZvcm0xdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFG
dW5jdGlvbmkoZl91bmlmb3JtMXYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0ydiwgc3RhdGUs
IGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtMnYsIHN0YXRlLCB3
cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtMml2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1
bmN0aW9uaShmX3VuaWZvcm0ydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5j
dGlvbmkoZl91bmlmb3JtMnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0zdiwgc3RhdGUsIGlt
cGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtM3YsIHN0YXRlLCB3cmFw
cGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtM2l2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0
aW9uaShmX3VuaWZvcm0zdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlv
bmkoZl91bmlmb3JtM3YsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm00diwgc3RhdGUsIGltcGwo
KSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtNHYsIHN0YXRlLCB3cmFwcGVk
KCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtNGl2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9u
aShmX3VuaWZvcm00diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmko
Zl91bmlmb3JtNHYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJm
diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZv
cm1NYXRyaXgyZnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNm
diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZv
cm1NYXRyaXgzZnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDRm
diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZv
cm1NYXRyaXg0ZnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMXYsIHN0YXRl
LCBpbXBsKCkpOworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMXYsIHN0
YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2ZXJ0ZXhBdHRyaWIyZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJl
dHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMnYsIHN0YXRlLCBpbXBsKCkpOworICAg
IHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMnYsIHN0YXRlLCB3cmFwcGVkKCkp
OwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhB
dHRyaWIzZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rp
b25mKGZfdmVydGV4QXR0cmliM3YsIHN0YXRlLCBpbXBsKCkpOworICAgIHJldHVybiBkYXRhRnVu
Y3Rpb25mKGZfdmVydGV4QXR0cmliM3YsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpT
VmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0
cmliNHYsIHN0YXRlLCBpbXBsKCkpOworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4
QXR0cmliNHYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYjZkMzlhYzA3MGY1OTc3Mzc4OTg5MTI5OWRk
ZTAwMjM1NzI1ODBkMi4uZWRlNWJiOTdhODY4YTQyMWYzNTc5ZjQ4N2Y3NTk5ZGM4NzRlNTg2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBwZWQoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ3VzdG9tLmNwcAppbmRleCAwNWE5ZTcwMmU3YzgxOWJmN2I3NTFkOWJlNzdjMTEyYmUz
NTk0ZmIzLi4wZWZiZDEyZjAzMzQ5NmVjM2NlMmNkMDZmMTkxN2I2ZjFmZDNlYmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjpwb3N0
TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RN
ZXNzYWdlKHN0YXRlLCAmaW1wbCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3Rh
dGUsICZ3cmFwcGVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTU3LDcgKzU3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKIAogICAgIC8vIFNlZSBz
ZWN0aW9uIDQuOC4yIHN0ZXAgMTQgb2YgV2ViV29ya2VycyBmb3Igd2h5IHRoaXMgaXMgdGhlIGxl
eGljYWxHbG9iYWxPYmplY3QuIAotICAgIERPTVdpbmRvdyYgd2luZG93ID0gYXNKU0RPTVdpbmRv
dyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CisgICAgRE9NV2luZG93JiB3
aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBw
ZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIEFTU0VSVCh3aW5kb3cuZG9j
dW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggYWNkNjE3ZTg2OTg5MjkwNzUzNzZlNTgzMmFiMjgz
ZjJkMmZhNzkwMC4uNThkYTc1ZThlNzMyOTQ5NTlkZTFiYTYzNzY3M2IzYzc4ODUyZjhjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZQogCiBK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYg
dm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2Nv
cGU+IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmbm9ybWFs
V29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKLSAgICAsIG1faW1wbChpbXBs
KQorICAgICwgbV93cmFwcGVkKGltcGwpCiB7CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbXBsLmdldCgpOworICAgIHJldHVybiBt
X3dyYXBwZWQuZ2V0KCk7CiB9CiAKIGJvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OmFsbG93
c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmgKaW5kZXggMDMxNTMwZWU1ODYxMzlmYzVhYjZmOGI4ODUxNGI1ODQ4MTFjNzJkZS4u
MmRlOGNjNGZhMDY4ZWQzNDQyMDZmMTAwOGI0Y2E2YTdlNmI3NjliZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCkBAIC00
Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBERUNMQVJFX0lORk87
CiAKLSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9p
bXBsOyB9CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1
cm4gKm1fd3JhcHBlZDsgfQogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gbV9pbXBsOwor
ICAgICAgICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fd3JhcHBlZDsKICAgICB9OwogCiAg
ICAgLy8gUmV0dXJucyBhIEpTV29ya2VyR2xvYmFsU2NvcGUgb3IganNOdWxsKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3Rv
bS5jcHAKaW5kZXggMTI4OThjYzk3NWJlZjUwMGIzYjEwZGJhZjFmNjUwYTg2ZGMzYzMwMi4uYTk0
NTc3MzJkMjI4Y2ZhOWFjYTgwMzU1ZmUzZjQyZDdkZmExNTlhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAK
QEAgLTUzLDkgKzUzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSBpbXBsKCkub3B0aW9uYWxMb2Nh
dGlvbigpKQorICAgIGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSB3cmFwcGVkKCkub3B0
aW9uYWxMb2NhdGlvbigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobG9jYXRpb24p
OwotICAgIGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IGltcGwoKS5vcHRpb25hbE5h
dmlnYXRvcigpKQorICAgIGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IHdyYXBwZWQo
KS5vcHRpb25hbE5hdmlnYXRvcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobmF2
aWdhdG9yKTsKIH0KIApAQCAtODAsMzEgKzgwLDMxIEBAIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxT
Y29wZTo6aW1wb3J0U2NyaXB0cyhFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKIAotICAgIGltcGwoKS5pbXBvcnRTY3JpcHRzKHVybHMsIGVjKTsKKyAg
ICB3cmFwcGVkKCkuaW1wb3J0U2NyaXB0cyh1cmxzLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpT
V29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246
OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBpbXBsKCkuY29udGVudFNl
Y3VyaXR5UG9saWN5KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFj
dGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndv
cmxkKCksIHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAo
IWFjdGlvbikKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogICAgIGludCBkZWxheSA9IHN0
YXRlLmFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKLSAgICByZXR1cm4ganNOdW1iZXIoaW1w
bCgpLnNldFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CisgICAgcmV0dXJuIGpz
TnVtYmVyKHdyYXBwZWQoKS5zZXRUaW1lb3V0KFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOwog
fQogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0g
U2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwg
aW1wbCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGds
b2JhbE9iamVjdCgpLT53b3JsZCgpLCB3cmFwcGVkKCkuY29udGVudFNlY3VyaXR5UG9saWN5KCkp
OwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgaWYgKCFhY3Rpb24pCiAgICAgICAgIHJldHVybiBqc051bWJlcigwKTsKICAg
ICBpbnQgZGVsYXkgPSBzdGF0ZS5hcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7Ci0gICAgcmV0
dXJuIGpzTnVtYmVyKGltcGwoKS5zZXRJbnRlcnZhbChXVEY6Om1vdmUoYWN0aW9uKSwgZGVsYXkp
KTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNldEludGVydmFsKFdURjo6bW92ZShh
Y3Rpb24pLCBkZWxheSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmlu
ZGV4IDkxNWIwNjI4NzQwZTc3ZWEwZGE3MGE3ZmJiZWNkYjcxODBjYmE2YmQuLjg5YjNiY2ZiYjJj
NjRiMmUzYjhlZjFiZjhmNjM3OTZkNmI4YjI0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC01OCwxNiArNTgs
MTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChYTUxI
dHRwUmVxdWVzdFVwbG9hZCogdXBsb2FkID0gaW1wbCgpLm9wdGlvbmFsVXBsb2FkKCkpCisgICAg
aWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB3cmFwcGVkKCkub3B0aW9uYWxVcGxv
YWQoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHVwbG9hZCk7CiAKLSAgICBpZiAo
RG9jdW1lbnQqIHJlc3BvbnNlRG9jdW1lbnQgPSBpbXBsKCkub3B0aW9uYWxSZXNwb25zZVhNTCgp
KQorICAgIGlmIChEb2N1bWVudCogcmVzcG9uc2VEb2N1bWVudCA9IHdyYXBwZWQoKS5vcHRpb25h
bFJlc3BvbnNlWE1MKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZURv
Y3VtZW50KTsKIAotICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9IGlt
cGwoKS5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKKyAgICBpZiAoQXJyYXlCdWZmZXIq
IHJlc3BvbnNlQXJyYXlCdWZmZXIgPSB3cmFwcGVkKCkub3B0aW9uYWxSZXNwb25zZUFycmF5QnVm
ZmVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZUFycmF5QnVmZmVy
KTsKIAotICAgIGlmIChCbG9iKiByZXNwb25zZUJsb2IgPSBpbXBsKCkub3B0aW9uYWxSZXNwb25z
ZUJsb2IoKSkKKyAgICBpZiAoQmxvYiogcmVzcG9uc2VCbG9iID0gd3JhcHBlZCgpLm9wdGlvbmFs
UmVzcG9uc2VCbG9iKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZUJs
b2IpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6b3Bl
bihFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKQog
ICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCi0gICAgY29uc3QgVVJMJiB1cmwgPSBp
bXBsKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKKyAgICBjb25z
dCBVUkwmIHVybCA9IHdyYXBwZWQoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRl
VVJMKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZz
dGF0ZSkpOwogICAgIFN0cmluZyBtZXRob2QgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CkBAIC04OCwxMyArODgsMTMgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgICAgIGlmICghc3RhdGUuYXJndW1lbnQoNCkuaXNV
bmRlZmluZWQoKSkgewogICAgICAgICAgICAgICAgIFN0cmluZyBwYXNzd29yZCA9IHZhbHVlVG9T
dHJpbmdXaXRoTnVsbENoZWNrKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoNCkpOwot
ICAgICAgICAgICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFz
c3dvcmQsIGVjKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVkKCkub3BlbihtZXRob2QsIHVybCwg
YXN5bmMsIHVzZXIsIHBhc3N3b3JkLCBlYyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBpbXBsKCkub3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIGVjKTsKKyAgICAg
ICAgICAgICAgICB3cmFwcGVkKCkub3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIGVjKTsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpbXBsKCkub3BlbihtZXRob2QsIHVybCwgYXN5
bmMsIGVjKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywg
ZWMpOwogICAgIH0gZWxzZQotICAgICAgICBpbXBsKCkub3BlbihtZXRob2QsIHVybCwgZWMpOwor
ICAgICAgICB3cmFwcGVkKCkub3BlbihtZXRob2QsIHVybCwgZWMpOwogCiAgICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTM4LDMw
ICsxMzgsMzAgQEAgcHJpdmF0ZToKIAogSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0KGltcGwoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGltcGwoKS51
cmwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1
ZXN0KHdyYXBwZWQoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHdyYXBwZWQoKS51cmwoKSk7
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBKU1ZhbHVlIHZhbCA9IHN0YXRlLmFy
Z3VtZW50KDApOwogICAgIGlmICh2YWwuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgaW1w
bCgpLnNlbmQoZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZChlYyk7CiAgICAgZWxzZSBpZiAo
dmFsLmluaGVyaXRzKEpTRG9jdW1lbnQ6OmluZm8oKSkpCi0gICAgICAgIGltcGwoKS5zZW5kKEpT
RG9jdW1lbnQ6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKEpT
RG9jdW1lbnQ6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRz
KEpTQmxvYjo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoSlNCbG9iOjp0b1dyYXBwZWQo
dmFsKSwgZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZChKU0Jsb2I6OnRvV3JhcHBlZCh2YWwp
LCBlYyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTRE9NRm9ybURhdGE6OmluZm8oKSkp
Ci0gICAgICAgIGltcGwoKS5zZW5kKEpTRE9NRm9ybURhdGE6OnRvV3JhcHBlZCh2YWwpLCBlYyk7
CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKEpTRE9NRm9ybURhdGE6OnRvV3JhcHBlZCh2YWwpLCBl
Yyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTQXJyYXlCdWZmZXI6OmluZm8oKSkpCi0g
ICAgICAgIGltcGwoKS5zZW5kKHRvQXJyYXlCdWZmZXIodmFsKSwgZWMpOworICAgICAgICB3cmFw
cGVkKCkuc2VuZCh0b0FycmF5QnVmZmVyKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5o
ZXJpdHMoSlNBcnJheUJ1ZmZlclZpZXc6OmluZm8oKSkpIHsKICAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gdmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbCk7Ci0gICAgICAgIGltcGwo
KS5zZW5kKHZpZXcuZ2V0KCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQodmlldy5nZXQo
KSwgZWMpOwogICAgIH0gZWxzZQotICAgICAgICBpbXBsKCkuc2VuZCh2YWwudG9TdHJpbmcoJnN0
YXRlKS0+dmFsdWUoJnN0YXRlKSwgZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZCh2YWwudG9T
dHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSwgZWMpOwogCiAgICAgU2VuZEZ1bmN0b3IgZnVu
Y3RvcjsKICAgICBzdGF0ZS5pdGVyYXRlKGZ1bmN0b3IpOwotICAgIGltcGwoKS5zZXRMYXN0U2Vu
ZExpbmVBbmRDb2x1bW5OdW1iZXIoZnVuY3Rvci5saW5lKCksIGZ1bmN0b3IuY29sdW1uKCkpOwot
ICAgIGltcGwoKS5zZXRMYXN0U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKKyAgICB3cmFwcGVkKCku
c2V0TGFzdFNlbmRMaW5lQW5kQ29sdW1uTnVtYmVyKGZ1bmN0b3IubGluZSgpLCBmdW5jdG9yLmNv
bHVtbigpKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFzdFNlbmRVUkwoZnVuY3Rvci51cmwoKSk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChF
eGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQo
RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBTdHJpbmcgdGV4dCA9IGltcGwoKS5yZXNwb25zZVRleHQoZWMpOworICAgIFN0cmluZyB0ZXh0
ID0gd3JhcHBlZCgpLnJlc3BvbnNlVGV4dChlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CkBAIC0xODAsMjUgKzE4MCwyNSBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNl
VGV4dChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0Ojpy
ZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBVc2UgQ2Fj
aGVkQXR0cmlidXRlIGZvciBvdGhlciB0eXBlcyB0aGFuIEpTT04gYXMgd2VsbC4KLSAgICBpZiAo
bV9yZXNwb25zZSAmJiBpbXBsKCkucmVzcG9uc2VDYWNoZUlzVmFsaWQoKSkKKyAgICBpZiAobV9y
ZXNwb25zZSAmJiB3cmFwcGVkKCkucmVzcG9uc2VDYWNoZUlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG1fcmVzcG9uc2UuZ2V0KCk7CiAKLSAgICBpZiAoIWltcGwoKS5kb25lV2l0aG91dEVycm9y
cygpICYmIGltcGwoKS5yZXNwb25zZVR5cGVDb2RlKCkgPiBYTUxIdHRwUmVxdWVzdDo6UmVzcG9u
c2VUeXBlVGV4dCkKKyAgICBpZiAoIXdyYXBwZWQoKS5kb25lV2l0aG91dEVycm9ycygpICYmIHdy
YXBwZWQoKS5yZXNwb25zZVR5cGVDb2RlKCkgPiBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBl
VGV4dCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgc3dpdGNoIChpbXBsKCkucmVz
cG9uc2VUeXBlQ29kZSgpKSB7CisgICAgc3dpdGNoICh3cmFwcGVkKCkucmVzcG9uc2VUeXBlQ29k
ZSgpKSB7CiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlRGVmYXVsdDoKICAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0OgogICAgICAgICByZXR1cm4g
cmVzcG9uc2VUZXh0KHN0YXRlKTsKIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNl
VHlwZUpTT046CiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU09OUGFy
c2UoJnN0YXRlLCBpbXBsKCkucmVzcG9uc2VUZXh0SWdub3JpbmdSZXNwb25zZVR5cGUoKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNPTlBhcnNlKCZzdGF0ZSwgd3JhcHBlZCgpLnJl
c3BvbnNlVGV4dElnbm9yaW5nUmVzcG9uc2VUeXBlKCkpOwogICAgICAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVsbCgpOwogICAgICAgICAgICAgbV9yZXNw
b25zZS5zZXQoc3RhdGUudm0oKSwgdGhpcywgdmFsdWUpOwogCi0gICAgICAgICAgICBpbXBsKCku
ZGlkQ2FjaGVSZXNwb25zZUpTT04oKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5kaWRDYWNoZVJl
c3BvbnNlSlNPTigpOwogCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KQEAg
LTIwNiw3ICsyMDYsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBl
RG9jdW1lbnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgpLnJlc3BvbnNlWE1MKGVjKTsK
KyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdyYXBwZWQoKS5yZXNwb25zZVhNTChl
Yyk7CiAgICAgICAgICAgICBpZiAoZWMpIHsKICAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBA
IC0yMTUsMTAgKzIxNSwxMCBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4
ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIH0KIAogICAgIGNhc2UgWE1MSHR0cFJlcXVl
c3Q6OlJlc3BvbnNlVHlwZUJsb2I6Ci0gICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFs
T2JqZWN0KCksIGltcGwoKS5yZXNwb25zZUJsb2IoKSk7CisgICAgICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5yZXNwb25zZUJsb2IoKSk7CiAKICAgICBj
YXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVBcnJheUJ1ZmZlcjoKLSAgICAgICAgcmV0
dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLnJlc3BvbnNlQXJyYXlCdWZm
ZXIoKSk7CisgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBw
ZWQoKS5yZXNwb25zZUFycmF5QnVmZmVyKCkpOwogICAgIH0KIAogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0aFJl
c3VsdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0
Q3VzdG9tLmNwcAppbmRleCAyNDE2ZDY3OTA4MTM5MTNmMTNlYzBhNTE5YzVmMTA4NmMyNjM1ODU2
Li41ZDM0ODZlODU5YzY0MjU2Njc3Y2Q4N2JjYWJmYzdiNmExNjAzNDMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNYUGF0aFJlc3VsdDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBh
dXRvJiB2YWx1ZSA9IGltcGwoKS52YWx1ZSgpOworICAgIGF1dG8mIHZhbHVlID0gd3JhcHBlZCgp
LnZhbHVlKCk7CiAgICAgaWYgKHZhbHVlLmlzTm9kZVNldCgpKSB7CiAgICAgICAgIGZvciAoYXV0
byYgbm9kZSA6IHZhbHVlLnRvTm9kZVNldCgpKQogICAgICAgICAgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3Qobm9kZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXggMzMxYjlmMWIwYmJmNTc5YWM0
NTJkMDdlZGMxYjlmNjU4ZmNmNjE1Zi4uMTUyYjg3MzcwMGI5YTBkYzQ2OGNjMDNmYjA5ZTFhNDMy
NGRjNzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJv
Y2Vzc29yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQ
cm9jZXNzb3JDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vz
c29yOjpzZXRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBTdHJpbmcgbmFtZXNwYWNl
VVJJID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUo
JnN0YXRlKTsKICAgICBTdHJpbmcgbG9jYWxOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBTdHJpbmcgdmFsdWUgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
OwotICAgIGltcGwoKS5zZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVl
KTsKKyAgICB3cmFwcGVkKCkuc2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCB2
YWx1ZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTYzLDcgKzYzLDcgQEAg
SlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0g
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRl
KTsKICAgICBTdHJpbmcgbG9jYWxOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9T
dHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKLSAgICBTdHJpbmcgdmFsdWUgPSBpbXBsKCku
Z2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKKyAgICBTdHJpbmcgdmFsdWUg
PSB3cmFwcGVkKCkuZ2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKICAgICBy
ZXR1cm4ganNTdHJpbmdPclVuZGVmaW5lZCgmc3RhdGUsIHZhbHVlKTsKIH0KIApAQCAtNzMsNyAr
NzMsNyBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFN0cmluZyBuYW1l
c3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIGltcGwoKS5yZW1v
dmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOworICAgIHdyYXBwZWQoKS5yZW1v
dmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAppbmRleCAwNThjOTFjOTI0NGE1YzgwYWU5ZThmMGZiNjRhZTBhODQ2YTNkNWQzLi5m
ZWJkMjkwMGU2MjVlN2NlMzZmYzcyOTMzN2E0OTJiODM5NmQ1ZDVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
aWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUg
PSB3aW5kb3ctPmltcGwoKS5mcmFtZSgpOworICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSB3aW5k
b3ctPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5zY3JpcHQo
KS5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5jcHAKaW5kZXggMDQzMGJhN2ZkNTNjYWMyYzU0MmU4NjMyMDRkYWJhYzVmYTBiYWYx
NS4uMWNjY2Y4YWYyMTAwZjA3ZjUwNWZlNjdiZmMwMGI1OTQ0ODk5NDE4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1l
JiBmcmFtZSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT52bSgp
LCB3aW5kb3cpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIERPTVdpbmRvdyogZG9tV2lu
ZG93ID0gZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7Ci0gICAgICAgICAgICBpZiAoJndp
bmRvd1NoZWxsLT53aW5kb3coKS0+aW1wbCgpID09IGRvbVdpbmRvdykKKyAgICAgICAgICAgIGlm
ICgmd2luZG93U2hlbGwtPndpbmRvdygpLT53cmFwcGVkKCkgPT0gZG9tV2luZG93KQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2luZG93
KGRvbVdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IGIxNjFlNjZmOGQ5MmM4MGM0ZmM4YjJiNzI2YmMyNDg2NTdkZDUyZDku
LjYyOWM0MjEzYWU4ZmExYjZlOWQyNmRlMDAzZmY0ZTEwYjY2ZTlhNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMDgsNyArMjA4
LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKERPTVdpbmRvdyog
bmV3RE9NV2luZG93LCBib29sIGdvaW5nSW50b1AKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHdpbmRvd1NoZWxscy5zaXplKCk7ICsraSkgewogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3
aW5kb3dTaGVsbCA9IHdpbmRvd1NoZWxsc1tpXS5nZXQoKTsKIAotICAgICAgICBpZiAoJndpbmRv
d1NoZWxsLT53aW5kb3coKS0+aW1wbCgpID09IG5ld0RPTVdpbmRvdykKKyAgICAgICAgaWYgKCZ3
aW5kb3dTaGVsbC0+d2luZG93KCktPndyYXBwZWQoKSA9PSBuZXdET01XaW5kb3cpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBDbGVhciB0aGUgZGVidWdnZXIgYW5kIGNvbnNv
bGUgZnJvbSB0aGUgY3VycmVudCB3aW5kb3cgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyB3aW5kb3cu
CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0
ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPEpTQzo6RXhlY1N0YXRlKiwKIHsKICAgICBmb3Ig
KFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVnaW4oKTsgaXRlciAh
PSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gaXRlci0+dmFsdWUtPndpbmRvdygpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBpdGVyLT52YWx1ZS0+d2luZG93KCktPmltcGwoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2lu
ID0gaXRlci0+dmFsdWUtPndpbmRvdygpLT53cmFwcGVkKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUq
LCBTZWN1cml0eU9yaWdpbio+KGV4ZWMsIG9yaWdpbikpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCA3MzJjN2NjNjllNGMyZjU1MDlm
ZDYwMGNiZjlkYWM0MjI0MmJiZjQ5Li4zMDA3ZWJhMDU4OGRiYTFhOWYyYzhiZWI4NDZhZDA5OTYw
ODAzZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIERPTVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2Jh
bE9iamVjdC0+aW5oZXJpdHMoSlNET01XaW5kb3dCYXNlOjppbmZvKCkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJkpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGds
b2JhbE9iamVjdCktPmltcGwoKTsKKyAgICByZXR1cm4gJkpTQzo6anNDYXN0PEpTRE9NV2luZG93
QmFzZSo+KGdsb2JhbE9iamVjdCktPndyYXBwZWQoKTsKIH0KIAogRnJhbWUqIGZyYW1lRnJvbUV4
ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tCmluZGV4IDYzZjZiNTUyZDA0Yjk1OTRiZjFlMzI5NTNjZTUxZGJmZDk4OGM5ODgu
LjQzNTJlYjRlMGViOGE5ZGQzNDgyNGNiYTM4MzU5NGJiYmUyMjc4M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NLm1tCkBAIC01NzEsNyArNTcxLDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0
PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIGlmICghb2JqZWN0
LT5pbmhlcml0cyhKU05vZGU6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBX
ZWJDb3JlOjpOb2RlJiBub2RlID0ganNDYXN0PEpTTm9kZSo+KG9iamVjdCktPmltcGwoKTsKKyAg
ICBXZWJDb3JlOjpOb2RlJiBub2RlID0ganNDYXN0PEpTTm9kZSo+KG9iamVjdCktPndyYXBwZWQo
KTsKICAgICByZXR1cm4ga2l0KCZub2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01VdGlsaXR5Lm1tCmluZGV4IGZiMTdmMGQzZDg2YjEwZGE1ODA4ZDE4OGNlYzkwNGMw
OTg2Mjc5YTEuLjFjM2M3Y2ZlZTI1M2QwNzU4ZDU0YjM4NDljZmY0YjNlNWNmNzMzNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVXRpbGl0eS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW0KQEAgLTkxLDcgKzkxLDcg
QEAgc3RhdGljIGlubGluZSBpZCBjcmVhdGVET01XcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9iamVj
dCkKIHsKICAgICAjZGVmaW5lIFdSQVAoY2xhc3NOYW1lKSBcCiAgICAgICAgIGlmIChvYmplY3Qt
PmluaGVyaXRzKFdlYkNvcmU6OkpTIyNjbGFzc05hbWU6OmluZm8oKSkpIFwKLSAgICAgICAgICAg
IHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpTIyNjbGFzc05hbWUqPihvYmplY3Qp
LT5pbXBsKCkpOworICAgICAgICAgICAgcmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SlMjI2NsYXNzTmFtZSo+KG9iamVjdCktPndyYXBwZWQoKSk7CiAKICAgICBXUkFQKENTU1J1bGUp
CiAgICAgV1JBUChDU1NSdWxlTGlzdCkKQEAgLTEyMSwxMCArMTIxLDEwIEBAIHN0YXRpYyBpbmxp
bmUgaWQgY3JlYXRlRE9NV3JhcHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QpCiAgICAgI3VuZGVm
IFdSQVAKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKFdlYkNvcmU6OkpTRE9NV2luZG93U2hl
bGw6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpT
RE9NV2luZG93U2hlbGwqPihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICByZXR1cm4ga2l0KCZz
dGF0aWNfY2FzdDxXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+d3JhcHBlZCgp
KTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKFdlYkNvcmU6OkpTRE9NSW1wbGVtZW50YXRp
b246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpT
RE9NSW1wbGVtZW50YXRpb24qPihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICByZXR1cm4ga2l0
KCZzdGF0aWNfY2FzdDxXZWJDb3JlOjpKU0RPTUltcGxlbWVudGF0aW9uKj4ob2JqZWN0KS0+d3Jh
cHBlZCgpKTsKIAogICAgIHJldHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDU3ZjMyMDJhOGMyZDYwMTRlZTFlMWFj
OGZjZjdlNWJkMDYyYTc3YzguLmZiNmRmMjVhNGM3YmY0NzhmYTMzMTEzOTcyMTJjNzFjNmYwNTc2
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tCkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIHZvaWQgYWRkRXhjZXB0aW9uVG9Db25zb2xl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBKU0RPTVdpbmRvd0Jhc2UqIGlzbid0IHRoZSByaWdo
dCBvYmplY3QgdG8gcmVwcmVzZW50IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nCiAgICAgLy8gSmF2
YVNjcmlwdC4gSW5zdGVhZCwgd2Ugc2hvdWxkIHVzZSBFeGVjU3RhdGUsIGxpa2Ugd2UgZG8gZWxz
ZXdoZXJlLgogICAgIEpTRE9NV2luZG93QmFzZSogdGFyZ2V0ID0ganNDYXN0PEpTRE9NV2luZG93
QmFzZSo+KHJvb3QtPmdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB0YXJnZXQtPmltcGwoKSk7CisgICAgcmV0
dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhfcHJpdmF0
ZS0+b3JpZ2luUm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgdGFyZ2V0
LT53cmFwcGVkKCkpOwogfQogCiAtIChKU0dsb2JhbENvbnRleHRSZWYpX2dsb2JhbENvbnRleHRS
ZWYKQEAgLTU0MSw3ICs1NDEsNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhl
Y1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogCiAgICAgICAg
IGlmIChvYmplY3QtPmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpIHsKICAgICAgICAg
ICAgIC8vIFBsdWdpbiBlbGVtZW50cyBjYWNoZSB0aGUgaW5zdGFuY2UgaW50ZXJuYWxseS4KLSAg
ICAgICAgICAgIGlmIChPYmpjSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8T2JqY0lu
c3RhbmNlKj4ocGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihvYmplY3QpLT5p
bXBsKCkpKSkKKyAgICAgICAgICAgIGlmIChPYmpjSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGlj
X2Nhc3Q8T2JqY0luc3RhbmNlKj4ocGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQq
PihvYmplY3QpLT53cmFwcGVkKCkpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2Ut
PmdldE9iamVjdCgpOwogICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoT2JqQ1J1
bnRpbWVPYmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIE9iakNSdW50aW1lT2JqZWN0KiBy
dW50aW1lT2JqZWN0ID0gc3RhdGljX2Nhc3Q8T2JqQ1J1bnRpbWVPYmplY3QqPihvYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCAyMTZiYzk5YzgwNTFjNmZjNmMzMGE0YjkwNWU2MjBmZDc1ZGIxZDZkLi5iOTg0NmFl
Y2M5ODI0MWZlNTg5MTdjMDI0MWJiNWUyNTVhYjU3ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDIxLDcgKzQyMSw3
IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKICAgICAgICAgaWYgKCRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAg
ICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAob3B0aW9uYWxJ
bmRleCkge1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Q
cm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgu
dmFsdWUoKSA8IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKSkge1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4ICYm
IG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkg
e1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwg
IiAgICAgICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7XG4iKTsKICAg
ICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBi
ZSB3cml0YWJsZQpAQCAtMTE4MSw5ICsxMTgxLDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAg
ICBpZiAoTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlm
ICgkaGFzUGFyZW50KSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRp
bnRlcmZhY2VOYW1lJiBpbXBsKCkgY29uc3RcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAkaW50ZXJmYWNlTmFtZSYgd3JhcHBlZCgpIGNvbnN0XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5h
bWUmPihCYXNlOjppbXBsKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUmPihCYXNlOjp3cmFw
cGVkKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cbiIp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTc1Miw5ICsxNzUyLDkgQEAgc3ViIEdldEluZGV4ZWRH
ZXR0ZXJFeHByZXNzaW9uCiB7CiAgICAgbXkgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiA9IHNoaWZ0
OwogICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgIkRP
TVN0cmluZyIpIHsKLSAgICAgICAgcmV0dXJuICJqc1N0cmluZ09yVW5kZWZpbmVkKHN0YXRlLCB0
aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRleCkpIjsKKyAgICAgICAgcmV0dXJuICJqc1N0cmlu
Z09yVW5kZWZpbmVkKHN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpIjsK
ICAgICB9Ci0gICAgcmV0dXJuICJ0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSwgdGhpc09iamVjdC0+aW1wbCgpLml0ZW0oaW5kZXgpKSI7CisgICAgcmV0dXJuICJ0b0pTKHN0
YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0
ZW0oaW5kZXgpKSI7CiB9CiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCkBAIC0yMjIxLDcg
KzIyMjEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlm
ICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgIkRPTVN0cmluZyIp
IHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4
IDw9IE1BWF9BUlJBWV9JTkRFWCkge1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDwgdGhp
c09iamVjdC0+aW1wbCgpLmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxl
bmd0aCgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIyBBc3N1
bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQog
ICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tSW5kZXhlZFNldHRlciJ9KSB7CkBAIC0yMzE5LDkgKzIzMTksOSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJh
bWUuaCIpOwogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3Mu
aCIpOwogICAgICAgICAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRob2RO
YW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRC
eVNldHRpbmcifSkgLiAiRW5hYmxlZCI7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkpXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzLT53
cmFwcGVkKCkuZnJhbWUoKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIp
OwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTZXR0aW5ncyYg
c2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKS0+c2V0dGluZ3MoKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTZXR0aW5ncyYgc2V0
dGluZ3MgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKS0+c2V0dGluZ3MoKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNldHRpbmdz
LiRlbmFibGVfZnVuY3Rpb24oKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzMzQsNyArMjMzNCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAmJgogICAgICAgICAgICAgICAgICEkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSAm
JgogICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKSkpXG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgp
KSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CiAK
QEAgLTIzNTIsNyArMjM1Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgbXkgJGV4Y2VwdGlvbkNvZGUgPSAkZ2V0dGVyRXhjZXB0aW9ucyA/ICJlYyIgOiAi
MCI7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUoXCIkaW50ZXJmYWNlTmFt
ZS4kbmFtZVwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChjdXJzb3IuaXNDYXB0dXJp
bmcoKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
ICRtZW1vaXplZFR5cGUgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuJGltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkbWVtb2l6ZWRUeXBl
IG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rp
b25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9p
emVkRE9NUmVzdWx0PCRtZW1vaXplZFR5cGU+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwg
bWVtb2l6ZWRSZXN1bHQsICRleGNlcHRpb25Db2RlKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgIm1lbW9pemVk
UmVzdWx0IiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7XG4iKSBpZiAk
Z2V0dGVyRXhjZXB0aW9uczsKQEAgLTIzNzYsNyArMjM3Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgqc3Rh
dGUpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eUZvck5vZGUifSkgewogICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaG91bGRBbGxvd0FjY2Vz
c1RvTm9kZShzdGF0ZSwgaW1wbC4iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigp
KSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJm
YWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikg
LiAiIDoganNOdWxsKCkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRXZl
bnRIYW5kbGVyIikgewogICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJXaW5kb3dFdmVudEhhbmRsZXIifSA/ICJ3
aW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUiCkBAIC0yMzg0LDcgKzIzODQsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICA6ICJldmVudEhhbmRsZXJB
dHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgIG15ICRldmVudE5hbWUgPSBFdmVudEhhbmRsZXJB
dHRyaWJ1dGVFdmVudE5hbWUoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJGdldHRlcihj
YXN0ZWRUaGlzLT5pbXBsKCksICRldmVudE5hbWUpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJGdldHRlcihjYXN0
ZWRUaGlzLT53cmFwcGVkKCksICRldmVudE5hbWUpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAg
ICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZTsKICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3Ik
Ly87CkBAIC0yNDEyLDkgKzI0MTIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENv
bnRlbnQsICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiKTsKIAogICAgICAgICAgICAg
ICAgIGlmICgkc3ZnTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVl
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlzLT5p
bXBsKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFy
Z3MpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1Zh
bHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlz
LT53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxs
V2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAg
IH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0
eVR5cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVy
dHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHJvcGVy
dHlSZWZlcmVuY2UoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZH
TnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjQzNyw3ICsyNDM3LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVu
dHMsIEBjYWxsV2l0aEFyZ3MpOwogICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0
aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICIk
e2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRU
aGlzIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUo
JHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBSZWZQdHI8JHR5cGU+IG9iaiA9ICRqc1R5cGU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iai5nZXQoKSk7XG4iKTsKQEAgLTI0NjMsMTAg
KzI0NjMsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB1
bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgIkpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSIpKTsKIAogICAgICAgICAgICAgICAgIGlmICgkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNh
c3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRo
aXMtPndyYXBwZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25O
YW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtc
biIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlz
IikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAg
IGRpZSBpZiAhQ29uc3RydWN0b3JTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSk7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6
OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+aW1wbCgpKSlc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBkb21PYmplY3Qt
PndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAg
ICAgICAgfQogCkBAIC0yNTQwLDkgKzI1NDAsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkg
ewogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikgewot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+
aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0
ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxk
QWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSkpXG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91
bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgp
KSlcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICB9CkBAIC0yNjUyLDkgKzI2
NTIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5
In0gJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90
Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0
YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPmlt
cGwoKS5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+
d3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAg
IH0KQEAgLTI2NjcsMTMgKzI2NjcsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNl
IHdpdGhvdXQgaGFyZGNvZGluZyB0aGUgY2xhc3MgYW5kIGF0dHJpYnV0ZSBuYW1lcyBoZXJlLgog
ICAgICAgICAgICAgICAgIGlmICgoKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSBvciAo
JGludGVyZmFjZU5hbWUgZXEgIldvcmtlckdsb2JhbFNjb3BlIikpIGFuZCAkbmFtZSBlcSAib25l
cnJvciIpIHsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFcnJvckhhbmRs
ZXIuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Y2FzdGVkVGhpcy0+aW1wbCgpLnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoJGV2ZW50TmFtZSwg
Y3JlYXRlSlNFcnJvckhhbmRsZXIoc3RhdGUsIHZhbHVlLCBjYXN0ZWRUaGlzKSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpLnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNFcnJv
ckhhbmRsZXIoc3RhdGUsIHZhbHVlLCBjYXN0ZWRUaGlzKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlz
dGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IldpbmRvd0V2ZW50SGFuZGxlciJ9
ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9jdW1l
bnRFdmVudEhhbmRsZXIifSA/ICJzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZSIKICAg
ICAgICAgICAgICAgICAgICAgICAgIDogInNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzZXR0ZXIoKnN0YXRlLCAq
Y2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+aW1wbCgpLCAkZXZlbnROYW1lLCB2YWx1ZSk7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHNldHRlcigqc3Rh
dGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCksICRldmVudE5hbWUsIHZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAgICAgICAg
IG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CkBAIC0y
Njk2LDE4ICsyNjk2LDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQXMifSB8fCAkbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAk
YXR0cmlidXRlVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8
JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKS4ke2lt
cGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2Fy
ZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9
KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIWZvcndhcmRlZEltcGwpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9ICpmb3J3
YXJkZWRJbXBsO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgQXR0cmlidXRlIGlzIG5vdCBudWxsYWJsZSwgdGhlIGlt
cGxlbWVudGF0aW9uIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHJlZmVyZW5jZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWY8JHthdHRyaWJ1
dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKS4ke2ltcGxHZXR0ZXJG
dW5jdGlvbk5hbWV9KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBSZWY8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBp
bXBsID0gZm9yd2FyZGVkSW1wbC5nZXQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZSA9ICRjb2RlR2VuZXJhdG9yLT5H
ZXRBdHRyaWJ1dGVGcm9tSW50ZXJmYWNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSwgJHB1dEZvcndhcmRzKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlm
ICRzZXR0ZXJSYWlzZXNFeGNlcHRpb247CkBAIC0yODE0LDEzICsyODE0LDEzIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24p
IHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSlc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBp
ID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsg
KytpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaSkpO1xuIik7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKCRuYW1lZEdldHRlckZ1bmN0aW9uKSB7CiAgICAgICAgICAgICAjIEZJWE1F
OiBXZSBtYXkgbmVlZCB0byBhZGQgYW4gSURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdCBzb21lIHBv
aW50IGlmIGFuIGludGVyZmFjZSBuZWVkcyBlbnVtZXJhYmxlIG5hbWVkIHByb3BlcnRpZXMuCiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKCkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBv
cnRlZFByb3BlcnR5TmFtZXMoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgp
LnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCBwcm9wZXJ0eU5hbWUpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgIH0KQEAgLTI5MjEsMTQgKzI5MjEsMTQgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IGFuZAogICAgICAgICAgICAg
ICAgICAgICAhJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05v
dENoZWNrU2VjdXJpdHkifSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGlmICgkaXNDdXN0b20pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4iIC4g
JGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIigqc3RhdGUpKTtcbiIpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlt
cGwuaXNSZWFkT25seSgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIE5PX01PRElGSUNBVElP
Tl9BTExPV0VEX0VSUik7XG4iKTsKQEAgLTI5ODIsMTEgKzI5ODIsMTEgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7XG4iKTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJF
dmVudFRhcmdldCJ9IHx8ICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IikgewotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+aW1wbCgpLnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2
aXNpdG9yKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHRoaXNPYmplY3QtPnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKHZpc2l0b3IpO1xuIikgaWYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTWFya0Z1bmN0aW9uIn07CiAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFN
ZW1vcnlDb3N0In0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0
b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPmltcGwoKS5tZW1vcnlDb3N0
KCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNpdG9yLnJl
cG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgp
KTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDAp
IHsKICAgICAgICAgICAgIGZvcmVhY2ggKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKQEAg
LTMwMjgsNyArMzAyOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAi
QWN0aXZlRE9NT2JqZWN0IikpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAgICAgICRlbWl0dGVkSlNDYXN0
ID0gMTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJm
YWNlTmFtZX0tPmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSlcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgp
Lmhhc1BlbmRpbmdBY3Rpdml0eSgpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkV2ZW50
VGFyZ2V0IikpIHsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2lu
dGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICRlbWl0dGVkSlNDYXN0ID0gMTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7
aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpXG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0t
PndyYXBwZWQoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpXG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICB9CiAg
ICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwg
Ik5vZGUiKSkgewpAQCAtMzA1NSwzNCArMzA1NSwzNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogCiAgICAgICAgICAgICBteSAkcm9vdFN0cmluZzsKICAgICAgICAgICAgIGlmIChHZXRH
ZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsIikgewotICAgICAgICAgICAg
ICAgICRyb290U3RyaW5nICA9ICIgICAgJHtpbXBsVHlwZX0qIHJvb3QgPSAmanMke2ludGVyZmFj
ZU5hbWV9LT5pbXBsKCk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAg
JHtpbXBsVHlwZX0qIHJvb3QgPSAmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCk7XG4iOwog
ICAgICAgICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBl
cSAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIpIHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0
cmluZyAgPSAiICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIHJvb3QgPSBXVEY6OmdldFB0
cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5jb250ZXh0KCkpO1xuIjsKKyAgICAgICAgICAg
ICAgICAkcm9vdFN0cmluZyAgPSAiICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIHJvb3Qg
PSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5jb250ZXh0KCkpO1xu
IjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFj
ZSkgZXEgIkltcGxGcmFtZSIpIHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAg
IEZyYW1lKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuZnJh
bWUoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRnJhbWUqIHJv
b3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5mcmFtZSgpKTtc
biI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICBpZiAoIXJvb3QpXG4iOwog
ICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7
CiAgICAgICAgICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2Up
IGVxICJJbXBsRG9jdW1lbnQiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAg
ICBEb2N1bWVudCogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgp
LmRvY3VtZW50KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIERv
Y3VtZW50KiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCku
ZG9jdW1lbnQoKSk7XG4iOwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYg
KCFyb290KVxuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1
cm4gZmFsc2U7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJs
ZSgkaW50ZXJmYWNlKSBlcSAiSW1wbEVsZW1lbnRSb290IikgewogICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkVsZW1lbnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJKU05vZGVDdXN0b20uaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAg
PSAiICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0t
PmltcGwoKS5lbGVtZW50KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAi
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndy
YXBwZWQoKS5lbGVtZW50KCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAi
ICAgIGlmICghZWxlbWVudClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAg
ICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAi
ICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGVsZW1lbnQpO1xuIjsKICAgICAgICAgICAg
IH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0Iikgewog
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1lbnQuaCJ9ID0gMTsKICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20uaCJ9ID0gMTsKLSAgICAgICAgICAg
ICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtp
bnRlcmZhY2VOYW1lfS0+aW1wbCgpLmNhbnZhcygpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJv
b3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdChqcyR7aW50ZXJmYWNl
TmFtZX0tPndyYXBwZWQoKS5jYW52YXMoKSk7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0
R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbE93bmVyTm9kZVJvb3QiKSB7
CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRWxlbWVudC5oIn0gPSAxOwogICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZUN1c3RvbS5oIn0gPSAxOwotICAgICAgICAg
ICAgICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMk
e2ludGVyZmFjZU5hbWV9LT5pbXBsKCkub3duZXJOb2RlKCkpO1xuIjsKKyAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRl
cmZhY2VOYW1lfS0+d3JhcHBlZCgpLm93bmVyTm9kZSgpKTtcbiI7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdl
YkNvcmU6OnJvb3QoJmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpKTtcbiI7CisgICAgICAgICAg
ICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdCgmanMk
e2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkpO1xuIjsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRyb290U3RyaW5nKTsKQEAgLTMxMDIsNyArMzEwMiw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRl
cmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5h
c0NlbGwoKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgd29y
bGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqcyR7aW50
ZXJmYWNlTmFtZX0tPmltcGwoKSwganMke2ludGVyZmFjZU5hbWV9KTtcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzJHtpbnRlcmZh
Y2VOYW1lfS0+d3JhcHBlZCgpLCBqcyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTMxOTcsNyArMzE5Nyw3IEBA
IEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRpbXBsVHlwZSogJHtjbGFzc05hbWV9
Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRv
KiB3cmFwcGVyID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2Up
IC4gIih2YWx1ZSkpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiAmd3JhcHBlci0+aW1wbCgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gbnVsbHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cbiIpOwogICAgIH0KQEAgLTQyNDAsNyArNDI0MCw3IEBAIHN1YiBOYXRpdmVU
b0pTVmFsdWUKICAgICAgICAgICAgIGlmICgkc2VsZklzVGVhck9mZlR5cGUpIHsKICAgICAgICAg
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHTWF0cml4VGVhck9mZi5oIiwgJGNvbmRpdGlv
bmFsKTsKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBCbGluazogRG9uJ3QgY3JlYXRlIGEgbmV3
IG9uZSBldmVyeXRpbWUgd2UgYWNjZXNzIHRoZSBtYXRyaXggcHJvcGVydHkuIFRoaXMgbWVhbnMs
IGUuZywgPT09IHdvbid0IHdvcmsuCi0gICAgICAgICAgICAgICAgJHZhbHVlID0gIlNWR01hdHJp
eFRlYXJPZmY6OmNyZWF0ZShjYXN0ZWRUaGlzLT5pbXBsKCksICR2YWx1ZSkiOworICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICJTVkdNYXRyaXhUZWFyT2ZmOjpjcmVhdGUoY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpLCAkdmFsdWUpIjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIlNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIiwgJGNvbmRpdGlv
bmFsKTsKICAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJP
ZmY8L1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjwkaW50ZXJmYWNlTmFtZSwgLzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggOTllMTIyZDNkNzU0MWEyZjU2YTAxOWUwMGQ5
OTRhYmNlY2Q0MzJhZC4uYjBkMTJjMzg5M2FmZTI3YjQ0YjcyNTg4MDIyMWU3ODM5Y2ZhNzI3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTE0OSw5ICsxNDksOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsbwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RBY3RpdmVET01PYmplY3QqPihzbG90QmFzZSk7Ci0gICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwo
KSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5leGNpdGluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiwgRW5jCiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOwotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
RE9NV2luZG93KHN0YXRlLCBkb21PYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+d3Jh
cHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAg
LTE3OSw5ICsxNzksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdAogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6Omlu
Zm8oKSk7Ci0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBw
ZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgTm9kZSogbmV4dENoaWxkID0gSlNOb2Rl
Ojp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1
bmN0aW9uUG9zdE1lc3NhZ2UoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVj
dCIsICJwb3N0TWVzc2FnZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFN0cmluZyBtZXNzYWdlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkCiB7CiAgICAgYXV0byoganNUZXN0QWN0aXZlRE9NT2JqZWN0ID0ganNDYXN0
PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEFjdGl2ZURPTU9iamVjdC0+aW1wbCgpLCBq
c1Rlc3RBY3RpdmVET01PYmplY3QpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0
QWN0aXZlRE9NT2JqZWN0LT53cmFwcGVkKCksIGpzVGVzdEFjdGl2ZURPTU9iamVjdCk7CiB9CiAK
ICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjksNyArMjY5LDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0QWN0aXZlRE8KIFRlc3RBY3RpdmVET01PYmplY3QqIEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odmFsdWUpKQotICAg
ICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CmluZGV4IDA5ZDZhYWI4MjRlMTFkN2NlNGM5ZDcxOWQ3ZmY5YjljZGRiZDkyZTAuLmNhYWRiYzFm
MGI1N2RkNTEwZWJiYWUwNmM4YTBkMzExZTk1MDU0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDCiB7CiAgICAgYXV0
byoganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBl
cldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC0+aW1wbCgpLCBqc1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC0+d3JhcHBl
ZCgpLCBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCk7CiB9CiAK
ICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0xODQsNyArMTg0LDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0Q3VzdG9tQ28KIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4o
dmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJu
ICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDM3YzFlNTgxMmY0MWE1NTI1NTQ5ZjM0
MDMzMWU1ZjhlNzY5YjUwNjkuLjk5NGYzNjZlZjQ0YzFlODQwOTk2OWFhODAzMGE0OTgyNDRiOTZl
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTgzLDcgKzE4
Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJGdW5jCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhlckZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBTdHJpbmcgc3RyID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvCiB7CiAgICAgYXV0byoganNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21O
YW1lZEdldHRlci0+aW1wbCgpLCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlcik7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21OYW1lZEdldHRlci0+d3JhcHBlZCgpLCBqc1Rl
c3RDdXN0b21OYW1lZEdldHRlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CkBAIC0yNTQsNyArMjU0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tTmEKIFRlc3RDdXN0b21O
YW1lZEdldHRlciogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmlt
cGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAxYTlm
ZWE3YzExN2M3MDRmYTNiYzY2M2I0ZjM1MGMyM2E4Njk4MzhkLi44ZGY5MmQ5ZmQxODczNTNjMjdm
ZjYwMzlkYWE4Y2I4NDIwOWQwMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1
Y3RvckF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50
Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIxIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLmF0dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0
cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0RXZl
bnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoc3RhdGUsIGltcGwuYXR0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvck93
bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pCiB7CiAg
ICAgYXV0byoganNUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVy
KHdvcmxkLCAmanNUZXN0RXZlbnRDb25zdHJ1Y3Rvci0+aW1wbCgpLCBqc1Rlc3RFdmVudENvbnN0
cnVjdG9yKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50Q29uc3RydWN0
b3ItPndyYXBwZWQoKSwganNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiB9CiAKICNpZiBFTkFCTEUo
QklORElOR19JTlRFR1JJVFkpCkBAIC0yNjQsNyArMjY0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZl
bnRDb24KIFRlc3RFdmVudENvbnN0cnVjdG9yKiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4odmFsdWUpKQotICAgICAgICByZXR1
cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4
IGYxNzVkZGIzYmJkYTQzNjljYTI3OTdmMzJjNDRhOTA3NWMxMTIzMmQuLjBlYjE1MGZkZTVmNWVh
ZWM0NzdjNWIzOTU2MmFiZDJkYWE3NzUxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApA
QCAtMTQ1LDEwICsxNDUsMTAgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFAKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgT3B0aW9uYWw8
dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7Ci0gICAg
aWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+
aW1wbCgpLmxlbmd0aCgpKSB7CisgICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRl
eC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7CiAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzID0gRG9udERlbGV0ZSB8IFJlYWRPbmx5OwotICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRleCkpKTsKKyAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVz
dEV2ZW50VGFyZ2V0LCBCYXNlPihzdGF0ZSwgSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTE3MSw5ICsxNzEsOSBAQCBib29sIEpTVGVz
dEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogcwogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZl
bnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKLSAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3Ro
KCkpIHsKKyAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsK
ICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IERvbnREZWxldGUgfCBSZWFkT25seTsKLSAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+aW1wbCgpLml0ZW0oaW5kZXgp
KSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRlcywgdG9KUyhz
dGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPndyYXBwZWQoKS5p
dGVtKGluZGV4KSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CkBAIC0xOTks
MTAgKzE5OSwxMCBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsCiB7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsr
aSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXI6OmZyb20oc3RhdGUsIGkpKTsKICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2Jq
ZWN0LT5pbXBsKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQorICAgICAgICBmb3IgKGF1dG8m
IHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5h
bWVzKCkpCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCBwcm9wZXJ0eU5hbWUpKTsKICAgICB9CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0yMjAs
NyArMjIwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIHMKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RFdmVudFRhcmdldCIsICJpdGVtIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyKHN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMjM3LDcgKzIzNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlv
bkFkZEV2ZW50TGlzdGVuZXIoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRUYXJnZXQiLCAi
YWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElL
RUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExp
c3RlbgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgInJlbW92ZUV2ZW50TGlz
dGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVu
ZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC0yNjcsNyArMjY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uRGlzcGF0Y2hFdmVudChFeGUKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJkaXNwYXRjaEV2ZW50Iik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKQEAgLTI4NSwxMyArMjg1LDEzIEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdGhpc09iamVjdC0+aW1wbCgpLnZp
c2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCku
dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiBib29sIEpTVGVzdEV2ZW50VGFy
Z2V0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byog
anNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7Ci0gICAgaWYgKGpzVGVzdEV2ZW50VGFyZ2V0LT5pbXBsKCkuaXNGaXJp
bmdFdmVudExpc3RlbmVycygpKQorICAgIGlmIChqc1Rlc3RFdmVudFRhcmdldC0+d3JhcHBlZCgp
LmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5V
U0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTMwMSw3ICszMDEsNyBA
QCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjbwogewogICAgIGF1dG8qIGpzVGVzdEV2ZW50VGFyZ2V0
ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwog
ICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQp
OwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRUYXJnZXQtPmltcGwoKSwg
anNUZXN0RXZlbnRUYXJnZXQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZl
bnRUYXJnZXQtPndyYXBwZWQoKSwganNUZXN0RXZlbnRUYXJnZXQpOwogfQogCiAjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMzUxLDcgKzM1MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV2
ZW50VGFyCiBUZXN0RXZlbnRUYXJnZXQqIEpTVGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFdmVudFRhcmdldCo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5p
bXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDM1ZGEwZTc1OWU0ODM5YjEy
M2Y5ZTUyM2NkZDI2MTU5ZjE5MmExZTUuLmNhZDZlOTlkZTRjNTAxMzA4NzllMTM1MDAyNjJkYjA5
MDlhYTAwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWQKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0RXhjZXB0aW9uKj4oc2xvdEJhc2UpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZv
aWQgSlNUZXN0RXhjZXB0aW9uT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiBjb250CiB7CiAgICAgYXV0byoganNUZXN0RXhjZXB0aW9uID0ganND
YXN0PEpTVGVzdEV4Y2VwdGlvbio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV4Y2VwdGlvbi0+aW1wbCgpLCBqc1Rlc3RFeGNl
cHRpb24pOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXhjZXB0aW9uLT53cmFw
cGVkKCksIGpzVGVzdEV4Y2VwdGlvbik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCkBAIC0yMTksNyArMjE5LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXhjZXB0aW8KIFRlc3RFeGNl
cHRpb24qIEpTVGVzdEV4Y2VwdGlvbjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4o
dmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJu
ICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA1NzNhMDkwYWNmN2E4NzBlMGJi
NzE5YmZmN2YxNWMxOWNlMWU2MzU4Li5jNzQwNmFjMTk1NGU5MDkyYmE1NWYzMjRhZjFiY2UxZDVj
ZGNjZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIGJvb2wgSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIGF1dG8qIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBqc0Nhc3Q8SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZSogcm9vdCA9ICZqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLT5pbXBsKCk7
CisgICAgVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIHJvb3QgPSAmanNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS0+d3JhcHBlZCgpOwogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9v
dChyb290KTsKIH0KIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwK
IHsKICAgICBhdXRvKiBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYg
d29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5j
YWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLT5pbXBsKCksIGpz
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+d3JhcHBlZCgpLCBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTE4MSw3ICsxODEs
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3RHZW5lcmF0ZQogVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAg
ICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBkMmQ3YjgwMTM0OGZkNmNjNGM2MWE5MTllN2Ix
MjAzMGM2NmI2MTI5Li5mZDhjZWEzNWRjMmVmZmYwZDU0YWVlMzEzNjYxNDIyZTM1YzBiYzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtNDYyLDcgKzQ2Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVt
ZW50c1N0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVtZW50c1N0cjEoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDgxLDcgKzQ4MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVt
ZW50c1N0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
NTEyLDcgKzUxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNO
b2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c05vZGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuaW1wbGVtZW50c05vZGUoKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTU1NSw3ICs1NTUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0
cjEiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJ
bnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgVGVzdFN1
cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMSgmaW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTU3NCw3ICs1NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90QgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxl
bWVudGFsU3RyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxl
bWVudGFsU3RyMigmaW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTYwNSw3ICs2MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QgogICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJm
YWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRl
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoVGVzdFN1cHBsZW1lbnRh
bDo6c3VwcGxlbWVudGFsTm9kZSgmaW1wbCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW4K
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2Ui
LCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUp
LT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBOb2RlKiBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzM3LDcgKzczNyw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsU3RyMiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJm
YWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVj
dCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBOb2RlKiBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzk1LDcgKzc5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShFCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QxIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuaW1wbGVtZW50c01ldGhv
ZDEoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAt
ODEwLDcgKzgxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC04
NjEsNyArODYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRo
b2QxKCZpbXBsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQpAQCAtODc2LDcgKzg3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKQEAgLTkyMiw3ICs5MjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRobwogYm9vbCBKU1Rl
c3RJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBhdXRvKiBqc1Rlc3RJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGlmIChqc1Rlc3RJbnRlcmZhY2UtPmltcGwoKS5oYXNQ
ZW5kaW5nQWN0aXZpdHkoKSkKKyAgICBpZiAoanNUZXN0SW50ZXJmYWNlLT53cmFwcGVkKCkuaGFz
UGVuZGluZ0FjdGl2aXR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFVOVVNFRF9QQVJB
TSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBK
U1Rlc3RJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnQKIHsKICAgICBhdXRvKiBqc1Rlc3RJbnRlcmZhY2UgPSBqc0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0SW50ZXJmYWNlLT5pbXBsKCksIGpzVGVzdEludGVyZmFj
ZSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RJbnRlcmZhY2UtPndyYXBwZWQo
KSwganNUZXN0SW50ZXJmYWNlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50
ZXJmYWNlKiBpbXBsKQpAQCAtOTYxLDcgKzk2MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEludGVyZmFj
CiBUZXN0SW50ZXJmYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdElu
dGVyZmFjZSo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMWY0
MGNjZGU1ZDJhY2NkYTUzNWExODBhNmZmNWQxMjNhZTJmZjc2NS4uZDA2MTFlNWVlY2E1NzZlODc5
MjdjOTY0YTIyMGU5N2E1YWU2NzA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck93bmVyOjpmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiB7CiAgICAgYXV0byoganNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lciA9IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci0+aW1wbCgpLCBqc1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXItPndyYXBwZWQoKSwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik7
CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yMDYsNyArMjA2LDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0TWVkaWFRdWUKIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA2MWRlMzkyNGFi
OWMyNDcxOTEwYmJhM2RiNDI0MzA4MzNjYzA1N2UwLi5jOGE2MTY0NmI4MmRkOTFhNWM2Mzc5MjZh
ZDU0M2Y5YTFiMjgwM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBA
IC0xNjMsNyArMTYzLDcgQEAgSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXROYW1l
ZENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2IKIGJvb2wgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIGF1dG8qIGpzVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoanNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci0+aW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQorICAgIGlmIChqc1Rlc3RO
YW1lZENvbnN0cnVjdG9yLT53cmFwcGVkKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBh
dXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0
b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT5pbXBsKCksIGpzVGVzdE5hbWVkQ29uc3RydWN0
b3IpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+
d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKIH0KIAogI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZENv
bgogVGVzdE5hbWVkQ29uc3RydWN0b3IqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDc5Y2Q1MWI0OTdiZjg5N2Mw
MTk5N2QwNWIyZTJmNjQ5MmQxMGQ3ZWYuLmQwZWFhMzE3ODhmNzAxMjk2ZGYwMWYwZGMwMjUwNjMw
OWQ3NGQxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqc3RhdGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBpbXBsLm5hbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xNzAsNyAr
MTcwLDcgQEAgdm9pZCBKU1Rlc3ROb2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
b2RlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0g
ICAgdGhpc09iamVjdC0+aW1wbCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKKyAg
ICB0aGlzT2JqZWN0LT53cmFwcGVkKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwog
fQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5oCmluZGV4IDhmZDBkM2QyMmNkNDVkNzljY2E3Y2NhYTNhZGJhMTM3ZDgwNjc5
MDUuLjBjNzJhMzFiZGI2YmNiZjliMTdhN2Q2YmMxMTllNWIzNDg0NjAwMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaApA
QCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCi0gICAgVGVzdE5v
ZGUmIGltcGwoKSBjb25zdAorICAgIFRlc3ROb2RlJiB3cmFwcGVkKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Tm9kZSY+KEJhc2U6OmltcGwoKSk7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Tm9kZSY+KEJhc2U6OndyYXBwZWQoKSk7CiAgICAg
fQogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5vZGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIFJlZjxUZXN0Tm9kZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yy5jcHAKaW5kZXggNWMwYTU3YTdjMWUzNjdlMmUwMTFmYmZlNjU5YzI5OWI4ZjFiOTk5ZC4uMTky
YWUwOGFiY2I0NDRjZTVmMzBjMjY2MTk0MjdkOTM0ODc0MWE5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b25kZXRlcm1pbmlzdGljLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0
ZSogc3RhCiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJz
b3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5k
aW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0
ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3Iu
aXNDYXB0dXJpbmcoKSkgewotICAgICAgICBpbnQgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlz
LT5pbXBsKCkubm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cigpOworICAgICAgICBpbnQgbWVt
b2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY1JlYWRv
bmx5QXR0cigpOwogICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8
aW50Pj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihtZW1vaXplZFJlc3VsdCk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5
QXR0cihFeGVjU3RhdGUqIHN0YQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ub25kZXRlcm1p
bmlzdGljUmVhZG9ubHlBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTE4OSw3ICsxODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdAogICAgIElu
cHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUoIlRlc3RO
b25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygp
KSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS5u
b25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cigpOworICAgICAgICBTdHJpbmcgbWVtb2l6ZWRS
ZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0
dHIoKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmlu
Zz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgMCk7CiAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG1lbW9pemVkUmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjA0LDcg
KzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1p
bmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgICAgIH0KICAgICB9CiAjZW5k
aWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNl
cHRpb25BdHRyKEV4ZWNTdGF0ZSogc3QKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFs
T2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1p
bmlzdGljRXhjZXB0aW9uQXR0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVtb2l6
ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0
dHIoKTsKKyAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpLm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKCk7CiAgICAgICAgIGN1cnNvci5hcHBl
bmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJp
bmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI0MSw3ICsyNDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0
YXRlKiBzdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubm9uZGV0
ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMjY0LDcgKzI2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhCiAg
ICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgi
VGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlz
Q2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhp
cy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKGVjKTsKKyAgICAg
ICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVy
bWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKGVjKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElu
cHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmluZz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygp
LCBtZW1vaXplZFJlc3VsdCwgZWMpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3Rh
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1pbmlz
dGljR2V0dGVyRXhjZXB0aW9uQXR0cihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwg
ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTMwNCw3ICszMDQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBn
bG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRl
dGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7Ci0gICAgICAgIFN0
cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS5ub25kZXRlcm1pbmlzdGlj
U2V0dGVyRXhjZXB0aW9uQXR0cigpOworICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIo
KTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmluZz4+
KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgMCk7CiAgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG1lbW9pemVkUmVzdWx0
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMzE5LDcgKzMx
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zNDUsNyArMzQ1LDcg
QEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJs
ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0
ZWFibGVBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm47CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZh
bHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAg
dm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2Vw
dGlvbkF0dHIoRXhlY1N0YXRlKiBzdGEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJF
eGNlcHRpb25BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFs
dWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGEK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpA
QCAtNDI3LDcgKzQyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0
aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdDsKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBJbnB1dEN1cnNvciYgY3Vy
c29yID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW5wdXRDdXJzb3IoKTsKQEAgLTQ2
Miw3ICs0NjIsNyBAQCB2b2lkIEpTVGVzdE5vbmRldGVybWluaXN0aWNPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaQogewogICAgIGF1dG8qIGpzVGVz
dE5vbmRldGVybWluaXN0aWMgPSBqc0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dE5vbmRldGVybWluaXN0aWMtPmltcGwoKSwganNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROb25kZXRlcm1pbmlzdGljLT53cmFwcGVkKCks
IGpzVGVzdE5vbmRldGVybWluaXN0aWMpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdS
SVRZKQpAQCAtNTEyLDcgKzUxMiw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5vbmRldGVyCiBUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyogSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5p
bXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGZjN2FhZDNhMjQ2ZDExNzE4YjgyNGQ1NDhiYTM1
MTdmMmRlODAwYTguLmQ3ZDNiMDRmOGM0NTQ0NzgyYjNhYTc1NTJhNjM5NjMxOTY3MWNiNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC03MzYsNyArNzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVh
ZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5y
ZWFkT25seUxvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTc1Myw3ICs3NTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0
cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InJlYWRPbmx5U3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seVN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwucmVhZE9ubHlTdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTc3MCw3ICs3NzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
QmFzZQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInJlYWRPbmx5VGVzdE9iakF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0
ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5y
ZWFkT25seVRlc3RPYmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC04MTIsOSArODEyLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAgaWYg
KCFjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAoIWNhc3RlZFRoaXMtPndyYXBw
ZWQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgp
LT5zZXR0aW5ncygpOworICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpOwogICAgIGlmICghc2V0dGluZ3MudGVzdFNldHRpbmdF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtODMyLDcgKzgz
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51
bUF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZW51bUF0dHIoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtODQ5LDcgKzg0OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5ieXRlQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC04NjYsNyArODY2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3Rl
dEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAib2N0ZXRBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwub2N0ZXRBdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTg4Myw3ICs4ODMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5zaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtOTAwLDcgKzkwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNp
Z25lZFNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkU2hv
cnRBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTkx
Nyw3ICs5MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdBdHRy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImxvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTM0LDcgKzkzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LmxvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC05NTEsNyArOTUxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25n
TG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1
bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVu
c2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTk2OCw3ICs5NjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5z
dHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTk4NSw3ICs5ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RP
YmpBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXBsLnRlc3RPYmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC54bWxPYmpBdHRyKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDE5LDcgKzEwMTks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjcmVhdGUi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNC
b29sZWFuKGltcGwuaXNDcmVhdGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTAzNiw3ICsxMDM2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTA1Myw3ICsxMDUzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmEK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRy
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBsLmdldEludGVncmFsQXR0cmlidXRl
KFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyKSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwODcsNyArMTA4
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVh
bkF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0cikpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExMDQsNyArMTEwNCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRVUkxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0cikpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExMzgsNyArMTEzOCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0
cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExNTUsNyAr
MTE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5B
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwu
ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFu
QXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0x
MTcyLDcgKzExNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21V
UkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QgogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21D
b250ZW50VVJMQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xMTg5LDcgKzExODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFy
cmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuYwogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnR5cGVkQXJyYXlBdHRyKCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjA3LDcgKzEyMDcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAg
IH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVj
KSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEyNDMsNyArMTI0Myw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBl
Yyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTI2MSw3ICsxMjYx
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmli
dXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5zdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1
dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEzMDYs
NyArMTMwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsCiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9uZm9vIik7CiAgICAgfQogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShldmVudEhh
bmRsZXJBdHRyaWJ1dGUoY2FzdGVkVGhpcy0+aW1wbCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0
ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOwogfQogCiAKQEAgLTEz
MjEsNyArMTMyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMzM4LDcgKzEzMzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRl
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0
aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoKnN0YXRlKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlMKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2Ny
aXB0Q29udGV4dCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xMzc2LDcgKzEzNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplYwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgZWMpKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRl
LCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTM5OCw3ICsx
Mzk4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGEKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgZWMpKSk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTQxOSw3ICsxNDE5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3QKICAgICBhdXRvKiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENv
bnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTQ0MCw3ICsx
NDQwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIHNjcmlwdENvbnRleHQsIGVj
KSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTE0NjEsNyArMTQ2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmliCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xNDk2LDcgKzE0OTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTUxNSw3ICsxNTE1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5jb25kaXRpb25hbEF0dHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTE1MzQsNyArMTUzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuY29u
ZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0xNTkwLDcgKzE1OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRy
aWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgIH0KICAg
ICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRl
MS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gKGltcGwuY2FjaGVkQXR0
cmlidXRlMSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDogaW1wbC5jYWNoZWRBdHRyaWJ1dGUx
KCkuanNWYWx1ZSgpKTsKICAgICBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTEuc2V0KHN0
YXRlLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTE2MTAsNyArMTYxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBF
CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNo
ZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hl
ZFZhbHVlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1w
bC5jYWNoZWRBdHRyaWJ1dGUyKCkuaGFzTm9WYWx1ZSgpID8ganNOdWxsKCkgOiBpbXBsLmNhY2hl
ZEF0dHJpYnV0ZTIoKS5qc1ZhbHVlKCkpOwogICAgIGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmli
dXRlMi5zZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBsLmFu
eUF0dHJpYnV0ZSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDogaW1wbC5hbnlBdHRyaWJ1dGUo
KS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTE2NDAsNyArMTY0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVu
dChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9k
ZShzdGF0ZSwgaW1wbC5jb250ZW50RG9jdW1lbnQoKSkgPyB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5jb250ZW50RG9jdW1lbnQoKSkpIDog
anNOdWxsKCkpOwogfQogCkBAIC0xNjU2LDcgKzE2NTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1N0YXRpY1Byb3BlcnR5VGVh
ck9mZjxUZXN0T2JqLCBTVkdQb2ludD46OmNyZWF0ZShpbXBsLCBpbXBsLm11dGFibGVQb2ludCgp
LCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBvaW50KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2NzMsNyArMTY3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVh
ck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50KCkpKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnki
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5ibHVlYmVycnkoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTcwNyw3ICsxNzA3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3Ry
aWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnN0cmljdEZsb2F0
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3MjQsNyAr
MTcyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24i
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiZGVzY3JpcHRpb24iKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5kZXNjcmlwdGlvbigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5pZCgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzU4LDcgKzE3NTgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImhhc2giKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaGFzaCIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5oYXNoKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTE3NzUsNyArMTc3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
cGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xNzkzLDcgKzE3OTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9
IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVs
bCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xODEzLDcg
KzE4MTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYQogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdBdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlTG9uZ0F0dHJpYnV0
ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKQEAgLTE4MzMsNyArMTgzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9
IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9v
bGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNO
dWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4NTMs
NyArMTg1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nQXR0cmli
dXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xODczLDcgKzE4NzMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIp
OwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xODk0LDcgKzE4OTQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90QmFzZQogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBib29sIGlz
TnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwubnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKSk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgaWYgKGlzTnVsbCkKQEAgLTE5MTQsNyArMTkx
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0
dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGUoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTkzMSw3ICsxOTMxLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndh
cmRzQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLnB1dEZvcndhcmRzQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTY1LDcgKzE5NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9y
d2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoaW1wbC5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yMDE1LDcgKzIwMTUsNyBA
QCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50
b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjAzNyw3ICsyMDM3LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
amVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50OF90IG5hdGl2ZVZhbHVlID0gdG9JbnQ4KHN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNTcsNyArMjA1Nyw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlID0gdG9VSW50OChzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMDc3LDcgKzIwNzcsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
amVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50MTZfdCBuYXRpdmVWYWx1ZSA9IHRvSW50MTYoc3Rh
dGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU9iamVjdCwgRW5jb2QKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWludDE2X3QgbmF0aXZlVmFsdWUgPSB0
b1VJbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMTE3LDcgKzIx
MTcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMzcsNyArMjEzNyw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBsb25nIGxvbmcgbmF0aXZlVmFsdWUg
PSB0b0ludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNTcsNyAr
MjE1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIxNzcsNyArMjE3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5n
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFs
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0
cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxOTcsNyArMjE5Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RP
YmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbAogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJYTUxPYmpBdHRyIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RP
YmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjM3
LDcgKzIyMzcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdAogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVU
b1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI3Nyw3ICsyMjc3LDcg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1
ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI5Nyw3
ICsyMjk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgdW5zaWduZWQgbmF0aXZlVmFsdWUgPSB0b1VJbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzE3LDcgKzIzMTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBF
bgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjMzNyw3ICsyMzM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVk
VVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhzdGF0
ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzU3LDcgKzIzNTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxl
Y3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
YwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVs
bENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNzcsNyArMjM3Nyw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzOTcsNyArMjM5Nyw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGJvb2wgbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNDE3LDcgKzI0MTcsNyBA
QCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZh
bHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsIHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQz
Nyw3ICsyNDM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEoKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPEZs
b2F0MzJBcnJheT4gbmF0aXZlVmFsdWUgPSB0b0Zsb2F0MzJBcnJheSh2YWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0
NTcsNyArMjQ1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjQ3Nyw3ICsyNDc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMjQ5OSw3ICsyNDk5LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1MTksNyArMjUx
OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQpAQCAtMjU0MSw3ICsyNTQxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RU
eXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmoK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3Ry
aWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkpKSkgewogICAgICAgICB0
aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVj
a2luZ0F0dHJpYnV0ZSIsICJUZXN0T2JqIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI1NzcsNyAr
MjU3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9uZm9vIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKCpzdGF0ZSwgKmNhc3RlZFRoaXMs
IGNhc3RlZFRoaXMtPmltcGwoKSwgZXZlbnROYW1lcygpLmZvb0V2ZW50LCB2YWx1ZSk7CisgICAg
c2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMt
PndyYXBwZWQoKSwgZXZlbnROYW1lcygpLmZvb0V2ZW50LCB2YWx1ZSk7CiB9CiAKIApAQCAtMjU5
Myw3ICsyNTkzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjYxMyw3ICsyNjEzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhB
bmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamUKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNjMzLDcgKzI2MzMsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2Jq
KiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY1Niw3
ICsyNjU2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2UKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yNjc2LDcgKzI2NzYsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY5OSw3ICsyNjk5LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3QKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjcyMiw3ICsyNzIyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGEKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9
IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc0NSw3ICsyNzQ1LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZShFeGUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3Jh
cHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI3NjgsNyArMjc2OCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3ODksNyArMjc4OSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9J
bnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yODExLDcgKzI4MTEs
NyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9
IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgzMyw3ICsy
ODMzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFs
dWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4OTks
NyArMjg5OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFueUF0dHJpYnV0ZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZSA9IHsgc3RhdGUtPnZtKCksIHZhbHVlIH07CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5
MTksNyArMjkxOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpTU1ZHUG9pbnQ6OnRvV3JhcHBlZCh2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI5MzksNyArMjkzOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxl
UG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0
YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4qIG5hdGl2ZVZhbHVlID0gSlNTVkdQ
b2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk1OSw3ICsyOTU5LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1
ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NzksNyArMjk3OSw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3Qs
IEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGZsb2F0IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9GbG9hdChzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI5OTksNyArMjk5OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqSWQoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRp
dmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MzAzNiw3ICszMDM2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0zMDU2LDcgKzMwNTYsNyBAQCB2b2lkIHNldEpTVGVzdE9iak51bGxh
YmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
YwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJu
dWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA3Niw3ICszMDc2LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOTgsNyArMzA5OCw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7CisgICAgUmVmPFRlc3ROb2RlPiBmb3J3
YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7
CiAgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0KCk7CiAgICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0zMTE5LDcgKzMxMTksNyBAQCB2b2lk
IHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgUmVmUHRyPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpLnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKTsKKyAgICBSZWZQ
dHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9y
d2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwogICAgIGlmICghZm9yd2FyZGVkSW1wbCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGF1dG8mIGltcGwgPSAqZm9yd2FyZGVkSW1wbDsKQEAgLTMxNDIsNyAr
MzE0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInZvaWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1w
bC52b2lkTWV0aG9kKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KQEAgLTMxNTQsNyArMzE1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9JbnQzMihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMxNzcsNyArMzE3
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImJ5dGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzE4OSw3ICszMTg5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRo
QXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZU1ldGhvZFdpdGhB
cmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50OF90IGJ5
dGVBcmcgPSB0b0ludDgoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lv
bik7CkBAIC0zMjEyLDcgKzMyMTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBzdAogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwub2N0ZXRNZXRob2Qo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzIyNCw3ICsz
MjI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIHVpbnQ4X3Qgb2N0ZXRBcmcgPSB0b1VJbnQ4KHN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRo
b2QoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ01ldGhv
ZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0zMjU5LDcgKzMyNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIo
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMjgyLDcg
KzMyODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC5vYmpNZXRob2QoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTMyOTQsNyArMzI5NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3Rh
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9iak1ldGhvZFdpdGhBcmdzIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdBcmcgPSB0b0ludDMy
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzMxNyw3
ICszMzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9maWxlPj4gc2VxdWVuY2VB
cmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxTY3JpcHRQcm9maWxlLCBKU1NjcmlwdFByb2ZpbGU+
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICZKU1NjcmlwdFByb2ZpbGU6OnRvV3JhcHBlZCkp
OwpAQCAtMzMzNCw3ICszMzM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKEUKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIoc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMzUxLDcgKzMz
NTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIC8vIEtlZXAgcG9pbnRlciB0byB0aGUgSlNTdHJpbmcgaW4gYSBsb2NhbCBzbyB3
ZSBkb24ndCBuZWVkIHRvIHJlZiB0aGUgU3RyaW5nLgpAQCAtMzM3Miw3ICszMzcyLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEVudW1BcmcKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgp
OwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzQwMSw3ICszNDAxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRo
YXRSZXF1aXJlc0FsbEFyZ3MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMzQyNCw3ICszNDI0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNl
cmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2Vy
aWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZEFyZyA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIDAsIDApOwpAQCAt
MzQ0MSw3ICszNDQxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0YXRlKgogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJvcHRpb25zT2JqZWN0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgRGljdGlvbmFyeSBvbyA9IHsgc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSB9OwpAQCAtMzQ2MSw3ICszNDYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oRXhlY1MKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbXBsLm1l
dGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpA
QCAtMzQ5NSw3ICszNDk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoRXhlY1N0YXRlKgogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJwcml2YXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIGFyZ3VtZW50ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtMzUxMiw3ICszNTEyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50
TGlzdGVuZXIoRXhlY1N0YXQKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYWRkRXZlbnRM
aXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIGxpc3Rl
bmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNP
YmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0zNTI3LDcgKzM1MjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjUwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZW1vdmVFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7
CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM1NDIsNyArMzU0Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0U3RhdGVWb2lkKEV4ZWNTCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRTdGF0ZVZvaWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC53
aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KQEAgLTM1NTQsNyArMzU1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmoo
RXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZU9iaiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhT
Y3JpcHRTdGF0ZU9iaigqc3RhdGUpKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0zNTY4LDcgKzM1NjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdAogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlt
cGwud2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbigqc3RhdGUsIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTM1ODIsNyArMzU4Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVP
YmpFeGNlcHRpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZU9i
akV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbigqc3RhdGUsIGVjKSkpOwogCkBAIC0zNTk5LDcgKzM1OTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENv
bnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0zNjE0LDcgKzM2MTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2MjksNyAr
MzYyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMzY0OSw3ICszNjQ5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzY2Niw3ICszNjY2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWwKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFjayIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhJbnNwZWN0
b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhzdGF0ZSwgMCkpOwogICAgIGltcGwud2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFjayhzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzY3OSw3ICszNjc5LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAg
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFy
Z3NDb3VudCA8PSAwKSB7CkBAIC0zNzAxLDcgKzM3MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJn
QW5kRAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmdB
bmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXpl
X3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50
IDw9IDApIHsKQEAgLTM3MjMsNyArMzcyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50
IG5vbk9wdCA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVy
c2lvbik7CkBAIC0zNzUwLDcgKzM3NTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29P
cHRpb25hbEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBp
bnQgbm9uT3B0ID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252
ZXJzaW9uKTsKQEAgLTM3ODUsNyArMzc4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0
ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzgwNyw3
ICszODA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0EKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5h
cmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zODI5LDcgKzM4
MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMzg0NCw3ICszODQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5n
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBzdHIgPSBzdGF0ZS0+
YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg1OSw3ICszODU5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Fy
ZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJn
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKCFzdGF0ZS0+
YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTM4NzYsNyArMzg3Niw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM4OTYsNyArMzg5Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhD
YWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTM5MTQsNyArMzkxNCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxs
YmFja0Z1bmN0aW9uQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQpAQCAtMzkzMSw3ICszOTMx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBub25DYWxsYmFjayA9IHRv
SW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
OTUxLDcgKzM5NTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3RpbwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5j
dGlvbj4gY2FsbGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRP
ck51bGwoKSkgewogICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1
bmN0aW9uKCkpCkBAIC0zOTkzLDcgKzM5OTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDAwOCw3ICs0MDA4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0
aG9kMihFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRo
b2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuY29uZGl0aW9uYWxN
ZXRob2QyKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTQwMjMsNyArNDAyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMoRXhlY1N0CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMygpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC00MDM3LDcgKzQwMzcsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2QxKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
VGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDAp
KTsKQEAgLTQwNTcsNyArNDA1Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRv
V3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDA4NCw3ICs0MDg0LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kMygKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRl
ZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmlu
ZyBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CkBAIC00MTAxLDcgKzQxMDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KAogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdBcmcgPSB0b0ludDMyKHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNDExOCw3ICs0MTE4LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNSgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCkBAIC00MTM1LDcgKzQxMzUs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RBcmcgPSB0b0RPTVN0cmluZ0xpc3Qoc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MTUyLDcgKzQxNTIsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2Q3KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFN0
cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CkBAIC00MTY5LDcgKzQxNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQxODYsNyArNDE4Niw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92
ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQyMDMsNyArNDIwMyw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDEwCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CkBAIC00MjIwLDcgKzQyMjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMQog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIHN0ckFyZyA9IHN0YXRlLT5h
cmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKQEAgLTQyMzcsNyArNDIz
Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
VmVjdG9yPEJsb2IqPiBibG9iQXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9
IHN0YXRlLT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmICgh
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLmluaGVyaXRzKEpTQmxvYjo6aW5mbygpKSkKQEAg
LTQyODksNyArNDI4OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcx
ID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQzMTYsNyAr
NDMxNiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDQzMyw3ICs0NDMzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aENsYW1wKEV4ZWMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY2xh
c3NNZXRob2RXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICB1bnNpZ25lZCBzaG9ydCBvYmpBcmdzU2hvcnQgPSAwOwpAQCAtNDQ2Myw3ICs0NDYzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9
IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAt
NDQ4MCw3ICs0NDgwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1MKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDUwMCw3ICs0
NTAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NTIwLDcgKzQ1MjAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJnID0gdG9OYXRp
dmVBcnJheTx1bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NTQwLDcg
KzQ1NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhcnJheUFy
ZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpA
QCAtNDU2MCw3ICs0NTYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEV4ZWNTdGF0ZSoKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiZ2V0U1ZHRG9jdW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKCFzaG91bGRBbGxvd0Fj
Y2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5nZXRTVkdEb2N1bWVudChlYykpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTQ1NzcsNyArNDU3Nyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
MShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQx
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZh
bHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NTk0
LDcgKzQ1OTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb252ZXJ0MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIFRlc3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMCkpOwpAQCAtNDYxMSw3ICs0NjExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSogc3RhdGUK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDQiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0
b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ2MjgsNyArNDYyOCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
NShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQ1
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZh
bHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NjQ1
LDcgKzQ2NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlYwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJtdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVh
dGUoaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ2NTcsNyArNDY1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0
aW9uKEV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50RnVuY3Rp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlv
bigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ2Njks
NyArNDY2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAib3JhbmdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwu
YmFuYW5hKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTQ2ODEsNyArNDY4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NzA3LDcgKzQ3
MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDczMiw3ICs0NzMy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ3NTcsNyArNDc1Nyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY1N0cmluZ01ldGhvZChFeGVjCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZh
cmlhZGljU3RyaW5nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgU3RyaW5nIGhlYWQgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52
YWx1ZShzdGF0ZSk7CkBAIC00Nzc3LDcgKzQ3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhl
YwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGRvdWJsZSBoZWFkID0gc3Rh
dGUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0YXRlKTsKQEAgLTQ3OTcsNyArNDc5Nyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY05vZGVNZXRob2QoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZhcmlh
ZGljTm9kZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IE5vZGUqIGhlYWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAt
NDgyMCw3ICs0ODIwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRlKQogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJhbnkiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBmbG9hdCBhID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvRmxvYXQoc3RhdGUpOwpAQCAtNDg0Niw3
ICs0ODQ2LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXMKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb24oRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQ4NjQsNyArNDg2NCw3IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGZsb2F0IGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9GbG9h
dChzdGF0ZSk7CkBAIC00ODkxLDcgKzQ4OTEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2Vw
dGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKERlZmVycmVk
V3JhcHBlcihzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJl
ZCksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTQ5MTEsNyArNDkx
MSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtNDk0Niw3ICs0OTQ2
LDcgQEAgdm9pZCBKU1Rlc3RPYmpPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgYXV0byoganNUZXN0T2JqID0ganND
YXN0PEpTVGVzdE9iaio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3Js
ZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwgJmpzVGVzdE9iai0+aW1wbCgpLCBqc1Rlc3RPYmopOworICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T2JqLT53cmFwcGVkKCksIGpzVGVzdE9iaik7CiB9CiAK
ICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC00OTk2LDcgKzQ5OTYsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3RPYmoqIGltcAogVGVzdE9iaiogSlNUZXN0T2JqOjp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAg
ICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGRk
NTBiYTI2ZTFlYzJkMjg5MzhkMDZiMDcyZjk3MWI1OTRjYmIzOTMuLmRlNGFiZmFjZjg0YWFmNzEw
NThmM2JiZWEwOTEyOTE4ZjJlZDNmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbAogewogICAgIGF1dG8qIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBqc0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
ICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMtPmltcGwoKSwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLT53cmFwcGVkKCksIGpz
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQpAQCAtMjYxLDcgKzI2MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJsb2FkCiBUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9X
cmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAKaW5kZXggM2Q5N2IxM2NhYmIwNzNkMTQxYjY0YTU5NzQ3MzI3ZjFmOGVlODZh
NC4uNDFmM2YyNDkyMjExYjQ0ZGFiY2ZmOTcyYWQyYjQyNWM3YzA2NzY4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIHN0CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygp
KSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+aW1wbCgp
LnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5h
bWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQogICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwg
cHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpAQCAtMTkyLDcgKzE5Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T3ZlcnJpZGVC
dWlsdGlucyIsICJuYW1lZEl0ZW0iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFN0cmluZyBuYW1lID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0
YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyOjpmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNU
ZXN0T3ZlcnJpZGVCdWlsdGlucyA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy0+aW1wbCgpLCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zKTsKKyAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE92ZXJyaWRlQnVpbHRpbnMtPndyYXBwZWQo
KSwganNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRF
R1JJVFkpCkBAIC0yNjEsNyArMjYxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcnJpZGUKIFRlc3RP
dmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXIt
PmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggYmM3NWQyZWE1Y2VmZmNkYzRlYTdkYjg2YWYyOWI5
NDg1YzcyMTRmOC4uM2EzMjcyMWViMWU5MmJjMTkwYTNkMGFmZWU1MjRkMTU1NjMxYzg3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iagogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwudmFsdWUoKS0+ZGVzZXJpYWxpemUoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVl
KEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJl
YWRvbmx5VmFsdWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBs
LnJlYWRvbmx5VmFsdWUoKSA/IGltcGwucmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTczLDcgKzE3Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4
ZWNTdGF0ZSogc3RhdGUsCiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2Fz
dGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaW1wbC5jYWNoZWRWYWx1ZSgpID8gaW1wbC5jYWNoZWRWYWx1ZSgpLT5kZXNlcmlhbGl6
ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAg
Y2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5zZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMsIHJl
c3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTkxLDcgKzE5
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVBvcnRzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAicG9ydHMiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBcnJh
eShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9ydHMoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjEwLDcgKzIxMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJl
YWRvbmx5VmFsdWUoRXhlY1N0YXRlCiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVl
ID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVlLmdldCgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmNhY2hlZFJlYWRvbmx5VmFsdWUoKSA/IGltcGwuY2Fj
aGVkUmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFkb25s
eVZhbHVlLnNldChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywgcmVzdWx0KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBzZXRKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShz
dGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBzZXRKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3cKIHsKICAgICBhdXRvKiBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLT5pbXBsKCksIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UtPndyYXBwZWQoKSwganNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKQEAgLTM0MCw3ICszNDAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RTZXJpYWxpegogVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAg
ICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggYzIzZGZlMmRjOTc4YTRiYTQyNjMyOGQzNDUzNjQ3MjMw
MDkzMWI3Zi4uNGU0Y2ZlODVhMjA3ZWUxYTc2ZjIzYmNjYWY4MDJjMjc5ZjFlODA4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2wKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRM
b25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yMzcsNyArMjM3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8gaW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0
VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAw
KSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTI2NSw3ICsyNjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yODMsNyArMjgzLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0
aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU08KICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykp
OwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKQEAgLTMxOSw3ICszMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
TwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5z
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVm
c1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVm
cyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0
b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zNjUsNyArMzY1
LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0
VmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zODUsNyArMzg1
LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQg
bmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRv
SW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIHNldEpTVGVz
dFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ0Nyw3ICs0NDcs
NyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9T
dHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCkBAIC00NjksNyArNDY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXQK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTQ5MSw3ICs0OTEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgZmxvYXQgd2lkdGggPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CkBA
IC01MzIsNyArNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXIKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxTZXJpYWxp
emVkU2NyaXB0VmFsdWUsIEpTU2VyaWFsaXplZFNjcmlwdFZhbHVlPihzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApLCAmSlNTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRvV3JhcHBlZCkpOwpAQCAtNTQ5
LDcgKzU0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk51bGxhYmxlQXJyYXlBcmcoRXhlCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAibnVsbGFibGVBcnJheUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2
ZUFycmF5PFN0cmluZz4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC01NjYsNyArNTY2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBl
ZGVmcyIsICJmdW5jV2l0aENsYW1wIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnMSA9IDA7CkBAIC02MDMsNyArNjAz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBl
ZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6
Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJh
eUZ1bmN0aW9uKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0FycmF5
RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjM1LDcgKzYzNSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5
RnVuY3Rpb24yCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlG
dW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjU1LDcgKzY1NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2Vx
dWVuY2VUaGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiY2FsbFdpdGhTZXF1
ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFZlY3RvcjxSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0Pj4gc2VxdWVuY2VB
cmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxUZXN0RXZlbnRUYXJnZXQsIEpTVGVzdEV2ZW50VGFy
Z2V0PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3Jh
cHBlZCkpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbihlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBlYyk7CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBKU1Rlc3RUeXBlZGVmc093bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGUKIHsK
ICAgICBhdXRvKiBqc1Rlc3RUeXBlZGVmcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dFR5cGVkZWZzLT5pbXBsKCksIGpzVGVzdFR5cGVkZWZzKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdFR5cGVkZWZzLT53cmFwcGVkKCksIGpzVGVzdFR5cGVkZWZzKTsKIH0KIAog
I2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTc0MCw3ICs3NDAsNyBAQCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFRlc3RUeXBlZGVmcwogVGVzdFR5cGVkZWZzKiBKU1Rlc3RUeXBlZGVmczo6dG9XcmFwcGVk
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+
aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXggNjRhZjMxODRhYmViNjM5ZjY0ZTgzY2Y3
MjViZTg2YzEzNTAwMWIyNi4uZTJmY2JhZmIyMGUzYTRhY2U2YzgxZGZkMWJhNGRmMTlhNmZkYzFk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
YXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNh
dHRyaWJ1dGVSZWFkb25seShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwucmVhZG9ubHkoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSlNhdHRyaWJ1dGVPd25lcjo6ZmluYWxp
emUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAg
ICAgYXV0byoganNhdHRyaWJ1dGUgPSBqc0Nhc3Q8SlNhdHRyaWJ1dGUqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc2F0dHJpYnV0ZS0+
aW1wbCgpLCBqc2F0dHJpYnV0ZSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc2F0dHJp
YnV0ZS0+d3JhcHBlZCgpLCBqc2F0dHJpYnV0ZSk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBhdHRyaWJ1dGUqIGkKIGF0
dHJpYnV0ZSogSlNhdHRyaWJ1dGU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlKj4odmFsdWUp
KQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAppbmRl
eCA1NGZjYThjNzc5MGI3OGRiZTE2MzhhZDk2ZDljODQ1MTNhZTc1ZDY1Li5jZWU4MjUyNzY2NTdm
NTZjMzdlYzhkMjNjZWViYzg5YTIyZjQxNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCkBAIC0xMzEsNyArMTMx
LDcgQEAgdm9pZCBKU3JlYWRvbmx5T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIGF1dG8qIGpzcmVhZG9ubHkgPSBq
c0Nhc3Q8SlNyZWFkb25seSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3
b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNh
Y2hlV3JhcHBlcih3b3JsZCwgJmpzcmVhZG9ubHktPmltcGwoKSwganNyZWFkb25seSk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqc3JlYWRvbmx5LT53cmFwcGVkKCksIGpzcmVhZG9ubHkp
OwogfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5KiBpbXBsKQpAQCAtMTYwLDcg
KzE2MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgcmVhZG9ubHkqIGltCiByZWFkb25seSogSlNyZWFkb25seTo6
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seSo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNw
cAppbmRleCAzOTE0MDg1MWMyN2FkOWMzODZlMzgxODQ4OTQ4NTRlMzk5ZDA5Mzk0Li5iMTI2MTI3
ZWQyZjQ0N2I0NDZjOGFhMTVmYTBkMGY2NjljM2M5MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdp
biBlbGVtZW50PwogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6
OmluZm8oKSkpCi0gICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxK
U0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPmltcGwoKSk7CisgICAgICAgICAg
ICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmpl
Y3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAgIGlmICghaW5zdGFuY2UpCiAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggOTAwNzUx
MTM5YzdkNzY1NjViMmM4ZmNjYTYyOGRiNTlhYzRiMmYzMC4uY2Q3YTdiMzg3OTNhODA3NDFhZmMw
MzNmYzViNzZhMDk1YWE5MjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wgSW5zcGVjdG9y
Q29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0CiAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coc2NyaXB0U3RhdGUsIGluc3BlY3RlZFdpbmRvdy0+aW1wbCgpLCBEb05vdFJlcG9ydFNl
Y3VyaXR5RXJyb3IpOworICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coc2NyaXB0U3RhdGUsIGluc3BlY3RlZFdpbmRvdy0+d3JhcHBlZCgpLCBE
b05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOwogfQogCiBJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5k
bGVyIEluc3BlY3RvckNvbnRyb2xsZXI6OmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggODM3YjZiY2I0NTlkZGFmMGUzMTk4
NTAxOWFiMmQ1OGM0NWIyN2Y4Yi4uZDExNTE4ZjVlNzE0NzcxOTg2Njc0OWI4YTZlMTcwZWE0NTNm
MjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yMDgxLDcgKzIw
ODEsNyBAQCBzdGF0aWMgV2ViRnJhbWVMb2FkVHlwZSB0b1dlYkZyYW1lTG9hZFR5cGUoRnJhbWVM
b2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogICAgICAgICBhbnlXb3JsZEdsb2JhbE9iamVjdCA9IHN0
YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxPYmplY3RPYmopLT53aW5kb3coKTsK
IAogICAgIC8vIEdldCB0aGUgZnJhbWUgZnJvbWUgdGhlIGdsb2JhbCBvYmplY3Qgd2UndmUgc2V0
dGxlZCBvbi4KLSAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+aW1wbCgp
LmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBw
ZWQoKS5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWlu
UHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsgLy8gUnVubmluZyBhcmJpdHJhcnkg
SmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGZlZmMzYWI5NWY1MDVkZjliZTZj
ZWJjZmM0NzZkYjRjMGU0Mzc1NDEuLjdiNWM0ODQzN2YyNjA4ZDgxY2I3YjkzZTVkMDFjMWM5YTQz
MTExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgTlNVUkwgKnRvTlNVUkwoY29uc3QgU3RyaW5n
JiBzKQogc3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHN0YXRpY19jYXN0PEpTRE9NV2lu
ZG93Kj4oZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4ga2l0KHdpbmRvdy0+aW1wbCgpLmZyYW1l
KCkpOworICAgIHJldHVybiBraXQod2luZG93LT53cmFwcGVkKCkuZnJhbWUoKSk7CiB9CiAKIFdl
YlNjcmlwdERlYnVnZ2VyOjpXZWJTY3JpcHREZWJ1Z2dlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGY2OWYxZTExNzVmY2QyMWI3ZjYyNjU1
MjgyMTc2YzhlYTZmNDlkNDkuLmNlYjE4ZGMzMDM0MTU5ZDc4MTlmZmM1OTI2ZjYwMDlkZDE0ZmIz
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIwMDQsNyArMjAwNCw3IEBAIEhSRVNVTFQg
V2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKElXZWJT
Y3JpcHRXb3JsZCogaVdvCiAgICAgICAgIGFueVdvcmxkR2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpOwogCiAgICAg
Ly8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9u
LgotICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5pbXBsKCkuZnJhbWUo
KTsKKyAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+d3JhcHBlZCgpLmZy
YW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZC0+d29ybGQoKSwg
c3RyaW5nLCB0cnVlKS5qc1ZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGY4MDBjMjJmY2Y1MmM3YjM2NjY4MTRkZGEyNmI3
NDQyYTFjNjQwYjcuLmY5YzI2MDY4MWVhZDg2NjdjNjBmOTNkNzhiODQzNTdmNmM0NmM3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAt
NjgzLDcgKzY4Myw3IEBAIFdlYkZyYW1lKiBXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KEpTQ29u
dGV4dFJlZiBjb250ZXh0KQogICAgIGlmIChzdHJjbXAoZ2xvYmFsT2JqZWN0T2JqLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lLCAiSlNET01XaW5kb3dTaGVsbCIpICE9IDApCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+
KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpLT5pbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oZ2xvYmFsT2JqZWN0T2JqKS0+
d2luZG93KCktPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIHJldHVybiBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZSgqZnJhbWUpOwogfQogCkBAIC03MjgsNyArNzI4LDcgQEAgU3RyaW5nIFdlYkZyYW1l
Ojpjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxlbWVudCkKICAgICBpZiAoIXRvSlMoZWxlbWVu
dCktPmluaGVyaXRzKEpTRWxlbWVudDo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoJmpzQ2FzdDxKU0VsZW1lbnQq
Pih0b0pTKGVsZW1lbnQpKS0+aW1wbCgpKTsKKyAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxl
bWVudCgmanNDYXN0PEpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT53cmFwcGVkKCkpOwogfQog
CiBTdHJpbmcgV2ViRnJhbWU6OnByb3Zpc2lvbmFsVVJMKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264305</attachid>
            <date>2015-10-28 23:52:35 -0700</date>
            <delta_ts>2015-11-02 01:37:59 -0800</delta_ts>
            <desc>Fixing IDB</desc>
            <filename>bug-150613-20151029075132.patch</filename>
            <type>text/plain</type>
            <size>423320</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThhYWU1NTlmM2ExZWU0
NjdmNjAyNzhkZmRiYjVlMTIxNjljZDZhOC4uYjNiOTdhYmUwNzMxZjRlNTFmNmYxZDZjNmEwZWMy
NmYzMDEyZmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4NCBAQAorMjAxNS0xMC0yNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFw
cGVkIGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvci4KKworCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6SlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjphY2Nlc3NMb2cpOgorICAgICAgICAoV2ViQ29yZTo6
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZXJyb3JMb2cpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXR0ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F0dHI6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVy
U291cmNlTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQnVmZmVyU291
cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnNldEtpbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NSdWxlTGlzdE93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJv
cGVydHlWYWx1ZUZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5R2V0dGVy
UGl4ZWxPclBvc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxDYW52YXNTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0
TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldFdlYmtpdExpbmVEYXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2hhcmFj
dGVyRGF0YTo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2hhcmFjdGVyRGF0YTo6YWZ0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjpyZXBsYWNlV2l0aCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3RlZE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnMp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmRhdGFiYXNlSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OnN0b3JhZ2VJZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXk6OmFsZ29yaXRobSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ3J5cHRvS2V5UGFpcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21FdmVudDo6ZGV0YWlsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRo
TlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFjdGl2ZURPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpmaXJz
dERPTVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxGb3JtRWxlbWVudE9yTnVsbCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTUZvcm1EYXRhOjphcHBlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU1p
bWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW5BcnJh
eTo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW46Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVN0cmluZ0xpc3Q6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdN
YXA6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
U3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
U3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVG9rZW5MaXN0Ojp0b2dnbGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaG91bGRBbGxvd0FjY2Vzc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjp1cGRhdGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpwcmludEVycm9yTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6OnN1cHBvcnRzUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFz
ZTo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZhbHVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGlsZEZyYW1l
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc0RPTVdpbmRvd1dlYktpdCk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRv
d0luZGV4ZWREQik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OmdldEVudW1lcmFibGVMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldEludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dT
aGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6Ondy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V3JhcHBlcjo6d3JhcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXI6OkpTRE9N
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRGF0YUN1ZTo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
YXRhQ3VlOjpzZXRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhVHJhbnNmZXI6OnR5cGVzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25J
bmNsdWRpbmdHcmF2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6
OnJvdGF0aW9uUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50Ojpp
bnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2
aWNlTW90aW9uRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRp
b25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9u
RXZlbnQ6OmFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6YmV0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6Omdh
bW1hKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0
Q29tcGFzc0hlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojp3ZWJraXRDb21wYXNzQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9y
aWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9j
dW1lbnQ6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6YXBwZW5kKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudEZyYWdtZW50OjpwcmVwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6YXBwZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50
VHlwZTo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRUeXBlOjphZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50VHlwZTo6cmVwbGFjZVdpdGgpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0VsZW1lbnQ6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OmFmdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6cmVwbGFjZVdpdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFbGVtZW50OjpwcmVwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6
YXBwZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXZlbnQ6OmNsaXBib2FyZERhdGEpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNGaWxlUmVhZGVyOjpyZXN1bHQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9s
b2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9j
YXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1l
bnQ6OnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENh
bnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpu
YW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRDYWxsaW5nRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om9w
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRXcml0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxF
bGVtZW50OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6Om5hbWVHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxGcmFtZUVsZW1lbnQ6OnNldExvY2F0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4U2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TFNlbGVjdEVsZW1lbnQ6OmluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MVGVt
cGxhdGVFbGVtZW50Ojpjb250ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNs
b3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSGlzdG9yeTo6c3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXNoU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0
RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6dG9TdHJpbmdGdW5jdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpKU01l
ZGlhU291cmNlU3RhdGVzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJj
ZVN0YXRlczo6ZnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0
ZXM6OmFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6
OmZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNvdXJjZVN0YXRlczo6dm9s
dW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0QWRkaXRpb25hbENoaWxk
cmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6ZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVJbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnBv
c3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpkZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpKU01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9j
a1JlcXVlc3REZWNpc2lvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25PYnNlcnZlck93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXA6
Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU05vZGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpy
ZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpyZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJh
dG9yOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0T3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVP
clN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b05vZGVPclN0cmluZ1ZlY3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU09zY2lsbGF0b3JOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJO
b2RlOjpzZXRQYW5uaW5nTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJOb2RlOjpz
ZXREaXN0YW5jZU1vZGVsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBs
dWdpblZpZXdCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblNjcmlwdE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1BvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSVENTdGF0c1Jlc3BvbnNl
OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxSZXN1bHRTZXRSb3dMaXN0Ojpp
dGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU1ZHTGVuZ3RoOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6c2V0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdl
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6cHV0
RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldExpc3Q6Om5hbWVHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3VidGxlQ3J5cHRvOjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5
cHRvOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpzaWduKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp2ZXJpZnkpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNTdWJ0bGVDcnlwdG86OndyYXBLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0
bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tD
dWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tDdWVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tD
dWU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RleHRUcmFjazo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldEtp
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXh0VHJhY2tMaXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Ry
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUcmFja0V2ZW50Ojp0cmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVHJlZVdhbGtl
cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2tMaXN0
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRh
Y2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjFmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJp
YjJmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZl
cnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlcjo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNXb3JrZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjp3cmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNj
cmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxI
dHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWFBhdGhSZXN1bHQ6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hl
ZEZyYW1lRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFtZURhdGE6
OnJlc3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9tV2luZG93RnJvbUV4ZWNTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9E
T00ubW06CisgICAgICAgICgrW0RPTU5vZGUgX25vZGVGcm9tSlNXcmFwcGVyOl0pOgorICAgICAg
ICAqIGJpbmRpbmdzL29iamMvRE9NVXRpbGl0eS5tbToKKyAgICAgICAgKEpTQzo6Y3JlYXRlRE9N
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06Cisg
ICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBfaXNTYWZlU2NyaXB0XSk6CisgICAgICAgICgrW1dl
YlNjcmlwdE9iamVjdCBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6b3JpZ2luUm9vdE9iamVjdDpy
b290T2JqZWN0Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdldEluZGV4ZWRHZXR0ZXJFeHByZXNzaW9uKToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoTmF0aXZlVG9KU1Zh
bHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0
aW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVG
dW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZl
RE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkFub3RoZXJGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21O
YW1lZEdldHRlck93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RFdmVudENvbnN0cnVjdG9yQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRD
b25zdHJ1Y3RvckF0dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0
b3JPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdl
dDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RF
dmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlw
ZUZ1bmN0aW9uRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRh
cmdldDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdl
dE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RFdmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV4Y2Vw
dGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uT3duZXI6OmZpbmFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6dG9XcmFwcGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdElu
dGVyZmFjZUltcGxlbWVudHNTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFj
ZUltcGxlbWVudHNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbFN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVu
dHNNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uSW1wbGVtZW50c01ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lck93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVy
OjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp0
b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b2RlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVy
bWluaXN0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNSZWFkb25seUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY0dldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVh
YmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
U2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1p
bmlzdGljUHJvdG90eXBlRnVuY3Rpb25Ob25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWNPd25lcjo6ZmluYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialJlYWRPbmx5VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpFbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpCeXRlQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPY3RldEF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialVuc2ln
bmVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxvbmdBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3RPYmpBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialhNTE9iakF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxl
Y3RlZFN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkSW50
ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVk
SW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEJvb2xl
YW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVHlwZWRBcnJheUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iak9uZm9vKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
aldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRl
MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakFueUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpDb250ZW50RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTXV0
YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakltbXV0YWJsZVBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqRGVz
Y3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqSGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZXBsYWNl
YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZURvdWJs
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQnl0
ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakFueUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqU3RyYXdiZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpTdHJpY3RGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnl0ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVs
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0
aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlv
bmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEw
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDExKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aE9wdGlvbmFsUGFyYW1ldGVyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0
cmluZ0xpc3RGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVs
bGFibGVTZXF1ZW5jZTIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25HZXRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbnZlcnQ1KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1
bmN0aW9uV2l0aEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudFByb21pc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T2JqT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE9iajo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
RnVuY3Rpb25OYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWls
dGluc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDYWNoZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hl
ZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZU93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xv
bmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlw
ZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFNlcXVlbmNlQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdB
cnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNPd25l
cjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBl
ZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzYXR0cmlidXRlUmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNhdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRy
aWJ1dGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seU93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Ojp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OmNhbGxSdW50aW1lTWV0
aG9kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRTY3Jp
cHRTdGF0ZSk6CisKIDIwMTUtMTAtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIE1vZGVybiBJREI6IFN1cHBvcnQgSURCRGF0YWJhc2UudHJhbnNhY3Rpb24o
KSAoYW5kIHRyYW5zYWN0aW9uIHNjaGVkdWxpbmcgaW4gZ2VuZXJhbCkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggNGY5YzU1ZTRhNDE3MjI1ZjY5MTg5MmI0MDY2OTU1ZjI3MDlkMDQzYS4uMzUxM2U3NmJj
MDEzNTE2YTA4MmU0M2VkMjIxMjdiMTlkZTUyNWQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE1LTEwLTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CisKKyAgICAgICAgUmVuYW1lIEpTRE9NV3JhcHBlci5pbXBsIHRvIEpTRE9NV3Jh
cHBlci53cmFwcGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTA2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0
V29ybGQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAg
ICAgKHRvV2ViRnJhbWUpOgorCiAyMDE1LTEwLTI4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0LCBub3QgV2ViQ29yZSwgc2hvdWxkIGRvIGNv
bnRleHQgbWVudSBjb252ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNWM4YTAxODlmNWVjYzgz
OGVlMTA5YWY0MTU4NmU0ZmYwZGRlMmUwNy4uZjQzZjI5MzFiYzQ3YmViYzQ0NzRjNzE4OWUwNzQ5
ZWI2ZmZiZmE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEwLTI3
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAg
UmVuYW1lIEpTRE9NV3JhcHBlci5pbXBsIHRvIEpTRE9NV3JhcHBlci53cmFwcGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRX
b3JsZCk6CisKIDIwMTUtMTAtMjIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb3ZlIG1lbnUgY3JlYXRpb24gdG8gV2ViVmlldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDM5MTJiNDM3YmRlNGRjY2M3MzU0OGZiYzRkOGZkY2FkNTY0OWIzNWEuLmRmNTM1YzgzNjM4MzBm
N2VmMWI5NWMwY2E3OWM2Mzg4YjEzODQxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNS0xMC0yNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgor
CisgICAgICAgIFJlbmFtZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
ZnJhbWVGb3JDb250ZXh0KTogUmVuYW1pbmcgaW1wbCgpIHRvIHdyYXBwZWQoKS4KKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmNvdW50ZXJWYWx1ZSk6IERpdHRvLgorCiAyMDE1LTEwLTI4ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUg
YnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCAxNmJiMThiYTViMjZlMTY5ZmJjZWZh
YzVlNDZhYzZlMTIzODk1NWRiLi5lNDUzMmM4YTE1ZmQ1NjI5ZDJhMTg1ODhmOTdiMTU0YTIwOGYw
ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGlj
IEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0
ZW1UeXBlICppdGVtLCBKU0MKIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50Ojp0aW1lZE1ldGFEYXRhKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gaW1wbCgpLnBhcmVu
dEVsZW1lbnQoKTsKKyAgICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFy
ZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAg
ICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIApAQCAtMzk0LDcgKzM5NCw3IEBAIEpTQzo6SlNW
YWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFEYXRhKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSkKIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
OjphY2Nlc3NMb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogI2lmIFBMQVRGT1JN
KElPUykKLSAgICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnQgPSBpbXBsKCkucGFyZW50RWxlbWVu
dCgpOworICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQoKS5wYXJlbnRFbGVt
ZW50KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkpCiAgICAgICAgIHJl
dHVybiBKU0M6OmpzTnVsbCgpOwogCkBAIC00MTYsNyArNDE2LDcgQEAgSlNDOjpKU1ZhbHVlIEpT
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmFjY2Vzc0xvZyhKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnMKIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjplcnJv
ckxvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IGltcGwoKS5wYXJlbnRFbGVtZW50KCk7Cisg
ICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsK
ICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXR0ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20u
Y3BwCmluZGV4IDQyZjEyZjBlZDJkMTNjNGU3NWUwNjRhMzM2YmI3M2MwYWQ1MzVkMzUuLmQ0NWNm
NmQyYzhhOGVlMmFkN2MzN2FkYmRlNzA4ZjRkZGU0YTViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgSlNBdHRyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgp
Lm93bmVyRWxlbWVudCgpKQorICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gd3JhcHBlZCgpLm93
bmVyRWxlbWVudCgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9C
dWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcAppbmRleCAxYzljMzI4YjEyMTI1ZDliYmUz
OTJjZTMxZTI2MzgxNmUyZjEzNGVkLi4zM2Y3NjhlM2M4MzQ1M2RhZTk3NTAyZjUzNDgzY2QzZGQy
OWJlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVm
ZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQg
SlNBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmICghaW1wbCgp
LnNldEJ1ZmZlcihidWZmZXIpKQorICAgIGlmICghd3JhcHBlZCgpLnNldEJ1ZmZlcihidWZmZXIp
KQogICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVy
cm9yKCZzdGF0ZSwgIkF1ZGlvQnVmZmVyIHVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyIp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1
c3RvbS5jcHAKaW5kZXggMzZmMzFkOWQ2MmVjZDc4ZmQxYWFmMTkxYzIyYjlhNTUwMDIyNzczZC4u
MTUzMTgxNWFjNjM3NWQ5NjBmZWIyMzc1ZjVmYzNlMTU3YzZhOWJmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0F1ZGlvVHJhY2s6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9v
dCgmd3JhcHBlZCgpKSk7CiB9CiAKIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNBdWRpb1Ry
YWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYg
c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0S2lu
ZChzdHJpbmcpOworICAgIHdyYXBwZWQoKS5zZXRLaW5kKHN0cmluZyk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU5LDcgKzU5
LDcgQEAgdm9pZCBKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+
dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBpbXBsKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0
TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAppbmRleCA4MzFlNDI1Yzg2NWQ0Yjg1N2QzYWM0
MGE4ZWU5N2FmYmFhZDI1YzNhLi42ZmQxYTUwNDAyNTBlN2Q0Nzc2YzZlOThmNTQ2MmU5ODNiMTU4
ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJh
Y2tMaXN0Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHZvaWQgSlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVs
ZW1lbnQoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVt
ZW50KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKaW5kZXgg
ZjZmYTg2ZjVjMzc0ZmViYmMwYjgxYmZmY2FmYzVlZWRjYTQxYjMxZS4uOTIxYmFlZjNiZGUyOTNk
OGExN2MyMzZmMjY0ZTIxMWI5OGJjNjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3
IEBAIHZvaWQgSlNCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiAjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVl
LmlzTnVtYmVyKCkpIHsKICAgICAgICAgdWludDMyX3QgdHlwZSA9IHZhbHVlLnRvVUludDMyKCZz
dGF0ZSk7Ci0gICAgICAgIGlmICghaW1wbCgpLnNldFR5cGUodHlwZSkpCisgICAgICAgIGlmICgh
d3JhcHBlZCgpLnNldFR5cGUodHlwZSkpCiAgICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmls
dGVyTm9kZSB0eXBlIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTEsNyArNTEsNyBA
QCB2b2lkIEpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFN0cmluZyB0
eXBlID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICAgICAgaWYg
KHR5cGUgPT0gImxvd3Bhc3MiIHx8IHR5cGUgPT0gImhpZ2hwYXNzIiB8fCB0eXBlID09ICJiYW5k
cGFzcyIgfHwgdHlwZSA9PSAibG93c2hlbGYiIHx8IHR5cGUgPT0gImhpZ2hzaGVsZiIgfHwgdHlw
ZSA9PSAicGVha2luZyIgfHwgdHlwZSA9PSAibm90Y2giIHx8IHR5cGUgPT0gImFsbHBhc3MiKSB7
Ci0gICAgICAgICAgICBpbXBsKCkuc2V0VHlwZSh0eXBlKTsKKyAgICAgICAgICAgIHdyYXBwZWQo
KS5zZXRUeXBlKHR5cGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXgg
ZmYyNjMwNzg4MzFmM2M5NzExOWM3YTA5OWE0NGQwMjJjZjNiOWFlMi4uMGQzMzc3Nzk2OTMxMTBm
Y2E5N2JjYTFjYzMxZTY5ODIxZDgxZDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdm9pZCBKU0NTU1J1bGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkp
KTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
U1NSdWxlKiBydWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NSdWxlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1
bGVMaXN0Q3VzdG9tLmNwcAppbmRleCA4OWU5OTIxNTA2ZmY1MGU4MWUwYzhiOGI4MzlmMmU5ODZi
ZGE5M2I0Li4wMjg0NDRmZTNkZDkxOGJjMGQwODA1MGU5ZGJjMjg2MjkyN2E1ZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcApA
QCAtNDEsOSArNDEsOSBAQCBib29sIEpTQ1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYQogICAgIEpTQ1NTUnVsZUxp
c3QqIGpzQ1NTUnVsZUxpc3QgPSBqc0Nhc3Q8SlNDU1NSdWxlTGlzdCo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKICAgICBpZiAoIWpzQ1NTUnVsZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0ID0ganNDU1NSdWxlTGlzdC0+aW1wbCgpLnN0eWxlU2hlZXQoKSkKKyAgICBpZiAoQ1NTU3R5
bGVTaGVldCogc3R5bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPndyYXBwZWQoKS5zdHlsZVNoZWV0
KCkpCiAgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0eWxl
U2hlZXQpKTsKLSAgICBpZiAoQ1NTUnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QtPmltcGwo
KS5pdGVtKDApKQorICAgIGlmIChDU1NSdWxlKiBjc3NSdWxlID0ganNDU1NSdWxlTGlzdC0+d3Jh
cHBlZCgpLml0ZW0oMCkpCiAgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9v
dChyb290KGNzc1J1bGUpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cAppbmRleCBkZTJmOTA3MzQ1YTc2OGY1Y2VmMzY4ODQ5NjI3Y2I0MmQ1ZTQ1MWVjLi45MWJhMzEy
Mjk5MDlkNjQ4ZmM5MGE3ZGY0MmYzYTVlNjkyM2NlOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOworICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogY2xhc3MgQ1NTUHJvcGVy
dHlJbmZvIHsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgZ2V0UHJv
cGVydHlWYWx1ZUZhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcgogewog
ICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAi
cGFkZGluZyIpLAogICAgIC8vIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3Bl
cnR5VmFsdWUuCi0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPmlt
cGwoKS5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4o
aW5kZXgpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNPYmotPndy
YXBwZWQoKS5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4oaW5kZXgpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRl
clBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24q
IHRoaXNPYmosIHVuc2lnbmVkIHByb3BlcnR5SUQpCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ1NTU3QKICAgICAvLyBwb3NUb3AgcmV0dXJucyAiQ1NTIHRvcCIgYXMgbnVt
YmVyIHZhbHVlIGluIHVuaXQgcGl4ZWxzIF9pZl8gaXRzIGEKICAgICAvLyBwb3NpdGlvbmVkIGVs
ZW1lbnQuIGlmIGl0IGlzIG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCwgcmV0dXJuIDAKICAgICAv
LyBmcm9tIE1TSUUgZG9jdW1lbnRhdGlvbiBGSVhNRTogSU1QTEVNRU5UIFRIQVQgKERpcmspCi0g
ICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+aW1wbCgpLmdldFByb3BlcnR5Q1NTVmFs
dWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CisgICAg
UmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFs
dWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7CiAgICAg
aWYgKHYpIHsKICAgICAgICAgaWYgKHYtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybiBqc051bWJlcihzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
KS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CkBAIC0zMDAsNyAr
MzAwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBv
c1ByZWZpeChFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3QKIAogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGNzc1Byb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9u
KiB0aGlzT2JqLCB1bnNpZ25lZCBwcm9wZXJ0eUlEKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
diA9IHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9
IHRoaXNPYmotPndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwogICAgIGlmICh2KQogICAgICAgICByZXR1
cm4ganNTdHJpbmdPck51bGwoZXhlYywgdi0+Y3NzVGV4dCgpKTsKIApAQCAtMzQxLDcgKzM0MSw3
IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlE
Pihwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCk7Ci0gICAgaW1wbCgpLnNldFByb3BlcnR5SW50ZXJu
YWwocHJvcGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKKyAgICB3cmFwcGVkKCku
c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTM1MywxMSArMzUzLDExIEBAIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1
ZT4gY3NzVmFsdWUgPSBpbXBsKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSB3cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghY3NzVmFsdWUpCiAgICAgICAgIHJldHVybiBq
c051bGwoKTsKIAotICAgIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5h
ZGQoY3NzVmFsdWUuZ2V0KCksIHJvb3QoJmltcGwoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1Zh
bHVlT3duZXI6OmZpbmFsaXplKCkuCisgICAgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkubV9jc3NW
YWx1ZVJvb3RzLmFkZChjc3NWYWx1ZS5nZXQoKSwgcm9vdCgmd3JhcHBlZCgpKSk7IC8vIEJhbGFu
Y2VkIGJ5IEpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUoKS4KICAgICByZXR1cm4gdG9KUygmc3Rh
dGUsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjc3NWYWx1ZSkpOwogfQogCkBAIC0zNjYs
NyArMzY2LDcgQEAgdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGUKICAgICBKU0NTU1N0eWxlRGVjbGFy
YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAK
LSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKaW5kZXggZWQ1MTI1MzNlZDMzYTM5MjI1
MmJmNjQ1MmMyMWViYzlhZWE5YTE3Ni4uZDhmNDcwNWFlYmQyYWM0ZjcyYWNiMDliMDI4YmQ1Mzcz
MjEwMmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1
c3RvbS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBKU0NTU1ZhbHVlT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKICAgICBp
ZiAoIWpzQ1NTVmFsdWUtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKLSAgICB2b2lkKiByb290ID0gd29ybGQtPm1fY3NzVmFsdWVSb290
cy5nZXQoJmpzQ1NTVmFsdWUtPmltcGwoKSk7CisgICAgdm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nz
c1ZhbHVlUm9vdHMuZ2V0KCZqc0NTU1ZhbHVlLT53cmFwcGVkKCkpOwogICAgIGlmICghcm9vdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVl
Um9vdChyb290KTsKQEAgLTYwLDggKzYwLDggQEAgdm9pZCBKU0NTU1ZhbHVlT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewog
ICAgIEpTQ1NTVmFsdWUqIGpzQ1NTVmFsdWUgPSBqc0Nhc3Q8SlNDU1NWYWx1ZSo+KGhhbmRsZS5z
bG90KCktPmFzQ2VsbCgpKTsKICAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHdvcmxkLm1fY3NzVmFsdWVSb290
cy5yZW1vdmUoJmpzQ1NTVmFsdWUtPmltcGwoKSk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQs
ICZqc0NTU1ZhbHVlLT5pbXBsKCksIGpzQ1NTVmFsdWUpOworICAgIHdvcmxkLm1fY3NzVmFsdWVS
b290cy5yZW1vdmUoJmpzQ1NTVmFsdWUtPndyYXBwZWQoKSk7CisgICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc0NTU1ZhbHVlLT53cmFwcGVkKCksIGpzQ1NTVmFsdWUpOwogfQogCiBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFs
dWUqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCmluZGV4IGI5OTNiZGMyNDJi
NDJjNzkzYzIxZTlkMDQ3MjE5NDZiMzkwY2U3YjcuLmRhNzU4MDJlZGZmYTE2NzAyOGVkOGUwYjEy
NGFjYTFjNDg0MzIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKQEAgLTUzLDkg
KzUzLDkgQEAgc3RhdGljIENhbnZhc1N0eWxlIHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgpOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMo
SlNDYW52YXNHcmFkaWVudDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZq
c0Nhc3Q8SlNDYW52YXNHcmFkaWVudCo+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVy
biBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzR3JhZGllbnQqPihvYmplY3QpLT53cmFwcGVk
KCkpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTQ2FudmFzUGF0dGVybjo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2Jq
ZWN0KS0+aW1wbCgpKTsKKyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCZqc0Nhc3Q8SlNDYW52
YXNQYXR0ZXJuKj4ob2JqZWN0KS0+d3JhcHBlZCgpKTsKICAgICByZXR1cm4gQ2FudmFzU3R5bGUo
KTsKIH0KIApAQCAtNjcsMTIgKzY3LDEyIEBAIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNvbW1pdChFeGVjU3RhdGUmKQogCiBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzdHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVy
biB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5zdHJva2VTdHlsZSgpKTsKKyAg
ICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuc3Ryb2tlU3R5
bGUoKSk7CiB9CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0
eWxlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEJiBjb250ZXh0ID0gaW1wbCgpOworICAgIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRCYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewog
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnN0
YXRlKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTgyLDEyICs4MiwxMiBAQCB2b2lkIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5
bGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCBpbXBsKCkuZmlsbFN0eWxlKCkpOworICAgIHJldHVybiB0b0pTKCZzdGF0
ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5maWxsU3R5bGUoKSk7CiB9CiAKIHZvaWQgSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9
IGltcGwoKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoYXNTdHJpbmcodmFsdWUpLT52YWx1ZSgmc3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtOTcsNyArOTcsNyBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxs
U3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0TGluZURhc2goRXhlY1N0YXRlJiBzdGF0ZSkgY29u
c3QKIHsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBkYXNoID0gaW1wbCgpLmdldExpbmVEYXNo
KCk7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgZGFzaCA9IHdyYXBwZWQoKS5nZXRMaW5lRGFz
aCgpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICBWZWN0b3I8ZmxvYXQ+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBkYXNoLmVuZCgpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZv
aWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFdlYmtpdExpbmVEYXNoKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsCiAgICAgICAgIGRhc2guYXBwZW5kKGVsZW0pOwogICAgIH0K
IAotICAgIGltcGwoKS5zZXRXZWJraXRMaW5lRGFzaChkYXNoKTsKKyAgICB3cmFwcGVkKCkuc2V0
V2Via2l0TGluZURhc2goZGFzaCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGU1ZGQ2ZTg4MTI3NmM4NTYwYWZiZDVkOTUxM2IyMDdm
MjIyZGRkZmQuLjdmNTA0MzVmNWE2M2QyNThkMmMwM2ZjY2EwZjM3ODVkNmI5ZjRiMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cm9vdChpbXBsKCkuY2FudmFzKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3
cmFwcGVkKCkuY2FudmFzKCkpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0No
YXJhY3RlckRhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcAppbmRleCBjYjgzMWQwNGNmYjhlZjg1Njg0NzZiZDhmZGUzZjhm
ODJlOWE3YzkxLi42MDE3ZjFmNjA5ZmM2ZGYzZWJkOTUzZTQ4NTAzMzhhYmQzZDkxYzhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3Rv
bS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBKU0No
YXJhY3RlckRhdGE6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGltcGwoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7CisgICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSks
IGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmJl
Zm9yZShFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5h
ZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0
LDcgQEAgSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucmVwbGFjZVdpdGgodG9Ob2Rl
T3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRv
Tm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCmlu
ZGV4IGIwNjVkNWNmZjFjZjFiNTA2NDc0NTk2MmJkY2Q4ZDYxZGY3NjdmNTIuLjU1Yzc5MjEyYTEy
NDBmMmZiYmI4MGZiNmZlMGY1NGNjZGRlMmI3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQ29tbWFuZExpbmVB
UElIb3N0OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb21tYW5k
TGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0KiBvYmplY3QgPSBpbXBsKCkuaW5zcGVjdGVk
T2JqZWN0KCk7CisgICAgQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2Jq
ZWN0ID0gd3JhcHBlZCgpLmluc3BlY3RlZE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIEpTVmFsdWUg
SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgVmVjdG9yPEV2ZW50TGlzdGVu
ZXJJbmZvPiBsaXN0ZW5lcnNBcnJheTsKLSAgICBpbXBsKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJbXBs
KG5vZGUsIGxpc3RlbmVyc0FycmF5KTsKKyAgICB3cmFwcGVkKCkuZ2V0RXZlbnRMaXN0ZW5lcnNJ
bXBsKG5vZGUsIGxpc3RlbmVyc0FycmF5KTsKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlz
dGVuZXJzQXJyYXkuc2l6ZSgpOyArK2kpIHsKQEAgLTEyOSw3ICsxMjksNyBAQCBKU1ZhbHVlIEpT
Q29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0
YXRlLmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG9iamVjdChzdGF0ZS52bSgpLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGhpbnRzKHN0YXRlLnZtKCksIHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDEpKTsKLSAgICAgICAgaW1wbCgpLmluc3BlY3RJbXBsKG9iamVjdC50b0lu
c3BlY3RvclZhbHVlKCZzdGF0ZSksIGhpbnRzLnRvSW5zcGVjdG9yVmFsdWUoJnN0YXRlKSk7Cisg
ICAgICAgIHdyYXBwZWQoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZSgmc3Rh
dGUpLCBoaW50cy50b0luc3BlY3RvclZhbHVlKCZzdGF0ZSkpOwogICAgIH0KIAogICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIEpTVmFsdWUgSlNDb21tYW5kTGlu
ZUFQSUhvc3Q6OmRhdGFiYXNlSWQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIERhdGFiYXNlKiBk
YXRhYmFzZSA9IEpTRGF0YWJhc2U6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgaWYgKGRhdGFiYXNlKQotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
JnN0YXRlLCBpbXBsKCkuZGF0YWJhc2VJZEltcGwoZGF0YWJhc2UpKTsKKyAgICAgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgd3JhcHBlZCgpLmRhdGFiYXNlSWRJbXBsKGRhdGFi
YXNlKSk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBA
QCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjpzdG9yYWdlSWQoRXhlY1N0YXRlJiBzdGF0
ZSkKIAogICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBKU1N0b3JhZ2U6OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsK
KyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgd3JhcHBlZCgpLnN0b3Jh
Z2VJZEltcGwoc3RvcmFnZSkpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKaW5kZXggZDA3YmVh
Y2ExNWE1NDcyYjQ2OTBhYWM0NWMxYWQ3NTRjZjVkOWEzOS4uNjg3ZWNkMWI1YjU3M2ZiYmIyYjUw
OTlkYzdlYjFmNDU4Nzg5NmE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQ3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRS
YW5kb21WYWx1ZXMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuZ2V0
UmFuZG9tVmFsdWVzKGFycmF5QnVmZmVyVmlldy5nZXQoKSwgZWMpOworICAgIHdyYXBwZWQoKS5n
ZXRSYW5kb21WYWx1ZXMoYXJyYXlCdWZmZXJWaWV3LmdldCgpLCBlYyk7CiAKICAgICBpZiAoZWMp
IHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCmluZGV4IGFkODFlNGQ0NWIx
ZTYxZWFlMTg3MGFhZWM3M2RlM2FlNWRiYzg5ZjUuLjU4NTk0YmVmMmRiMjlhMmYwOTc1ZWM5OWZm
Y2FmODQwNTFkYjlkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvS2V5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleUN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
SlNWYWx1ZSBKU0NyeXB0b0tleTo6YWxnb3JpdGhtKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29u
c3QKIHsKICAgICBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIgYnVpbGRlcigmc3RhdGUpOwotICAg
IGltcGwoKS5idWlsZEFsZ29yaXRobURlc2NyaXB0aW9uKGJ1aWxkZXIpOworICAgIHdyYXBwZWQo
KS5idWlsZEFsZ29yaXRobURlc2NyaXB0aW9uKGJ1aWxkZXIpOwogICAgIHJldHVybiBidWlsZGVy
LnJlc3VsdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0tleVBhaXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9LZXlQYWlyQ3VzdG9tLmNwcAppbmRleCA5ZmRiODliYzI3ZjY4YTIyYTMyZDljOTk0YmVm
MjhkYzEyMzI5NzlmLi5iNGFkMDQ2MjJjZmZkZjI4ODI1MDNkNTYyODk1MzBjYTE5M2M1YjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1
c3RvbS5jcHAKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpT
Q3J5cHRvS2V5UGFpcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpLnB1YmxpY0tleSgp
KTsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW1wbCgpLnByaXZhdGVLZXkoKSk7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHdyYXBwZWQoKS5wdWJsaWNLZXkoKSk7CisgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHdyYXBwZWQoKS5wcml2YXRlS2V5KCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
RXZlbnRDdXN0b20uY3BwCmluZGV4IGFmMTQ5ZGFhZjA1NDI1MTIzZmU4ODY5NDk5ZDViN2JlZjU4
MDNlNWEuLmM1NTZjOWUyZTUwMGE1NzU3YjcyYzMwYmRhZjVjNjBiNTFiMGUwNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEpTVmFsdWUgSlNDdXN0
b21FdmVudDo6ZGV0YWlsKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgQ3VzdG9tRXZl
bnQmIGV2ZW50ID0gaW1wbCgpOworICAgIEN1c3RvbUV2ZW50JiBldmVudCA9IHdyYXBwZWQoKTsK
ICAgICAKICAgICBpZiAoZXZlbnQuZGV0YWlsKCkuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXggYjI4N2M2Yjg5OTYyN2I0MTgwODk5OGIyNjc2
YTkxZTViNzgxMjUyYS4uNjBjNTdmOGQzYTE5M2Q4MmRjM2M2MTE0NTFkNDhlNjI3MjMzYmQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcApAQCAtODEsNyArODEsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICAgICAg
Y2FsbFR5cGUgPSBtX2N1c3RvbVJlc29sdmVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YSht
X2N1c3RvbVJlc29sdmVyLmdldCgpLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xMTQzMTI+IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkg
Q29uc29sZSBNZXNzYWdlIHNob3VsZCBpbmNsdWRlIExpbmUsIENvbHVtbiwgYW5kIFNvdXJjZVVS
TAotICAgICAgICAgICAgaWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxP
YmplY3QtPmltcGwoKS5jb25zb2xlKCkpCisgICAgICAgICAgICBpZiAoUGFnZUNvbnNvbGVDbGll
bnQqIGNvbnNvbGUgPSBtX2dsb2JhbE9iamVjdC0+d3JhcHBlZCgpLmNvbnNvbGUoKSkKICAgICAg
ICAgICAgICAgICBjb25zb2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZl
IGEgbG9va3VwTmFtZXNwYWNlVVJJIG1ldGhvZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCmluZGV4IDMwMmM3YTlhMDY3NGEwZjhlMGRhMWMxY2VjMDM3YTU0ZDYyNDkzODAuLjIw
ZWY2MDkxMzE5MDZlMzhmM2QyMzdlNzJlYzlhMjdmNDM1ZDMxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQg
cmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24sIENh
Y2hlZFNjcmlwdCogY2FjaGVkCiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKICAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5k
b3cqPihnbG9iYWxPYmplY3QpKSB7Ci0gICAgICAgIGlmICghd2luZG93LT5pbXBsKCkuaXNDdXJy
ZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCisgICAgICAgIGlmICghd2luZG93LT53cmFwcGVkKCku
aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC01MTUsMTIgKzUxNSwxMiBAQCB1aW50NjRfdCB0b1VJbnQ2NChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogCiBET01X
aW5kb3cmIGFjdGl2ZURPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFz
SlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOworICAgIHJl
dHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQo
KTsKIH0KIAogRE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
ICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1w
bCgpOworICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3Qo
KSktPndyYXBwZWQoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50LCBTZWN1cml0
eVJlcG9ydGluZ09wdGlvbiByZXBvcnRpbmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNw
cAppbmRleCAxM2ZkYjUyZDZjMjUzMTljMTkzOGE3NDI5MjI0MjIwNmFjZmVjNjc4Li5iMDQ4YWY5
MTNkMmZiOTY3MTZkNTE1YWYzMDVlYmI5NDZiNjY3NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHRvSFRNTEZv
cm1FbGVtZW50T3JOdWxsKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUu
aW5oZXJpdHMoSlNIVE1MRm9ybUVsZW1lbnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRNTEZvcm1F
bGVtZW50Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4g
dmFsdWUuaW5oZXJpdHMoSlNIVE1MRm9ybUVsZW1lbnQ6OmluZm8oKSkgPyAmanNDYXN0PEpTSFRN
TEZvcm1FbGVtZW50Kj4oYXNPYmplY3QodmFsdWUpKS0+d3JhcHBlZCgpIDogbnVsbHB0cjsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RPTUZvcm1EYXRhKEV4
ZWNTdGF0ZSogZXhlYykKQEAgLTY0LDkgKzY0LDkgQEAgSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjph
cHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZTsKICAg
ICAgICAgICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPj0gMyAmJiAhc3RhdGUuYXJndW1l
bnQoMikuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN0
YXRlLmFyZ3VtZW50KDIpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgICAg
ICAgICBpbXBsKCkuYXBwZW5kKG5hbWUsIEpTQmxvYjo6dG9XcmFwcGVkKHZhbHVlKSwgZmlsZW5h
bWUpOworICAgICAgICAgICAgd3JhcHBlZCgpLmFwcGVuZChuYW1lLCBKU0Jsb2I6OnRvV3JhcHBl
ZCh2YWx1ZSksIGZpbGVuYW1lKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpbXBsKCku
YXBwZW5kKG5hbWUsIHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAg
ICAgICAgICAgd3JhcHBlZCgpLmFwcGVuZChuYW1lLCB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpKTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0
b20uY3BwCmluZGV4IDQzMTJhZTI3Njk1ZTI4NmY3NzkyYjQwZTNkZDVjNzg2ZTgzNjljMDIuLjc1
OGNiNThkMmIwZmM2ZDA1YWZhYjViMTk2YmJjNmE5NzNlYmRiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcApA
QCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NTWltZVR5
cGVBcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBp
dGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0
aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93
Q29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggMGRkNTQ1MTIxN2RjODA4ZGQzZTlmNTJhYmQyYjRm
ZmNkNjRmOGIzZi4uNGZmMTI2MjkyN2NkY2FkYzJhYTJhOWViYjA2YTQxZDQzMDgzMDQyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIGJvb2wgSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRl
bSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCmluZGV4IDI2NjlkODM3ZGYyOTM0
NjUyMzVhODk0MjUxNDJlZjZjMTc0OTgzMDYuLjUzYjRiNDU3MzI3M2U1MjM0ZGIzNjhkMGIwNmI1
OTVjYjI5ZGM0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIGJvb2wgSlNET01QbHVnaW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1
dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01QbHVnaW5DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01QbHVnaW5DdXN0b20uY3BwCmluZGV4IDFhNzU4NmRiZmZjMDMyM2I4MTFiNTU3ZTM5ZjU1OGI3
MGJjZjAzZTcuLmNjZmNhMzQ5ZjJmZGY4NzQ0ZWRhODgzYTA5MjlhZGVhYzViMjExOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTVBsdWdpbjo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKaW5kZXgg
ZmQ0MDFiMjkwNWY2OTFmNmRmZmZkYjVkODVkZDQyNTM0YWRmMjg5Yi4uNWJkMzNjYjJlNTAzODNj
YjczZWZhN2IyMWVlNWM2MWI3YjZlYWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCkBAIC0yOSw3ICsyOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFJlZlB0cjxET01TdHJpbmdMaXN0PiBKU0RPTVN0cmluZ0xpc3Q6
OnRvV3JhcHBlZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLmluaGVyaXRzKEpTRE9NU3RyaW5nTGlzdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuICZq
c0Nhc3Q8SlNET01TdHJpbmdMaXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOworICAgICAg
ICByZXR1cm4gJmpzQ2FzdDxKU0RPTVN0cmluZ0xpc3QqPihhc09iamVjdCh2YWx1ZSkpLT53cmFw
cGVkKCk7CiAKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdN
YXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBD
dXN0b20uY3BwCmluZGV4IDlhZjg0NWMxODIwYjZhNDQ5MTg5MzRlZTMxMDIxNWU2OGQ3NGQzNTUu
LjIyNzFmZDlhYjlhN2NhZDBlM2EzYjU4YzliOTBlMzg3ZjA4MDk3MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHIKICAgICBpZiAocHJvcGVydHlOYW1l
LmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIG5hbWVJc1ZhbGlk
OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaXRlbSA9IGltcGwoKS5pdGVtKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVJc1ZhbGlkKTsKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGl0ZW0gPSB3cmFwcGVkKCkuaXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpLCBuYW1lSXNWYWxpZCk7CiAgICAgaWYgKG5hbWVJc1ZhbGlkKSB7CiAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpcywgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01
Miw3ICs1Miw3IEBAIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiB7CiAgICAgSlNET01TdHJpbmdN
YXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZl
Y3RvcjxTdHJpbmc+IG5hbWVzOwotICAgIHRoaXNPYmplY3QtPmltcGwoKS5nZXROYW1lcyhuYW1l
cyk7CisgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXpl
X3QgbGVuZ3RoID0gbmFtZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgbmFtZXNbaV0pKTsKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBKU0RPTVN0cmluZ01h
cDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZQogICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NU3RyaW5n
TWFwKj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+aW1wbCgpLmRlbGV0ZUl0ZW0ocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5kZWxldGVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogfQogCiBi
b29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4KQpAQCAtODMsNyArODMsNyBAQCBib29sIEpT
RE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpbXBsKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOworICAgIHdyYXBwZWQoKS5zZXRJdGVtKHByb3Bl
cnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gIWVjOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCmluZGV4IGJk
ZDQ4Nzc4NDllY2E3Y2NjOTFiYjZkYTViYzQzZDE2NjI4ZGRkY2UuLjU0Zjc1ZDBhMTllNjRlNzI1
ZDU0YjA5NDMxMDdmNjA5ZTI1M2JkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgSlNWYWx1
ZSBKU0RPTVRva2VuTGlzdDo6dG9nZ2xlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgT3B0aW9uYWw8
Ym9vbD4gZm9yY2UgPSBzdGF0ZS5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gTnVsbG9wdCA6
IE9wdGlvbmFsPGJvb2w+KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3Rh
dGUpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBs
KCkudG9nZ2xlKHRva2VuLCBmb3JjZSwgZWMpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9v
bGVhbih3cmFwcGVkKCkudG9nZ2xlKHRva2VuLCBmb3JjZSwgZWMpKTsKIAogICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYmRkYzIwY2ZlNjI3NmQ1
NmJjY2NkOTk3MWM0NmI1ZmQyOTU4NzhlZS4uZjE3NjRlMTcwNDdiZjM4YzM5ZTAzNjY5ODc3MDU4
OTZiYTYyZTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBhc0pTRE9NV2luZG93KHRoaXNPYmplY3Qp
LT5pbXBsKCkpOworICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coZXhlYywgYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KS0+d3JhcHBlZCgpKTsK
IH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93
IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNE
T01XaW5kb3dCYXNlKSB9OwpAQCAtNzAsNyArNzAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZz
aAogSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCog
c2hlbGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmc2hlbGwtPndv
cmxkKCksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQogICAgICwgbV93aW5kb3dDbG9zZVdh
dGNocG9pbnRzKCh3aW5kb3cgJiYgd2luZG93LT5mcmFtZSgpKSA/IElzV2F0Y2hlZCA6IElzSW52
YWxpZGF0ZWQpCi0gICAgLCBtX2ltcGwod2luZG93KQorICAgICwgbV93cmFwcGVkKHdpbmRvdykK
ICAgICAsIG1fc2hlbGwoc2hlbGwpCiAgICAgLCBtX3ByaXZhdGVGdW5jdGlvbnModm0pCiB7CkBA
IC0xMzEsMjUgKzEzMSwyNSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAg
QVNTRVJUKG1faW1wbC0+ZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKG1fd3JhcHBlZC0+ZG9jdW1l
bnQoKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsRXhlYygpOwotICAgIHN5bWJvbFRh
YmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+
dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX2ltcGwtPmRv
Y3VtZW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9w
ZXJ0eU5hbWVzLT5kb2N1bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX3dyYXBwZWQtPmRvY3VtZW50
KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAg
IHJldHVybiBtX2ltcGwtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC0+ZG9jdW1l
bnQoKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnByaW50RXJyb3JNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKIHsKLSAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1l
KGltcGwoKS5mcmFtZSgpLCBtZXNzYWdlKTsKKyAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1l
KHdyYXBwZWQoKS5mcmFtZSgpLCBtZXNzYWdlKTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6
OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
Y29uc3QgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNE
T01XaW5kb3dCYXNlKj4ob2JqZWN0KTsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5p
bXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBib29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoY29u
c3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29u
c3QgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01X
aW5kb3dCYXNlKj4ob2JqZWN0KTsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT5pbXBs
KCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5Miwx
NiArMTkyLDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRUb1By
ZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldoZW5DbG9zaW5nUGFnCiBib29sIEpTRE9NV2luZG93QmFz
ZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgY29uc3QgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNET01XaW5kb3dCYXNlKj4ob2JqZWN0KTsKLSAgICBBU1NFUlQodGhpc09iamVjdC0+aW1w
bCgpLmZyYW1lKCkpOwotICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUo
KS0+cGFnZSgpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSk7Cisg
ICAgUGFnZSogcGFnZSA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT5wYWdlKCk7CiAg
ICAgcmV0dXJuIHNob3VsZEludGVycnVwdFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJzaW9u
V2hlbkNsb3NpbmdQYWdlKHBhZ2UpOwogfQogCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3Qt
PmltcGwoKS5mcmFtZSgpKTsKLSAgICBQYWdlKiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCktPnBhZ2UoKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkp
OworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgp
OwogCiAgICAgaWYgKHNob3VsZEludGVycnVwdFNjcmlwdFRvUHJldmVudEluZmluaXRlUmVjdXJz
aW9uV2hlbkNsb3NpbmdQYWdlKHBhZ2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxNyw3
ICsyMTcsNyBAQCBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVm
b3JlVGltZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCogbwogUnVudGltZUZsYWdzIEpTRE9NV2lu
ZG93QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2Jq
ZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgRnJhbWUqIGZyYW1lID0g
dGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVj
dC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFJ1
bnRpbWVGbGFncygpOwogICAgIHJldHVybiBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVu
dGltZUZsYWdzKCk7CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZp
cmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKIEpT
Qzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5
KQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9N
V2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9j
dW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkKKyAgICBpZiAoUmVmUHRyPERv
Y3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5yZXNvbHZlKGdsb2JhbE9iamVj
dCwgZXhlYywgbW9kdWxlTmFtZSwgaW1wb3J0ZXJNb2R1bGVLZXkpOwogICAgIEpTQzo6SlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBkZWZlcnJlZC0+
cmVqZWN0KGV4ZWMsIGpzVW5kZWZpbmVkKCkpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIEpTQzo6SlNJ
bnRlcm5hbFByb21pc2UqIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6
OkpTR2xvYmFsT2JqZWN0CiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6
Om1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXkpCiB7CiAgICAgSlNET01X
aW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xv
YmFsT2JqZWN0KTsKLSAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmpl
Y3QtPmltcGwoKS5kb2N1bWVudCgpKQorICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50
ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBkb2N1
bWVudC0+bW9kdWxlTG9hZGVyKCktPmZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlS2V5
KTsKICAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTM0Myw3
ICszNDMsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqCiBKU0M6OkpTVmFsdWUgSlNET01XaW5k
b3dCYXNlOjptb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6
OkpTVmFsdWUgbW9kdWxlUmVjb3JkKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVj
dCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYg
KFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQo
KSkKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigp
LT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZUtleSwgbW9kdWxlUmVjb3JkKTsK
ICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCAxMDc2NDBjMTc2OGZiN2Q4MmU3OTRiMTA2
ZjAyM2IyOTE0Mzg5ZjlmLi5kNjk5YTVhZTU3YjdmNzIyZWFiYTQ4ODI3MDZjMWE0ZTEwMWYzY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAt
NDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2
b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAKLSAgICAgICAgRE9NV2luZG93JiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gKm1faW1wbDsgfQorICAgICAgICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdCB7
IHJldHVybiAqbV93cmFwcGVkOyB9CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgICAgICAvLyBDYWxsZWQganVzdCBi
ZWZvcmUgcmVtb3ZpbmcgdGhpcyB3aW5kb3cgZnJvbSB0aGUgSlNET01XaW5kb3dTaGVsbC4KQEAg
LTg0LDcgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgSlNDOjpK
U0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBtb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICAgICAgUmVmUHRyPERP
TVdpbmRvdz4gbV9pbXBsOworICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dyYXBwZWQ7CiAg
ICAgICAgIEpTRE9NV2luZG93U2hlbGwqIG1fc2hlbGw7CiAKICAgICAgICAgSlNCdWlsdGluSW50
ZXJuYWxGdW5jdGlvbnMgbV9wcml2YXRlRnVuY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDBiYzMzNzU0YWExZmJjNWEz
NjkzMTczNGY3ZDE1OWU0MjQ5MDQ0NmUuLjAwZTYyYTQyYjY0OWJmNzg1NjNkNjA4OGVhMzhkZjgx
MDU5NjIzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTYyLDIxICs2MiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgSlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkKKyAgICBpZiAo
RnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChmcmFtZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGlsZEZyYW1lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlMoZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT5pbXBsKCkuZnJhbWUo
KS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSktPndyYXBwZWQo
KS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiB9CiAKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBuYW1lZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHNsb3RC
YXNlKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT5pbXBsKCkuZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT53cmFwcGVkKCku
ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKIAotICAgIEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iai0+aW1wbCgpKSk7CisgICAgQVNT
RVJUKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0
aGlzT2JqLT53cmFwcGVkKCkpKTsKICAgICBBU1NFUlQoaXM8SFRNTERvY3VtZW50Pihkb2N1bWVu
dCkpOwogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKTsKQEAgLTk2LDkgKzk2LDkgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2QKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1dlYktpdChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNET01XaW5kb3cqIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQorICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRUaGlzLT5pbXBsKCkud2Via2l0TmFtZXNwYWNlKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIGNhc3RlZFRoaXMtPndyYXBwZWQoKS53ZWJraXROYW1lc3BhY2UoKSkpOwog
fQogI2VuZGlmCiAKQEAgLTExMSw5ICsxMTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNE
T01XaW5kb3dJbmRleGVkREIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IHRvSlNET01XaW5kb3coSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5pbmRleGVkREJFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT53
cmFwcGVkKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKERPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZTo6aW5kZXhlZERCKCZpbXBsKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQog
ICAgIC8vIFdlIGRvbid0IHdhbnQgYW55IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFu
ZCAiY2xvc2VkIiBvbiBhIGZyYW1lbGVzcyB3aW5kb3cgKGkuZS4gb25lIHdob3NlIHBhZ2UgZ290
IGNsb3NlZCwKICAgICAvLyBvciB3aG9zZSBpZnJhbWUgZ290IHJlbW92ZWQpLgogICAgIC8vIEZJ
WE1FOiBUaGlzIGRvZXNuJ3QgZnVsbHkgbWF0Y2ggRmlyZWZveCwgd2hpY2ggYWxsb3dzIGF0IGxl
YXN0IHRvU3RyaW5nIGluIGFkZGl0aW9uIHRvIHRob3NlLgotICAgIGlmICghdGhpc09iamVjdC0+
aW1wbCgpLmZyYW1lKCkpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgp
KSB7CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBzYWZlIGZvciBjcm9zcy1kb21h
aW4gYW5kIHNhbWUgZG9tYWluIHVzZS4KICAgICAgICAgLy8gSXQgaWdub3JlcyBhbnkgY3VzdG9t
IHByb3BlcnRpZXMgdGhhdCBtaWdodCBiZSBzZXQgb24gdGhlIERPTVdpbmRvdyAoaW5jbHVkaW5n
IGEgY3VzdG9tIHByb3RvdHlwZSkuCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNsb3NlZCkgewpAQCAtMTQ1LDE0ICsxNDUsMTUgQEAgYm9vbCBKU0RP
TVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHkKICAgICAgICAgLy8gbm90IGFsbG93ZWQuIAogICAgICAgICBzbG90LnNl
dFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UKLSAgICAgICAg
c2xvdC5zZXRXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50
cyk7CisgICAgfQorCisgICAgc2xvdC5zZXRXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QtPm1fd2lu
ZG93Q2xvc2VXYXRjaHBvaW50cyk7CiAKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBjcm9z
cy1kb21haW4gYWNjZXNzIGhlcmUgd2l0aG91dCBwcmludGluZyB0aGUgZ2VuZXJpYyB3YXJuaW5n
IG1lc3NhZ2UKICAgICAvLyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8gc29tZSBm
dW5jdGlvbiwganVzdCBkaWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nlc3MKICAg
ICAvLyBpcyBhbGxvd2VkLgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYm9vbCBhbGxv
d3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3Qt
PmltcGwoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1l
c3NhZ2UpOwogICAgIAogICAgIC8vIExvb2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBh
dCBhbnkgb2Ygb3VyIG93biBwcm9wZXJ0aWVzLCBidXQgaWdub3JlIG92ZXJyaWRlcyBjb21wbGV0
ZWx5CiAgICAgLy8gaWYgdGhpcyBpcyBjcm9zcy1kb21haW4gYWNjZXNzLgpAQCAtMTc2LDcgKzE3
Nyw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRo
aXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBub25DYWNoaW5nU3Rh
dGljRnVuY3Rpb25HZXR0ZXI8anNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdl
LCAyPik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zaG93TW9kYWxEaWFsb2cpIHsKLSAgICAgICAgaWYg
KCFET01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZyh0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUo
KSkpIHsKKyAgICAgICAgaWYgKCFET01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZyh0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVk
KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjA3LDcgKzIwOCw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgfQogCiAjaWYgRU5BQkxFKFVTRVJfTUVT
U0FHRV9IQU5ETEVSUykKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS53ZWJraXQgJiYgdGhpc09iamVjdC0+aW1wbCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3Bh
Y2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLndlYmtpdCAmJiB0aGlzT2JqZWN0LT53cmFwcGVkKCku
c2hvdWxkSGF2ZVdlYktpdE5hbWVzcGFjZUZvcldvcmxkKHRoaXNPYmplY3QtPndvcmxkKCkpKSB7
CiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGFsbG93c0FjY2Vz
cyA/IERvbnREZWxldGUgfCBSZWFkT25seSA6IFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtLCBqc0RPTVdpbmRvd1dlYktpdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTIzNyw3ICsyMzgsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIG5hbWluZyBm
cmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAg
ICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2Us
IHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVj
dC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjQ3LDkgKzI0OCw5IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5CiAKICAgICAvLyBhbGxvdyB3aW5kb3dbMV0gb3IgcGFyZW50WzFdIGV0Yy4gKCM1Njk4
MykKICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSk7Ci0gICAgaWYgKGluZGV4ICYmIGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCku
ZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkQ291bnQoKSkgeworICAgIGlmIChpbmRleCAmJiBp
bmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29w
ZWRDaGlsZENvdW50KCkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFk
T25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwKLSAgICAgICAgICAgIHRvSlMoZXhlYywgdGhp
c09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1ZSgp
KS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsKKyAgICAgICAgICAgIHRvSlMoZXhlYywgdGhp
c09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleC52YWx1
ZSgpKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0yNjAsNyArMjYxLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICB9
CiAKICAgICAvLyBBbGxvdyBzaG9ydGN1dHMgbGlrZSAnSW1hZ2UxJyBpbnN0ZWFkIG9mIGRvY3Vt
ZW50LmltYWdlcy5JbWFnZTEKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5p
bXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTERv
Y3VtZW50PigqZG9jdW1lbnQpKSB7CiAgICAgICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1By
b3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgICAgIGlmIChhdG9t
aWNQcm9wZXJ0eU5hbWUgJiYgZG93bmNhc3Q8SFRNTERvY3VtZW50PigqZG9jdW1lbnQpLmhhc1dp
bmRvd05hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKSkgewpAQCAtMjc2LDcgKzI3Nyw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIAotICAgIGlmICghdGhpc09iamVj
dC0+aW1wbCgpLmZyYW1lKCkpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFt
ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIG1lc3NhZ2UgaGVyZSB0
aGF0IGV4cGxhaW5zIHdoeSB0aGUgcHJvcGVydHkgYWNjZXNzL2Z1bmN0aW9uIGNhbGwgd2FzCiAg
ICAgICAgIC8vIG5vdCBhbGxvd2VkLiAKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKQEAg
LTI4Nyw3ICsyODgsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIC8vIGJlY2F1c2Ug
d2UgYWx3YXlzIGFsbG93IGFjY2VzcyB0byBzb21lIGZ1bmN0aW9uLCBqdXN0IGRpZmZlcmVudCBv
bmVzIGRlcGVuZGluZyB3aGV0aGVyIGFjY2VzcwogICAgIC8vIGlzIGFsbG93ZWQuCiAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZTsKLSAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLCBlcnJvck1lc3NhZ2UpOwor
ICAgIGJvb2wgYWxsb3dzQWNjZXNzID0gc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBMb29rIGZv
ciBvdmVycmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcywg
YnV0IGlnbm9yZSBvdmVycmlkZXMgY29tcGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMgY3Jvc3Mt
ZG9tYWluIGFjY2Vzcy4KQEAgLTMwMSw3ICszMDIsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dQogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cg
cHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBo
YXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4K
LSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlz
T2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFt
ZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9t
KHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBjaGlsZEZyYW1l
R2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzIzLDkgKzMyNCw5IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgLy8gV2UgbmVlZCB0byB0ZXN0IHRoZSBjb3Jy
ZWN0IHByaW9yaXR5IG9yZGVyLgogCiAgICAgLy8gYWxsb3cgd2luZG93WzFdIG9yIHBhcmVudFsx
XSBldGMuICgjNTY5ODMpCi0gICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1l
KCktPnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkpIHsKKyAgICBpZiAoaW5kZXggPCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkQ291bnQoKSkgewogICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtLAotICAgICAgICAgICAgdG9KUyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUo
KS0+dHJlZSgpLnNjb3BlZENoaWxkKGluZGV4KS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsK
KyAgICAgICAgICAgIHRvSlMoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRy
ZWUoKS5zY29wZWRDaGlsZChpbmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzM2LDcgKzMzNyw3IEBAIGJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCB1CiAgICAgfQogCiAgICAgLy8gQWxsb3cgc2hvcnRjdXRzIGxpa2UgJ0ltYWdl
MScgaW5zdGVhZCBvZiBkb2N1bWVudC5pbWFnZXMuSW1hZ2UxCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7
CiAgICAgaWYgKGlzPEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KSkgewogICAgICAgICAvLyBUaGlz
IHByb3BlcnR5TmFtZSBpcyBnZW5lcmF0ZWQgYnkgSWRlbnRpZmllcjo6ZnJvbS4KICAgICAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgSWRlbnRpZmllciBmcm9tIFN0cmluZyBhbmQgYWx3
YXlzIHJldHVybnMgdGhlIG5vbi1zeW1ib2wgSWRlbnRpZmllci4KQEAgLTM1NCwxMiArMzU1LDEy
IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwotICAgIGlmICghdGhpc09iamVj
dC0+aW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gT3B0aW1pemF0aW9uOiBhY2Nlc3MgSmF2YVNj
cmlwdCBnbG9iYWwgdmFyaWFibGVzIGRpcmVjdGx5IGJlZm9yZSBpbnZvbHZpbmcgdGhlIERPTS4K
ICAgICBpZiAodGhpc09iamVjdC0+SlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3Jp
dGUoZXhlYywgcHJvcGVydHlOYW1lKSkgewotICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisg
ICAgICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
ZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0zNjcsMjYgKzM2OCwyNiBAQCB2b2lkIEpTRE9NV2luZG93
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsCiAgICAgaWYgKGxvb2t1cFB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3Qs
IHZhbHVlLCAqc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUsIHNsb3QpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkp
KQogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
V2luZG93Kj4oY2VsbCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkKKyAg
ICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IGluZGV4KTsKIAogICAgIC8vIE9wdGltaXphdGlvbjogYWNjZXNzIEphdmFTY3JpcHQgZ2xvYmFs
IHZhcmlhYmxlcyBkaXJlY3RseSBiZWZvcmUgaW52b2x2aW5nIHRoZSBET00uCiAgICAgaWYgKHRo
aXNPYmplY3QtPkpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKGV4ZWMsIHBy
b3BlcnR5TmFtZSkpIHsKLSAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgICAgICBpZiAo
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNP
YmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0QnlJbmRl
eCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKEJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkpKQogICAgICAgICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCkBAIC0zOTQsNyArMzk1LDcgQEAg
Ym9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm8KIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcg
cHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3Qt
PmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwogfQpAQCAtNDAzLDcgKzQwNCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+
KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMg
aW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09i
amVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsK
IH0KQEAgLTQxMiw3ICs0MTMsNyBAQCB1aW50MzJfdCBKU0RPTVdpbmRvdzo6Z2V0RW51bWVyYWJs
ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSlNET01X
aW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8v
IE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2Ft
ZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gQmFzZTo6Z2V0RW51bWVyYWJs
ZUxlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKIH0KQEAgLTQyMSw3ICs0MjIsNyBAQCB2b2lkIEpT
RE9NV2luZG93OjpnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUAogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8g
ZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3Qt
PmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIEJhc2U6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00MzAsNyArNDMxLDcgQEAgdm9pZCBKU0RPTVdpbmRv
dzo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm8KIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0
ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkp
KQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93
KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNl
OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKIH0KQEAgLTQzOSw3ICs0NDAsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpnZXRQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQog
ewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2Jq
ZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBmcmFt
ZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCisgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhp
c09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00
NDgsNyArNDQ5LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnQKIHsKICAgICBKU0RPTVdpbmRv
dyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25s
eSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9y
aWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQo
KSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtNDU3LDcgKzQ1OCw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVj
dCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5p
bmcgcHJvcGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBh
cyBpdCBhbGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgotICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmlt
cGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgc2hhZG93aW5nIGxvY2F0aW9uIHVzaW5nIGFjY2Vzc29y
IHByb3BlcnRpZXMuCkBAIC00NzYsNyArNDc3LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9j
YXRpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAvLyBhIHByb3BlcnR5
IG5hbWVkICJsb2NhdGlvbiIgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIGEgbmF2aWdhdGlvbiAoPHJk
YXI6Ly9wcm9ibGVtLzU2ODgwMzk+KS4KICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0
aXZlRE9NV2luZG93KCZzdGF0ZSkuZnJhbWUoKSkgewogICAgICAgICBpZiAoYWN0aXZlRnJhbWUt
PnNldHRpbmdzKCkudXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAh
YWN0aXZlRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewotICAgICAgICAgICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIGltcGwoKSkpCisg
ICAgICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2lu
ZG93KCZzdGF0ZSwgd3JhcHBlZCgpKSkKICAgICAgICAgICAgICAgICBwdXREaXJlY3Qoc3RhdGUu
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJsb2NhdGlvbiIpLCB2YWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ4Nyw3ICs0ODgsNyBAQCB2b2lk
IEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS5sb2NhdGlvbigpKQorICAgIGlmIChMb2Nh
dGlvbiogbG9jYXRpb24gPSB3cmFwcGVkKCkubG9jYXRpb24oKSkKICAgICAgICAgbG9jYXRpb24t
PnNldEhyZWYoYWN0aXZlRE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSks
IGxvY2F0aW9uU3RyaW5nKTsKIH0KIApAQCAtNTMwLDcgKzUzMSw3IEBAIEpTVmFsdWUgSlNET01X
aW5kb3c6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPERPTVdpbmRv
dz4gb3BlbmVkV2luZG93ID0gaW1wbCgpLm9wZW4odXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRv
d0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3co
JnN0YXRlKSk7CisgICAgUmVmUHRyPERPTVdpbmRvdz4gb3BlbmVkV2luZG93ID0gd3JhcHBlZCgp
Lm9wZW4odXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVE
T01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSk7CiAgICAgaWYgKCFvcGVu
ZWRXaW5kb3cpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiB0b0pT
KCZzdGF0ZSwgb3BlbmVkV2luZG93LmdldCgpKTsKQEAgLTU4NSw3ICs1ODYsNyBAQCBKU1ZhbHVl
IEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIERp
YWxvZ0hhbmRsZXIgaGFuZGxlcihzdGF0ZSk7CiAKLSAgICBpbXBsKCkuc2hvd01vZGFsRGlhbG9n
KHVybFN0cmluZywgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGFjdGl2ZURPTVdpbmRvdygmc3RhdGUp
LCBmaXJzdERPTVdpbmRvdygmc3RhdGUpLCBbJmhhbmRsZXJdKERPTVdpbmRvdyYgZGlhbG9nKSB7
CisgICAgd3JhcHBlZCgpLnNob3dNb2RhbERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1cmVz
U3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRlKSwg
WyZoYW5kbGVyXShET01XaW5kb3cmIGRpYWxvZykgewogICAgICAgICBoYW5kbGVyLmRpYWxvZ0Ny
ZWF0ZWQoZGlhbG9nKTsKICAgICB9KTsKIApAQCAtNjM1LDEyICs2MzYsMTIgQEAgc3RhdGljIEpT
VmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRl
KQogCiBKU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUmIHN0YXRlKQog
ewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShpbXBsKCksIHN0YXRlKTsKKyAgICByZXR1
cm4gaGFuZGxlUG9zdE1lc3NhZ2Uod3JhcHBlZCgpLCBzdGF0ZSk7CiB9CiAKIEpTVmFsdWUgSlNE
T01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGltcGwoKS5kb2N1bWVudCgpID8g
aW1wbCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKKyAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQo
KS5kb2N1bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02NTEsNyArNjUyLDcgQEAgSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGludCBk
ZWxheSA9IHN0YXRlLmFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBpbXBsKCkuc2V0VGltZW91dChXVEY6Om1v
dmUoYWN0aW9uKSwgZGVsYXksIGVjKTsKKyAgICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldFRp
bWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NTksNyAr
NjYwLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRl
KQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQog
ewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gaW1w
bCgpLmRvY3VtZW50KCkgPyBpbXBsKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCkgOiBudWxscHRyOworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5
UG9saWN5ID0gd3JhcHBlZCgpLmRvY3VtZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hl
ZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCktPndvcmxkKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTY2
OSw3ICs2NzAsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUm
IHN0YXRlKQogICAgICAgICByZXR1cm4ganNOdW1iZXIoMCk7CiAKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBpbnQgcmVzdWx0ID0gaW1wbCgpLnNldEludGVydmFsKFdURjo6bW92ZShh
Y3Rpb24pLCBkZWxheSwgZWMpOworICAgIGludCByZXN1bHQgPSB3cmFwcGVkKCkuc2V0SW50ZXJ2
YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CkBAIC02NzcsNyArNjc4
LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkK
IAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFt
ZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCkBAIC02ODUsMTMgKzY4NiwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93
OjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS5h
ZGRFdmVudExpc3RlbmVyKHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRv
bWljU3RyaW5nKCZzdGF0ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3Rl
bmVyKSwgdGhpcywgZmFsc2UsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpKSwgc3RhdGUuYXJndW1l
bnQoMikudG9Cb29sZWFuKCZzdGF0ZSkpOworICAgIHdyYXBwZWQoKS5hZGRFdmVudExpc3RlbmVy
KHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0
ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFs
c2UsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpKSwgc3RhdGUuYXJndW1lbnQoMikudG9Cb29sZWFu
KCZzdGF0ZSkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpTRE9N
V2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgRnJh
bWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKQEAgLTY5OSw3ICs3MDAsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExp
c3RlbmVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS5yZW1vdmVFdmVudExp
c3RlbmVyKHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5n
KCZzdGF0ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhp
cywgZmFsc2UsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQo
MikudG9Cb29sZWFuKCZzdGF0ZSkpOworICAgIHdyYXBwZWQoKS5yZW1vdmVFdmVudExpc3RlbmVy
KHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0
ZSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFs
c2UsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpKS5wdHIoKSwgc3RhdGUuYXJndW1lbnQoMikudG9C
b29sZWFuKCZzdGF0ZSkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC03MDks
OSArNzEwLDkgQEAgRE9NV2luZG93KiBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKEpTVmFsdWUgdmFs
dWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2
YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNET01XaW5kb3c6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiAmanNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KS0+aW1wbCgpOworICAg
ICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCktPndyYXBwZWQoKTsKICAg
ICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0RPTVdpbmRvd1NoZWxsOjppbmZvKCkpKQotICAgICAg
ICByZXR1cm4gJmpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+aW1wbCgpOworICAg
ICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+d3JhcHBlZCgp
OwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDU0Y2I1ZTU0MDQyMDE1MDVkNWRhN2VhNDdlNzRmYTBj
MmVmMGUwNjQuLjExMjA2Njg1MjIyMjlmN2QxNmRlZjg2OWRmOTE3OTY3ZjUxY2E3MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8
RE9NV2luZG93PiBkb21XaW5kb3cpCiB7CiAgICAgLy8gUmVwbGFjaW5nIEpTRE9NV2luZG93IHZp
YSB0ZWxsaW5nIEpTRE9NV2luZG93U2hlbGwgdG8gdXNlIHRoZSBzYW1lIERPTVdpbmRvdyBpdCBh
bHJlYWR5IHVzZXMgbWFrZXMgbm8gc2Vuc2UsCiAgICAgLy8gc28gd2UnZCBiZXR0ZXIgbmV2ZXIg
dHJ5IHRvLgotICAgIEFTU0VSVCghd2luZG93KCkgfHwgZG9tV2luZG93LmdldCgpICE9ICZ3aW5k
b3coKS0+aW1wbCgpKTsKKyAgICBBU1NFUlQoIXdpbmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAh
PSAmd2luZG93KCktPndyYXBwZWQoKSk7CiAgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBn
bG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAogICAgIC8vIHdo
ZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0
IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90
eXBlLikKQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3co
UGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdykKIC8vIEpTRE9NV2luZG93IG1ldGhvZHMK
IC8vIC0tLS0KIAotRE9NV2luZG93JiBKU0RPTVdpbmRvd1NoZWxsOjppbXBsKCkgY29uc3QKK0RP
TVdpbmRvdyYgSlNET01XaW5kb3dTaGVsbDo6d3JhcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHdpbmRvdygpLT5pbXBsKCk7CisgICAgcmV0dXJuIHdpbmRvdygpLT53cmFwcGVkKCk7CiB9CiAK
IC8vIC0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
aAppbmRleCBjZWRiNTljNzM1MmFjZGYxMGEzMTc2YTA3YjIxODNhZTc1MmM2OGE4Li4wMWYwNDhk
NjdhNGY1YjhkMGYxZWU5NjlkNWQyNzU0NWYxMjc0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBERUNMQVJFX0lORk87CiAKLSAgICAgICAgRE9NV2luZG93
JiBpbXBsKCkgY29uc3Q7CisgICAgICAgIERPTVdpbmRvdyYgd3JhcHBlZCgpIGNvbnN0OwogCiAg
ICAgICAgIHN0YXRpYyBKU0RPTVdpbmRvd1NoZWxsKiBjcmVhdGUoSlNDOjpWTSYgdm0sIFBhc3NS
ZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKaW5kZXggZTQ5NDE1ZTJiYzQyNDU4MGMyYmM5MDBiZDMyM2Y2N2IwODA5
NTIzNS4uMjYyNmY1OGFlZWE5MDI0NTEwMGJkMmRiOWFlMTA3ZGUwYzMzZGVlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTUyLDE2ICs1MiwxNSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsZW1lbnRhdGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIg
OiBwdWJsaWMgSlNET01PYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3Qg
QmFzZTsKIAotICAgIEltcGxlbWVudGF0aW9uQ2xhc3MmIGltcGwoKSBjb25zdCB7IHJldHVybiAq
bV9pbXBsOyB9Ci0gICAgfkpTRE9NV3JhcHBlcigpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51
bGxwdHIpLT5kZXJlZigpOyB9CisgICAgSW1wbGVtZW50YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1wbGVtZW50YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5n
ZXQoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxJbXBsZW1l
bnRhdGlvbkNsYXNzPiYmIGltcGwpCiAgICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKLSAgICAgICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKSB7IH0KKyAgICAgICAgLCBt
X3dyYXBwZWQoV1RGOjptb3ZlKGltcGwpKSB7IH0KIAogcHJpdmF0ZToKLSAgICBJbXBsZW1lbnRh
dGlvbkNsYXNzKiBtX2ltcGw7CisgICAgUmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+IG1fd3JhcHBl
ZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCmluZGV4IDdhYjMyNDVkMGJiYzJiZDdkZjU3ZjJi
NzU5YjM0YjA0ODBmMzM1YTEuLmJlNTNlYmVkOTUxNDFiZjY4NTYxOTc1YzQxNjdhZTUyYzAxZTJl
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNw
cApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoREFU
QUNVRV9WQUxVRSkKIEpTVmFsdWUgSlNEYXRhQ3VlOjp2YWx1ZShFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAogewotICAgIHJldHVybiBpbXBsKCkudmFsdWUoJnN0YXRlKTsKKyAgICByZXR1cm4gd3Jh
cHBlZCgpLnZhbHVlKCZzdGF0ZSk7CiB9CiAKIHZvaWQgSlNEYXRhQ3VlOjpzZXRWYWx1ZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIGltcGwoKS5zZXRWYWx1ZSgmc3Rh
dGUsIHZhbHVlKTsKKyAgICB3cmFwcGVkKCkuc2V0VmFsdWUoJnN0YXRlLCB2YWx1ZSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJh
bnNmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNm
ZXJDdXN0b20uY3BwCmluZGV4IDBiMGZhOTA3NjAxNjU2NzEzMWNiOGQ3MDMzYzljODYxOGMwYTFk
ZTguLmRmYzhkNDRjZjY2ZDVkZTJlZDkyZDJlY2RiYTFmMzY1NjYyOGU3NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTRGF0YVRyYW5z
ZmVyOjp0eXBlcyhFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzID0gaW1wbCgpLnR5cGVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSB3cmFw
cGVkKCkudHlwZXMoKTsKICAgICByZXR1cm4gdHlwZXMuaXNFbXB0eSgpID8ganNOdWxsKCkgOiBq
c0FycmF5KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHR5cGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCA4Mzg5ZDYxZTU4MzEzODU0ZjU1NjMzYzJjOTNkNTEx
NzMwYzNlYTBlLi4wZTliOTc2N2ZjMzI5Y2Q5ZWM1NjNiZDliZTRjMWZlZmYxNjg1OTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEpTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGhhbmRs
ZVBvc3RNZXNzYWdlKHN0YXRlLCAmaW1wbCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3Nh
Z2Uoc3RhdGUsICZ3cmFwcGVkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwCmluZGV4IDdkODBmNmYxYjhmZWExZDBhNzdlZGY4ODg2YjNlZDMzMGY2NmJmMDAu
LjczNzYyY2FhMTNjNTRmZTVjZmI5NjM3ODA5MTkwZjQ4YzY2ODllOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSb3RhdGlvblJh
dGVPYmplY3QoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKgogCiBKU1ZhbHVl
IEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogewotICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90
aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRh
KCktPmFjY2VsZXJhdGlvbigpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJu
IGNyZWF0ZUFjY2VsZXJhdGlvbk9iamVjdChpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVy
YXRpb24oKSwgc3RhdGUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rp
b25FdmVudDo6YWNjZWxlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIEpTVmFsdWUg
SlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eShFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogewotICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7
CisgICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5k
ZXZpY2VNb3Rpb25EYXRhKCktPmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSkKICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmplY3Qo
aW1wLmRldmljZU1vdGlvbkRhdGEoKS0+YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSgpLCBz
dGF0ZSk7CkBAIC0xNTIsNyArMTUyLDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojph
Y2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnMKIAogSlNW
YWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJhdGUoRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKIHsKLSAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmlj
ZU1vdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9u
RGF0YSgpLT5yb3RhdGlvblJhdGUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJl
dHVybiBjcmVhdGVSb3RhdGlvblJhdGVPYmplY3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+cm90
YXRpb25SYXRlKCksIHN0YXRlKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlIEpTRGV2aWNl
TW90aW9uRXZlbnQ6OnJvdGF0aW9uUmF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1Zh
bHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmludGVydmFsKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0g
ICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VNb3Rpb25FdmVu
dCYgaW1wID0gd3JhcHBlZCgpOwogICAgIGlmICghaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+Y2Fu
UHJvdmlkZUludGVydmFsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4g
anNOdW1iZXIoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+aW50ZXJ2YWwoKSk7CkBAIC0xODksNyAr
MTg5LDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZl
bnQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBib29sIGludGVydmFsUHJvdmlkZWQgPSAhc3RhdGUu
YXJndW1lbnQoNikuaXNVbmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgaW50ZXJ2YWwgPSBz
dGF0ZS5hcmd1bWVudCg2KS50b051bWJlcigmc3RhdGUpOwogICAgIFJlZlB0cjxEZXZpY2VNb3Rp
b25EYXRhPiBkZXZpY2VNb3Rpb25EYXRhID0gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKGFjY2Vs
ZXJhdGlvbiwgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgcm90YXRpb25SYXRlLCBpbnRl
cnZhbFByb3ZpZGVkLCBpbnRlcnZhbCk7Ci0gICAgaW1wbCgpLmluaXREZXZpY2VNb3Rpb25FdmVu
dCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdldCgpKTsKKyAg
ICB3cmFwcGVkKCkuaW5pdERldmljZU1vdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFi
bGUsIGRldmljZU1vdGlvbkRhdGEuZ2V0KCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVu
dGF0aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCAxMTI3MDUyYmM2MDVlN2FjZGY2ZDVk
YTY2ZGM0MjhmOGE4YmY4ZWM2Li41NmFiZDliMjQxODAyMmUxNmUzOTg0ZGMzNzUwY2I1NTIyNmY3
MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVu
dGF0aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEo
RXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSBp
bXBsKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVBbHBoYSgpKQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5hbHBo
YSgpKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6
OmFscGhhKEV4ZWNTdGF0ZSYpIGNvbnN0CiAKIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50OjpiZXRhKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVu
dCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBw
ZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQmV0YSgpKQogICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlv
bigpLT5iZXRhKCkpOwpAQCAtNTYsNyArNTYsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6YmV0YShFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50
YXRpb25FdmVudDo6Z2FtbWEoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRh
dGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1w
ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVHYW1t
YSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5v
cmllbnRhdGlvbigpLT5nYW1tYSgpKTsKQEAgLTY1LDcgKzY1LDcgQEAgSlNWYWx1ZSBKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQ6OmdhbW1hKEV4ZWNTdGF0ZSYpIGNvbnN0CiAjaWYgUExBVEZPUk0o
SU9TKQogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NIZWFk
aW5nKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1w
ID0gaW1wbCgpOworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsK
ICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50
YXRpb24oKS0+Y29tcGFzc0hlYWRpbmcoKSk7CkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUmKSBj
b25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0Fj
Y3VyYWN5KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYg
aW1wID0gaW1wbCgpOworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQo
KTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5
KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9y
aWVudGF0aW9uKCktPmNvbXBhc3NBY2N1cmFjeSgpKTsKQEAgLTgzLDcgKzgzLDcgQEAgSlNWYWx1
ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NBY2N1cmFjeShFeGVjU3Rh
dGUmKSBjb25zdAogI2lmICFQTEFURk9STShJT1MpCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6YWJzb2x1dGUoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBEZXZpY2VPcmllbnRh
dGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1w
ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVBYnNv
bHV0ZSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihp
bXAub3JpZW50YXRpb24oKS0+YWJzb2x1dGUoKSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSlNWYWx1
ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgYm9vbCBhYnNvbHV0ZSA9IHN0YXRlLmFyZ3VtZW50KDYpLnRv
Qm9vbGVhbigmc3RhdGUpOwogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG9yaWVu
dGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYWxwaGFQcm92aWRlZCwgYWxw
aGEsIGJldGFQcm92aWRlZCwgYmV0YSwgZ2FtbWFQcm92aWRlZCwgZ2FtbWEsIGFic29sdXRlUHJv
dmlkZWQsIGFic29sdXRlKTsKICNlbmRpZgotICAgIGltcGwoKS5pbml0RGV2aWNlT3JpZW50YXRp
b25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5nZXQoKSk7Cisg
ICAgd3JhcHBlZCgpLmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNh
bmNlbGFibGUsIG9yaWVudGF0aW9uLmdldCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNw
cAppbmRleCBlYzBiOWMyYmEzMGU4NjBmNmUyYmE5ODAxNzBkOGY3MDJiNDQ1MmQ3Li4wOTRjZTNl
MzIyZGIwZDcwYjIwYThkYmEzMGU0YjEyMzU5Yzk4NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBEb2N1CiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkucHJl
cGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkucHJl
cGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTExMiw3ICsx
MTIsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpT
VmFsdWUgSlNEb2N1bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3Rvcihz
dGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKaW5kZXggYzM1MmQ1ZGI5N2JiY2RlMGM2Y2Zj
OTYxZGJhZWE0ODFjYjcyMTVjNS4uN2RhMzg0N2MxNzZmMDY3MGM3Y2NkNTkxMmYzNjkwMmZkOWMw
NDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZy
YWdtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50RnJhZ21lbnRDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIEpTVmFsdWUgSlNEb2N1bWVudEZyYWdtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2Rl
T3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2Rl
T3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00Niw3ICs0Niw3IEBAIEpTVmFs
dWUgSlNEb2N1bWVudEZyYWdtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVl
IEpTRG9jdW1lbnRGcmFnbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCmluZGV4IDgzMzM4NzIwMWJiZjYwMmI1NTUzNjA4YmVi
NTUxMDYyOWNlY2I5NWEuLmE5M2Q2NzE3M2Q5NDI1NTZiMGYyMjYyY2I0MDgxOTIyMGIzZmU5ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1
c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNWYWx1ZSBK
U0RvY3VtZW50VHlwZTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRl
KSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwpAQCAtNDUsNyArNDUsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpi
ZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVyKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5h
ZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU0LDcgKzU0
LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YWZ0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIEpT
VmFsdWUgSlNEb2N1bWVudFR5cGU6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IGZlZmRlMzU3YTdkY2I2ZWI3YzVk
NmY2NjFlN2I1N2Y1YzAwZTk0MzEuLjFkNjUyNDJmMTYxYThiZTY2MmJmNzM2ZmY4MmQ1ZjhhNjZl
MTk4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9t
LmNwcApAQCAtNzAsNyArNzAsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRWxlbWVudCogZQogSlNWYWx1ZSBK
U0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBl
Yyk7CisgICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKQEAgLTc5LDcgKzc5LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVj
U3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmFmdGVyKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBK
U0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6cmVw
bGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpbXBsKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7
CisgICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtOTcsNyArOTcsNyBAQCBKU1ZhbHVlIEpTRWxlbWVudDo6cmVwbGFjZVdp
dGgoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBl
bmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBl
bmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMDYsNyArMTA2
LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFs
dWUgSlNFbGVtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpbXBsKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRl
KSwgZWMpOworICAgIHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20u
Y3BwCmluZGV4IDUxZTlmMGQ5MzBmNmM5ZjY5OGZkMjBhY2E5YjgwMWE2ODdhZjg3ZTAuLjYwOTk1
NDE2OTU2ZmJkZTE1MThhNTlhZGRjMGE1ZjQwNjY5NWY1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0V2ZW50OjpjbGlwYm9hcmREYXRhKEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGltcGwoKS5pc0NsaXBib2FyZEV2ZW50KCkgPyB0
b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5jbGlwYm9hcmREYXRhKCkpIDoganNV
bmRlZmluZWQoKTsKKyAgICByZXR1cm4gd3JhcHBlZCgpLmlzQ2xpcGJvYXJkRXZlbnQoKSA/IHRv
SlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmNsaXBib2FyZERhdGEoKSkgOiBq
c1VuZGVmaW5lZCgpOwogfQogCiAjZGVmaW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKGlu
dGVyZmFjZU5hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwCmluZGV4IDI4MGNhMTJkZWJkMGYwMGY4NWVhYjMwYzk4Y2RiMzc4ZWRmMzcwY2Iu
LjgzZWNhOTRhNDA3ZTNhMTI5OWNhYmY3Mjk4ODI2NDdjZWY2ODVmNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtOTEsMTAgKzkxLDEw
IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoIXdpbmRvdy0+aW1w
bCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICBpZiAoIXdpbmRvdy0+
d3JhcHBlZCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNv
bnRleHRzPwotICAgICAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQgPSB3aW5kb3ctPmltcGwo
KS5mcmFtZSgpLT5zY3JpcHQoKTsKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0ID0g
d2luZG93LT53cmFwcGVkKCkuZnJhbWUoKS0+c2NyaXB0KCk7CiAgICAgICAgIGlmICghc2NyaXB0
LmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQuaXNQYXVz
ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IGM3Yzc0NTA1YTZhMWZh
ZWYwY2M3ZGE5YjJjNjY1MzI0ZTJkNGY3OWMuLmU4ZWFkMWMxZDQyZjBkZGZmZWU5NjZlMTgyMGVk
MDI1MDg4MmY0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0
YXJnCiAKICNkZWZpbmUgVFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1l
KSBcCiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTIyNpbnRlcmZhY2VOYW1lOjppbmZvKCkpKSAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTIyNpbnRlcmZh
Y2VOYW1lKj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOworICAgICAgICByZXR1cm4gJmpzQ2Fz
dDxKUyMjaW50ZXJmYWNlTmFtZSo+KGFzT2JqZWN0KHZhbHVlKSktPndyYXBwZWQoKTsKIAogRXZl
bnRUYXJnZXQqIEpTRXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNw
cAppbmRleCA1MWZiZjRmYTE4MmY0YzNiYzQ2YmE1OGZiZGUwN2M1ZWY1OGYxMDY5Li5hM2MwOWIx
ODMwNDExOWE4ZWU4ZGQ3N2I0ZDdkZmY1NDgyZDNiMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTRmlsZVJlYWRlcjo6cmVzdWx0KEV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgRmlsZVJlYWRlciYgaW1wID0gaW1wbCgpOworICAg
IEZpbGVSZWFkZXImIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoaW1wLnJlYWRUeXBlKCkgPT0g
RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiB0b0pT
KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcC5hcnJheUJ1ZmZlclJlc3Vs
dCgpKSk7CiAgICAgcmV0dXJuIGpzT3duZWRTdHJpbmdPck51bGwoJnN0YXRlLCBpbXAuc3RyaW5n
UmVzdWx0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9s
b2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0
aW9uQ3VzdG9tLmNwcAppbmRleCBlYmM1YmE3YWI2MzBjZmE1M2QwMTViMmM2ZDM0MjM4OTQ1Mjgw
OTE3Li5iMDFiZTdkYmQwZjAzZWNhODBjNmQwOTVmMGFlYzhjNzc2ZTg1MmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApAQCAt
MTE0LDcgKzExNCw3IEBAIEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFT
U0VSVChwb3NpdGlvbk9wdGlvbnMpOwogCi0gICAgaW1wbCgpLmdldEN1cnJlbnRQb3NpdGlvbihw
b3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CisgICAgd3JhcHBlZCgpLmdldEN1cnJlbnRQ
b3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNr
LnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBKU1ZhbHVlIEpTR2VvbG9jYXRpb246
OndhdGNoUG9zaXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uT3B0aW9ucyk7CiAKLSAgICBpbnQgd2F0Y2hJRCA9
IGltcGwoKS53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlv
bkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAg
ICBpbnQgd2F0Y2hJRCA9IHdyYXBwZWQoKS53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2su
cmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlv
bnMucmVsZWFzZSgpKTsKICAgICByZXR1cm4ganNOdW1iZXIod2F0Y2hJRCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1
c3RvbS5jcHAKaW5kZXggMjU5MmY0NjcyZThhMjE3MGViZmZlYTIyZDgzMzU1ODEzMzlmMjFmOS4u
OTRiYzMyNGFlZGUzODBmMGFkOTI5Yzg0MzRjNWI5ZGFhOTliMGM1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSlNWYWx1
ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVmVjdG9yPFJlZjxFbGVt
ZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rpb24tPmltcGwoKS5uYW1lZEl0ZW1zKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxlbWVu
dD4+IG5hbWVkSXRlbXMgPSBjb2xsZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVtcyhwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIAogICAgIGlmIChuYW1lZEl0ZW1z
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01OCw3ICs1OCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVj
dGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyBEbyBub3QgdXNlIHRoaXNPYmogaGVyZS4g
SXQgY2FuIGJlIHRoZSBKU0hUTUxEb2N1bWVudCwgaW4gdGhlIGRvY3VtZW50LmZvcm1zKGkpIGNh
c2UuCiAgICAgSlNIVE1MQWxsQ29sbGVjdGlvbioganNDb2xsZWN0aW9uID0ganNDYXN0PEpTSFRN
TEFsbENvbGxlY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7Ci0gICAgSFRNTEFsbENvbGxlY3Rpb24m
IGNvbGxlY3Rpb24gPSBqc0NvbGxlY3Rpb24tPmltcGwoKTsKKyAgICBIVE1MQWxsQ29sbGVjdGlv
biYgY29sbGVjdGlvbiA9IGpzQ29sbGVjdGlvbi0+d3JhcHBlZCgpOwogCiAgICAgLy8gQWxzbywg
ZG8gd2UgbmVlZCB0aGUgVHlwZUVycm9yIHRlc3QgaGVyZSA/CiAKQEAgLTEwMSw3ICsxMDEsNyBA
QCBib29sIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpp
dGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgoKnN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSkuaW1wbCgpKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmpl
Y3QoKSwgaW1wbCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOworICAgICAgICByZXR1cm4gdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7CiAg
ICAgcmV0dXJuIG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggZTZlYzhkYzNjZWFmNGZhZjEzM2U0OGU5NDU5
Yjk4YTYyODhkYzY4MS4uMTRhZDk1YmIxNzYzNTI4OTc4NjAzMTdjODIwMjgxZjA4ZGZkMGI3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250
ZXh0QXR0cmlidXRlcyhFeGVjU3RhdGUmIHN0YXRlLCBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJp
YnUKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7Ci0gICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAgICBI
VE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyYg
Y29udGV4dElkID0gc3RhdGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0
YXRlKTsKICAgICAKICAgICBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJzOwpA
QCAtODgsNyArODgsNyBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQo
RXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojpwcm9iYWJs
eVN1cHBvcnRzQ29udGV4dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXMgPSBpbXBsKCk7CisgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdy
YXBwZWQoKTsKICAgICBpZiAoIXN0YXRlLmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJu
IGpzQm9vbGVhbihmYWxzZSk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwpAQCAt
MTA5LDcgKzEwOSw3IEBAIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBw
b3J0c0NvbnRleHQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVt
ZW50Ojp0b0RhdGFVUkwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFzRWxlbWVu
dCYgY2FudmFzID0gaW1wbCgpOworICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFw
cGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBjb25zdCBTdHJpbmcmIHR5
cGUgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCZzdGF0ZSwgc3RhdGUu
YXJndW1lbnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA3Mjc5YTk0NTBhMTcxMzQwNTNmNjgzMDI1YzNj
MTA4N2RhNTA3OTBiLi44ODk3MDVhZmUwZDgzNmZjNmViNWI5MTgyOWY5ODAwODMxMmE2YmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9u
Q3VzdG9tLmNwcApAQCAtNDIsMTAgKzQyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9v
bCBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShpbXBsKCkudHlwZSgpICE9IEZvcm1Db250cm9scywgIlNob3VsZCBjYWxsIHRoZSBzdWJj
bGFzcycgbmFtZUdldHRlciIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW1wbCgpLnR5cGUo
KSAhPSBTZWxlY3RPcHRpb25zLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNsYXNzJyBuYW1lR2V0dGVy
Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh3cmFwcGVkKCkudHlwZSgpICE9IEZvcm1Db250
cm9scywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0Uod3JhcHBlZCgpLnR5cGUoKSAhPSBTZWxlY3RPcHRpb25zLCAiU2hvdWxk
IGNhbGwgdGhlIHN1YmNsYXNzJyBuYW1lR2V0dGVyIik7CiAKLSAgICBhdXRvIGl0ZW0gPSBpbXBs
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAppbmRleCA0MzE3NDI4NTQ2OGFlYWY3MTg3MWUwOTY0ZjQyNjExMmVjNWE2MDA5
Li4xOTEyYzBiNmJlM2I4OTYyNDRjNjJiZTE2ZmUxNTE5OTY0ZmUwMzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04
MSw3ICs4MSw3IEBAIGJvb2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlCiAKIGJvb2wgSlNIVE1MRG9jdW1l
bnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGltcGwoKTsKKyAgICBh
dXRvJiBkb2N1bWVudCA9IHdyYXBwZWQoKTsKIAogICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21p
Y1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFhdG9t
aWNQcm9wZXJ0eU5hbWUgfHwgIWRvY3VtZW50Lmhhc0RvY3VtZW50TmFtZWRJdGVtKCphdG9taWNQ
cm9wZXJ0eU5hbWUpKQpAQCAtMTE1LDcgKzExNSw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6
OmFsbChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgIGlmICh2KQogICAgICAgICByZXR1cm4g
djsKIAotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5hbGwo
KSk7CisgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmFs
bCgpKTsKIH0KIAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIERvY3VtZW50KiBmaW5k
Q2FsbGluZ0RvY3VtZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKCFjYWxsZXJGcmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhmdW5j
dG9yLmNhbGxlckZyYW1lKCktPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS5kb2N1bWVu
dCgpOworICAgIHJldHVybiBhc0pTRE9NV2luZG93KGZ1bmN0b3IuY2FsbGVyRnJhbWUoKS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+d3JhcHBlZCgpLmRvY3VtZW50KCk7CiB9CiAKIC8vIEN1c3Rv
bSBmdW5jdGlvbnMKQEAgLTE0MSw3ICsxNDEsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50Ojpv
cGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBv
dGhlciBicm93c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVy
cyB0byB0aGUgd2luZG93LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7Ci0g
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKSkgeworICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgICAgIEpTRE9NV2lu
ZG93U2hlbGwqIHdyYXBwZXIgPSB0b0pTRE9NV2luZG93U2hlbGwoZnJhbWUsIGN1cnJlbnRXb3Js
ZCgmc3RhdGUpKTsKICAgICAgICAgICAgIGlmICh3cmFwcGVyKSB7CiAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IHdyYXBwZXItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAib3BlbiIpKTsKQEAgLTE1NywxMCArMTU3LDEwIEBAIEpTVmFsdWUgSlNI
VE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIC8vIGRvY3VtZW50Lm9w
ZW4gY2xvYmJlcnMgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGRvY3VtZW50IGFuZAogICAg
IC8vIGFsaWFzZXMgaXQgd2l0aCB0aGUgYWN0aXZlIHNlY3VyaXR5IGNvbnRleHQuCi0gICAgRG9j
dW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gYXNKU0RPTVdpbmRvdyhzdGF0ZS5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5pbXBsKCkuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1l
bnQgPSBhc0pTRE9NV2luZG93KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQo
KS5kb2N1bWVudCgpOwogCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdHdvIHBhcmFtZXRlcnMgb3Ig
ZmV3ZXIsIGRvIGEgbm9ybWFsIGRvY3VtZW50IG9wZW4uCi0gICAgaW1wbCgpLm9wZW4oYWN0aXZl
RG9jdW1lbnQpOworICAgIHdyYXBwZWQoKS5vcGVuKGFjdGl2ZURvY3VtZW50KTsKICAgICByZXR1
cm4gdGhpczsKIH0KIApAQCAtMTY4LDcgKzE2OCw3IEBAIGVudW0gTmV3bGluZVJlcXVpcmVtZW50
IHsgRG9Ob3RBZGROZXdsaW5lLCBEb0FkZE5ld2xpbmUgfTsKIAogc3RhdGljIGlubGluZSB2b2lk
IGRvY3VtZW50V3JpdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNIVE1MRG9jdW1lbnQqIHRoaXNEb2N1
bWVudCwgTmV3bGluZVJlcXVpcmVtZW50IGFkZE5ld2xpbmUpCiB7Ci0gICAgSFRNTERvY3VtZW50
KiBkb2N1bWVudCA9ICZ0aGlzRG9jdW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRG9jdW1lbnQqIGRv
Y3VtZW50ID0gJnRoaXNEb2N1bWVudC0+d3JhcHBlZCgpOwogICAgIC8vIERPTSBvbmx5IHNwZWNp
ZmllcyBzaW5nbGUgc3RyaW5nIGFyZ3VtZW50LCBidXQgYnJvd3NlcnMgYWxsb3cgbXVsdGlwbGUg
b3Igbm8gYXJndW1lbnRzLgogCiAgICAgc2l6ZV90IHNpemUgPSBzdGF0ZS5hcmd1bWVudENvdW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0
b20uY3BwCmluZGV4IDNkNDhkZjA0NDYwOTMzZWNjZjQ1NTM0YmI3Y2NhMTdjM2Q2YzU2ZjUuLjU4
MzZhMTA3NGJlMjk1NjdlMTZjYjg2ZTU1NDJkM2NjMjIwZDgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIEpTU2NvcGUqIEpTSFRNTEVsZW1lbnQ6OnB1
c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlKSBjb25z
dAogewotICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gaW1wbCgpOworICAgIEhUTUxFbGVtZW50
JiBlbGVtZW50ID0gd3JhcHBlZCgpOwogCiAgICAgLy8gVGhlIGRvY3VtZW50IGlzIHB1dCBvbiBm
aXJzdCwgZmFsbCBiYWNrIHRvIHNlYXJjaGluZyBpdCBvbmx5IGFmdGVyIHRoZSBlbGVtZW50IGFu
ZCBmb3JtLgogICAgIHNjb3BlID0gSlNXaXRoU2NvcGU6OmNyZWF0ZShleGVjLCBhc09iamVjdCh0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCAmZWxlbWVudC5kb2N1bWVudCgpKSksIHNjb3BlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggOGI1NWZhN2RlMzZlNWM2MDc4
ODljOWIxZTlhNTFjM2VjOGE2OGI3Ni4uM2FmYjMyNjA3MjZkZGY1ZjM1ODBkMmY0MmI2ZjlhYmVk
ZjA2ZjViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTMzLDE1ICsz
MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1zKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICBWZWN0
b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zID0gY29sbGVjdGlvbi0+aW1wbCgpLm5hbWVkSXRl
bXMobmFtZSk7CisgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rp
b24tPndyYXBwZWQoKS5uYW1lZEl0ZW1zKG5hbWUpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAobmFtZWRJdGVt
cy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBjb2xsZWN0aW9uLT5n
bG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5wdHIoKSk7CiAKLSAgICBBU1NFUlQoY29sbGVj
dGlvbi0+aW1wbCgpLnR5cGUoKSA9PSBGb3JtQ29udHJvbHMpOwotICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPmltcGwoKS5vd25l
ck5vZGUoKS5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgpKTsKKyAgICBBU1NFUlQoY29sbGVjdGlv
bi0+d3JhcHBlZCgpLnR5cGUoKSA9PSBGb3JtQ29udHJvbHMpOworICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPndyYXBwZWQoKS5v
d25lck5vZGUoKS5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgpKTsKIH0KIAogYm9vbCBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGUz
NGMwMzU0NmRkZWE2Y2FkZWQxYTNjYWM5ZjdiZjdmMzM4OGJiYTQuLjNhZWQ3MDUyZjQ2MTVlZjBh
YzkzNTllNzFhOTE1ODc4MGIzYmQ1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGltcGwoKS5uYW1l
ZEVsZW1lbnRzKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
IFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSB3cmFwcGVkKCkubmFtZWRFbGVtZW50
cyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAKICAgICBp
ZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20u
Y3BwCmluZGV4IGFiMDAwZjcxMzAxOWU5YjhhMGJmNThlMjM1ZDc0MTNhOWFjYjk1NDIuLjZmZDVh
OTdiMjU3YzYwODU4Zjg5MjliMmU5YTI5OTFiNTdkZjFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVS
TChFeGVjU3RhdGUmIHN0YXRlLCBIVE1MRnJhbWVFbGVtZW50KgogCiB2b2lkIEpTSFRNTEZyYW1l
RWxlbWVudDo6c2V0TG9jYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBIVE1MRnJhbWVFbGVtZW50JiBpbXAgPSBpbXBsKCk7CisgICAgSFRNTEZyYW1lRWxlbWVu
dCYgaW1wID0gd3JhcHBlZCgpOwogICAgIFN0cmluZyBsb2NhdGlvblZhbHVlID0gdmFsdWVUb1N0
cmluZ1dpdGhOdWxsQ2hlY2soJnN0YXRlLCB2YWx1ZSk7CiAKICAgICBpZiAoIWFsbG93U2V0dGlu
Z0phdmFzY3JpcHRVUkwoc3RhdGUsICZpbXAsIGxvY2F0aW9uVmFsdWUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3Rv
bS5jcHAKaW5kZXggNzA4NTZlNTUzYzRmZDZjN2QwMjBmYjk3MzU4OTg2YTI2NTI1MzU2YS4uMTI1
YWVmN2VjMWQ3MzFmMjJlMTE2NDBlODBmMzJiYjcwYWFlZWFhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hUTUxG
cmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvKiBmcmFtZUVsZW1lbnQg
PSBpbXBsKCkuY2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8qIGZyYW1lRWxlbWVudCA9IHdyYXBwZWQoKS5jaGls
ZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSk7CiAgICAgaWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDhmNDJkYmVmNTI0ZmQ2ZmQ4Y2Uz
ZGFhMTExOWRkZmRiM2I5YjAxNTUuLjM3MmYzNDI5ODE0Y2E4NTJmYTM1YTcyOGRhZGNmZTBiYTM2
NDVmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0
RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
SW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgp
OworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5w
dXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlKTsKIApAQCAtNDQsNyArNDQsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2Vs
ZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVs
ZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0
RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0
aW9uKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTUzLDcgKzUzLDcg
QEAgdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxl
Y3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IGltcGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQo
KTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTYyLDcgKzYyLDcgQEAgSlNWYWx1ZSBKU0hUTUxJ
bnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiB2b2lk
IEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7Cisg
ICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5j
YW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAg
LTcxLDcgKzcxLDcgQEAgdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAgSFRNTElucHV0RWxlbWVudCYg
aW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC04MCw3ICs4MCw3IEBA
IEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRl
JiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRp
cmVjdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
d3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKSB7CiAgICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6
c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50JiBpbnB1dCA9IGltcGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBw
ZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDQ0MDA5NzYxZDEz
OWQxMzE4NjQ2YjVjOGU1MWUyNWJhZDBlYjE0MDMuLjJmNDFjZmU1ZTI0YmY5ODgxYjYwM2UwNWY1
ZDJlM2E5NzlhMGU1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCB2b2lkIEpT
SFRNTE1lZGlhRWxlbWVudDo6c2V0Q29udHJvbGxlcihFeGVjU3RhdGUmLCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIC8vIDQuOC4xMC4xMS4yIE1lZGlhIGNvbnRyb2xsZXJzOiBjb250cm9sbGVyIGF0
dHJpYnV0ZS4KICAgICAvLyBPbiBzZXR0aW5nLCBpdCBtdXN0IGZpcnN0IHJlbW92ZSB0aGUgZWxl
bWVudCdzIG1lZGlhZ3JvdXAgYXR0cmlidXRlLCBpZiBhbnksIAotICAgIGltcGwoKS5zZXRNZWRp
YUdyb3VwKFN0cmluZygpKTsKKyAgICB3cmFwcGVkKCkuc2V0TWVkaWFHcm91cChTdHJpbmcoKSk7
CiAgICAgLy8gYW5kIHRoZW4gc2V0IHRoZSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIgdG8gdGhl
IGdpdmVuIHZhbHVlLgotICAgIGltcGwoKS5zZXRDb250cm9sbGVyKEpTTWVkaWFDb250cm9sbGVy
Ojp0b1dyYXBwZWQodmFsdWUpKTsKKyAgICB3cmFwcGVkKCkuc2V0Q29udHJvbGxlcihKU01lZGlh
Q29udHJvbGxlcjo6dG9XcmFwcGVkKHZhbHVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9t
LmNwcAppbmRleCA5MTVlMDI4N2M3OGNkYzA5NWRiMWFkZTMzNWQ3NjBjZDNiNTgzZTdkLi45MjM0
NWU2YjU3ZmNjNTAzMzg2YTkwYzNhMTc3OTRjNGMxMzE2ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0hU
TUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGlt
cGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtNjEsMTMgKzYxLDEzIEBAIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246
OnNldExlbmd0aChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAg
bmV3TGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aFZhbHVlKTsKICAgICB9CiAg
ICAgaWYgKCFlYykKLSAgICAgICAgaW1wbCgpLnNldExlbmd0aChuZXdMZW5ndGgsIGVjKTsKKyAg
ICAgICAgd3JhcHBlZCgpLnNldExlbmd0aChuZXdMZW5ndGgsIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBlYyk7CiB9CiAKIHZvaWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omlu
ZGV4U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgc2VsZWN0SW5kZXhTZXR0ZXIoJmltcGwoKS5zZWxlY3RFbGVtZW50KCksIGV4ZWMs
IGluZGV4LCB2YWx1ZSk7CisgICAgc2VsZWN0SW5kZXhTZXR0ZXIoJndyYXBwZWQoKS5zZWxlY3RF
bGVtZW50KCksIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OnJlbW92ZShFeGVjU3RhdGUmIHN0YXRlKQpAQCAtNzUsOSArNzUsOSBAQCBK
U1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICAvLyBUaGUgYXJndW1lbnQgY2FuIGJlIGFuIEhUTUxPcHRpb25FbGVtZW50IG9yIGFuIGlu
ZGV4LgogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBpZiAo
SFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IEpTSFRNTE9wdGlvbkVsZW1lbnQ6OnRvV3JhcHBl
ZChhcmd1bWVudCkpCi0gICAgICAgIGltcGwoKS5yZW1vdmUob3B0aW9uKTsKKyAgICAgICAgd3Jh
cHBlZCgpLnJlbW92ZShvcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgaW1wbCgpLnJlbW92ZShh
cmd1bWVudC50b0ludDMyKCZzdGF0ZSkpOworICAgICAgICB3cmFwcGVkKCkucmVtb3ZlKGFyZ3Vt
ZW50LnRvSW50MzIoJnN0YXRlKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKaW5kZXggYjNkZjEzZjcyZWFhOGZiYWEwNzg2MDVmNDc2MzM5MjdlYmUwMmNj
Ni4uMzBlM2ViYmI4OWE0ZWYyM2E1OTY5NGMzYWJlZTU3YTgwYTYyMzFlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSlNW
YWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0ID0gaW1wbCgpOworICAgIEhUTUxTZWxlY3RFbGVt
ZW50JiBzZWxlY3QgPSB3cmFwcGVkKCk7CiAKICAgICBpZiAoIXN0YXRlLmFyZ3VtZW50Q291bnQo
KSkgewogICAgICAgICAvLyBXaGVuIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50LCB3ZSBzaG91bGQg
Y2FsbCBFbGVtZW50OjpyZW1vdmUoKSB0byBkZXRhY2guCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
c2VsZWN0SW5kZXhTZXR0ZXIoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCwgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkCiAKIHZvaWQgSlNIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhTZXR0
ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgc2VsZWN0SW5kZXhTZXR0ZXIoJmltcGwoKSwgZXhlYywgaW5kZXgsIHZhbHVl
KTsKKyAgICBzZWxlY3RJbmRleFNldHRlcigmd3JhcHBlZCgpLCBleGVjLCBpbmRleCwgdmFsdWUp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxU
ZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAxYmI4NmRmODhjOWRlZWFiMDliYTA2
ZjMyNWRlN2JkZjY2ZDQ0OGFmLi45N2FiZTc3YzBiMDNhYjE2NWRiNmQ0NzZkOGVhMTk4ZDE4N2Jj
MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0
ZUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU0hU
TUxUZW1wbGF0ZUVsZW1lbnQ6OmNvbnRlbnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jaygmc3RhdGUpOwogCi0gICAgRG9jdW1lbnRGcmFnbWVudCogY29u
dGVudCA9IGltcGwoKS5jb250ZW50KCk7CisgICAgRG9jdW1lbnRGcmFnbWVudCogY29udGVudCA9
IHdyYXBwZWQoKS5jb250ZW50KCk7CiAKICAgICBKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hl
ZFdyYXBwZXIoZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIGNvbnRlbnQpOwogICAgIGlmICh3cmFw
cGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAK
aW5kZXggYTJjNjllYmVlM2RhODhhMzliNzRlODcyZGJlNGM5MmQ3NWY1YTlkMi4uMmJkMmY2ZDhl
Mzg0N2IzMDRmZTk1OGM0MjgyZjIwMTk3YTIzOWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgSlNI
aXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0CiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlzIG9ubHkgbmVlZGVkIHRv
IGltcGxlbWVudCB0aGUgV2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUsIHNvIGlmIGFjY2VzcyBp
cwogICAgIC8vIGFsbG93ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9ybWFsIGxvb2t1cCB3aWxs
IHRha2UgcGxhY2UuCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKHNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCBpbXBsKCkuZnJhbWUoKSwgbWVzc2FnZSkpCisgICAgaWYgKHNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9u
cyB0aGF0IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KQEAgLTY5LDE0
ICs2OSwxNCBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKGltcGwoKS5mcmFtZSgpLCBt
ZXNzYWdlKTsKKyAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHdyYXBwZWQoKS5mcmFtZSgp
LCBtZXNzYWdlKTsKICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIEpTSGlzdG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoZXhlYywgaW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHdyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtODQsNyArODQsNyBAQCBib29sIEpTSGlz
dG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5UwogYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpT
SGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAgICBpZiAo
IXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUo
KSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+
d3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBA
IC05Miw3ICs5Miw3IEBAIGJvb2wgSlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiBib29sIEpTSGlzdG9yeTo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTSGlzdG9yeSo+KGNlbGwpOwotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4
ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMDAsMTQgKzEwMCwxNCBAQCBi
b29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcgogdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNIaXN0b3J5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTSGlzdG9yeSo+KG9iamVjdCk7Ci0gICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAg
IGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIEpTVmFsdWUg
SlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEhpc3Rvcnkm
IGhpc3RvcnkgPSBpbXBsKCk7CisgICAgSGlzdG9yeSYgaGlzdG9yeSA9IHdyYXBwZWQoKTsKIAog
ICAgIEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBtX3N0YXRlLmdldCgpOwogICAgIGlmICghY2FjaGVk
VmFsdWUuaXNFbXB0eSgpICYmICFoaXN0b3J5LnN0YXRlQ2hhbmdlZCgpKQpAQCAtMTIxLDcgKzEy
MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAog
CiBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisg
ICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUo
KSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0xNDAsNyArMTQwLDcgQEAg
SlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhp
c3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlw
ZTo6UHVzaCwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0
ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UHVzaCwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3RhdGUuY2xl
YXIoKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUs
IGltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3Rh
dGUsIHdyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
ICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCAwLCAwKTsK
QEAgLTE2OSw3ICsxNjksNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1w
bCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwg
SGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CisgICAgd3JhcHBlZCgpLnN0
YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9y
eTo6U3RhdGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCA5ZGQ0MDFkZTMzMzZj
OTA3OThkMGE3OWIyOWExNjA2MjdlZDc4OGU3Li5hOGNiYTAzYzVlYjZiZjU5NzY1NjRlMDA4N2E0
Y2NmMjNjN2RmNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtNzYsNyArNzYsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCksIGltcGwoKS5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jcmVtZW50LCBlYykuZ2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUs
IGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0
aCwgYXV0b0luY3JlbWVudCwgZWMpLmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMyw3ICsxMTMsNyBAQCBKU1ZhbHVl
IEpTSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSYgZXhlYykKICAgICB9CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJmV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBpbXBsKCkudHJhbnNhY3Rpb24oc2NyaXB0Q29udGV4dCwgc2NvcGUs
IG1vZGUsIGVjKS5nZXQoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZleGVjLCBnbG9i
YWxPYmplY3QoKSwgd3JhcHBlZCgpLnRyYW5zYWN0aW9uKHNjcmlwdENvbnRleHQsIHNjb3BlLCBt
b2RlLCBlYykuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbigmZXhlYywgZWMpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDAxMjg4YzZlYWNhZjc1Nzg0MzRjNDEyMTg1
ZDA1NGQ1NjgyOGI5ZGEuLjE4ZjAyNGZmMjFjYWYzYjRmN2MwNDhhZGY5NDE1OWQ0YzMyMjk4OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3Rv
cmVDdXN0b20uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTVmFsdWUgSlNJREJPYmplY3RTdG9yZTo6
Y3JlYXRlSW5kZXgoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3Qo
KSwgaW1wbCgpLmNyZWF0ZUluZGV4KGNvbnRleHQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVs
dGlFbnRyeSwgZWMpLmdldCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLmNyZWF0ZUluZGV4KGNvbnRleHQsIG5hbWUsIGtleVBh
dGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgZWMpLmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cAppbmRleCBlMjZiYmU3OGQ5ZmJiYzQ5MjBjZTFlZmNiNGMzNTBmZDdhMTMyNGI4Li45ZTY5ZTFi
ZmQ2NjRiNjZhOGMzZGFkZjE3MjVmYTQ4ODY5OTM4ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20u
Y3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6
c2hvd0NvbnRleHRNZW51KEV4ZWNTdGF0ZSYgc3RhdGUpCiAjZWxzZQogICAgIFZlY3RvcjxDb250
ZXh0TWVudUl0ZW0+IGl0ZW1zID0gbWVudS5pdGVtcygpOwogI2VuZGlmCi0gICAgaW1wbCgpLnNo
b3dDb250ZXh0TWVudShldmVudCwgaXRlbXMpOworICAgIHdyYXBwZWQoKS5zaG93Q29udGV4dE1l
bnUoZXZlbnQsIGl0ZW1zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCAxMzFlMjg3MGJkYjU5ZDYwNTM2YTkxMGE3NzFkZDUwNzcyYzA2ZTQ5Li4wMDgzZTBjZjE1
OWNjMWY4OTAwY2ZhMThkZDdiNDI1NWUwOTM0MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCk7CisgICAgRnJh
bWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewogICAgICAg
ICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTczLDcgKzcz
LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXIKIAogYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBs
KCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIGJv
b2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wCiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBm
cmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0Zy
YW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTExMSw3ICsxMTEsNyBAQCBib29s
IEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcAogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJh
bWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHZvaWQgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0xvY2F0aW9uKj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSBsb2Nh
dGlvbiBvYmplY3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgot
ICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwo
KS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogfQpAQCAtMTM0LDExICsxMzQsMTEgQEAgYm9vbCBKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIAogSlNW
YWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3Jh
cHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhc2hvdWxkQWxsb3dBY2Nlc3NUb0Zy
YW1lKCZzdGF0ZSwgZnJhbWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwoKS50b1N0cmluZygpKTsKKyAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB3cmFwcGVkKCkudG9TdHJpbmcoKSk7
CiB9CiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0
YXRlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNl
U3RhdGVzQ3VzdG9tLmNwcAppbmRleCA4MDE4YjI2MzNiNzhlOWNlMWRlMjkxMzNkOWQ5NGU2NzAy
ZWEzNTFlLi43NWU5Y2FiYmMzODk3ZTE2MDFlZDZjNjUzYzQ1ZjljYjVmMjUyNzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVz
Q3VzdG9tLmNwcApAQCAtMzcsNTQgKzM3LDU0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNW
YWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3RhdGUmKSBjb25zdAogewotICAg
IGlmICghaW1wbCgpLmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlk
ZW9Tb3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICByZXR1cm4g
anNOdW1iZXIoaW1wbCgpLndpZHRoKCkpOworICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCku
d2lkdGgoKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6aGVpZ2h0KEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBp
ZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLmhlaWdodCgpKTsKKyAgICBy
ZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLmhlaWdodCgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlh
U291cmNlU3RhdGVzOjpmcmFtZVJhdGUoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWlt
cGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNl
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051
bWJlcihpbXBsKCkuZnJhbWVSYXRlKCkpOworICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCku
ZnJhbWVSYXRlKCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmFzcGVjdFJh
dGlvKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2Uo
KSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLmFzcGVjdFJh
dGlvKCkpOworICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkuYXNwZWN0UmF0aW8oKSk7CiB9
CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogewotICAgIGlmICghaW1wbCgpLmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYg
KCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGUgPSBpbXBsKCkuZmFjaW5nTW9kZSgp
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IHdyYXBwZWQoKS5mYWNpbmdNb2RlKCk7
CiAgICAgaWYgKG1vZGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICAKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbXBsKCkuZmFjaW5n
TW9kZSgpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB3cmFwcGVkKCku
ZmFjaW5nTW9kZSgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp2b2x1bWUo
RXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoaW1wbCgpLmhhc1ZpZGVvU291cmNlKCkpCisg
ICAgaWYgKHdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLnZvbHVtZSgpKTsKKyAg
ICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnZvbHVtZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlQ2hhbm5lbEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCAwMTk2NWU0YjQyNzI2NmZmZDI3ODljOGI5YjI4NDhh
OWFlMmRhODdhLi4zNzVkZDRiNWYwMzYzOTNmYWJlZmMzMzg4NzdhNjdiZWUyN2ZiYjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3Vz
dG9tLmNwcApAQCAtMzUsMTAgKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBK
U01lc3NhZ2VDaGFubmVsOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IGltcGwoKS5wb3J0MSgp
KQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHdyYXBwZWQoKS5wb3J0MSgpKQogICAgICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiAKLSAgICBpZiAoTWVzc2FnZVBvcnQqIHBv
cnQgPSBpbXBsKCkucG9ydDIoKSkKKyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB3cmFwcGVk
KCkucG9ydDIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5j
cHAKaW5kZXggNDRkOTU0N2Y2NzZlOTg1NmU5ZDVhNDFiNDc0MjUyM2Q0YzcyMTUzMy4uYjU1ZGM0
ZWEyNTI0NDAyZTViZTRhODJkMjI1NjYxMDBmNjIzMWM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtNTMsNyArNTMs
NyBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIE1lc3NhZ2VFdmVu
dCYgZXZlbnQgPSBpbXBsKCk7CisgICAgTWVzc2FnZUV2ZW50JiBldmVudCA9IHdyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBzd2l0Y2ggKGV2ZW50LmRhdGFUeXBlKCkpIHsKICAg
ICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5cGVTY3JpcHRWYWx1ZTogewpAQCAtNzgsNyArNzgs
NyBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0
CiAKICAgICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWU6
CiAgICAgICAgIGlmIChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFs
dWUgPSBldmVudC5kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSkgewotICAgICAgICAgICAg
TWVzc2FnZVBvcnRBcnJheSBwb3J0cyA9IGltcGwoKS5wb3J0cygpOworICAgICAgICAgICAgTWVz
c2FnZVBvcnRBcnJheSBwb3J0cyA9IHdyYXBwZWQoKS5wb3J0cygpOwogICAgICAgICAgICAgLy8g
RklYTUU6IFdoeSBkb2VzIHRoaXMgc3VwcHJlc3MgZXhjZXB0aW9ucz8KICAgICAgICAgICAgIHJl
c3VsdCA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoJnN0YXRlLCBnbG9iYWxPYmplY3Qo
KSwgJnBvcnRzLCBOb25UaHJvd2luZyk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01lc3NhZ2VF
dmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIE1lc3NhZ2VFdmVudCYgZXZl
bnQgPSBqc0V2ZW50LT5pbXBsKCk7CisgICAgTWVzc2FnZUV2ZW50JiBldmVudCA9IGpzRXZlbnQt
PndyYXBwZWQoKTsKICAgICBldmVudC5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJs
ZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZywgb3JpZ2luQXJnLCBsYXN0RXZlbnRJZEFyZywg
c291cmNlQXJnLCBXVEY6Om1vdmUobWVzc2FnZVBvcnRzKSk7CiAgICAganNFdmVudC0+bV9kYXRh
LnNldChzdGF0ZS52bSgpLCBqc0V2ZW50LCBkYXRhQXJnLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDIzOWY0N2FmZDZkYTVlYmU1MTkwZTdjYmI1OTNlMzNi
ZWJmOTFlMWYuLjZiMjEyNDQ5ODc1ZTc4ZThjYmJkZDcyZmMyM2QwZjY5YjgzOTY5MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
CkBAIC00OCwxMyArNDgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBKU01lc3NhZ2VQ
b3J0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICAvLyBJZiB3ZSBoYXZlIGEgbG9jYWxseSBlbnRhbmdsZWQgcG9ydCwgd2UgY2FuIGRpcmVjdGx5
IG1hcmsgaXQgYXMgcmVhY2hhYmxlLiBQb3J0cyB0aGF0IGFyZSByZW1vdGVseSBlbnRhbmdsZWQg
YXJlIG1hcmtlZCBpbi11c2UgYnkgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KCkuCi0gICAg
aWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgpLmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkpCisg
ICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gd3JhcHBlZCgpLmxvY2FsbHlFbnRhbmdsZWRQb3J0
KCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIAogSlNDOjpKU1Zh
bHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZpbXBsKCkpOworICAgIHJldHVy
biBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJndyYXBwZWQoKSk7CiB9CiAKIHZvaWQgZmlsbE1l
c3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUs
IE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSwgQXJyYXlCdWZmZXJBcnJheSYgYXJyYXlCdWZm
ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKaW5kZXggYzQ2OGFhZDZhNjE0ZTQ5
ZjJhN2ZjOTkyMmVjMmJhZDI0MjQyZWM1ZC4uZGVhYmM1NDFkYjA2ZjEwOWU0ZDBiZmM2YzcxOTQw
OWI1MTg5YjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCkBAIC00MCw3ICs0
MCw3IEBAIHVzaW5nIERlY2lzaW9uUG9pbnQgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpE
ZWNpc2lvblBvaW50OwogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVj
aXNpb25Qb2ludChFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERlY2lzaW9uUG9pbnQgZGVjaXNp
b25Qb2ludCA9IGltcGwoKS5kZWNpc2lvblBvaW50KCk7CisgICAgRGVjaXNpb25Qb2ludCBkZWNp
c2lvblBvaW50ID0gd3JhcHBlZCgpLmRlY2lzaW9uUG9pbnQoKTsKICAgICBzd2l0Y2ggKGRlY2lz
aW9uUG9pbnQpIHsKICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0
OgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdDoKQEAgLTY5LDcgKzY5LDcg
QEAgdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWwKICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVy
QWRkRGF0YToKICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRh
OgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6TmV2ZXI6Ci0gICAgICAgIGltcGwoKS5zZXREZWNp
c2lvblBvaW50KGRlY2lzaW9uUG9pbnQpOworICAgICAgICB3cmFwcGVkKCkuc2V0RGVjaXNpb25Q
b2ludChkZWNpc2lvblBvaW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA3LDcg
KzEwNyw3IEBAIHN0YXRpYyBpbmxpbmUgRGVjaXNpb24gdG9EZWNpc2lvbihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6ZGVjaXNpb24oRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KU1ZhbHVlKGlt
cGwoKS5kZWNpc2lvbigpKTsKKyAgICByZXR1cm4gdG9KU1ZhbHVlKHdyYXBwZWQoKS5kZWNpc2lv
bigpKTsKIH0KIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9u
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0xMTYsMTIgKzExNiwxMiBAQCB2
b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGltcGwoKS5zZXREZWNpc2lvbihkZWNpc2lvbik7CisgICAgd3Jh
cHBlZCgpLnNldERlY2lzaW9uKGRlY2lzaW9uKTsKIH0KIAogSlNWYWx1ZSBKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRXhlY1N0YXRlJikgY29uc3QK
IHsKLSAgICByZXR1cm4gdG9KU1ZhbHVlKGltcGwoKS51bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkp
OworICAgIHJldHVybiB0b0pTVmFsdWUod3JhcHBlZCgpLnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24o
KSk7CiB9CiAKIHZvaWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVx
dWVzdERlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0xMzAsNyAr
MTMwLDcgQEAgdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlMKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGltcGwoKS5zZXRVbmJsb2NrUmVxdWVzdERl
Y2lzaW9uKHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIHdyYXBwZWQoKS5zZXRVbmJsb2Nr
UmVxdWVzdERlY2lzaW9uKHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOwogfQogCiB9OyAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggMzgwNTU3MjQ3MjAyNmIyYTQ4ZDQyMzM2
YTZjYjA5ZDQ4YmRhNmI4NS4uYzZjNTcyNDAzYWU2Yjc4MzI0NjJlMDYxYjZjMzI2MTMyNDQzMjdk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
T2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC02Myw3ICs2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKEV4ZWNTdGF0ZSogZXhlYykKIAog
Ym9vbCBKU011dGF0aW9uT2JzZXJ2ZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciA9IGpzQ2FzdDxKU011dGF0
aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPmltcGwoKTsKKyAgICBNdXRh
dGlvbk9ic2VydmVyJiBvYnNlcnZlciA9IGpzQ2FzdDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5k
bGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQoKTsKICAgICBhdXRvIG9ic2VydmVkTm9kZXMg
PSBvYnNlcnZlci5nZXRPYnNlcnZlZE5vZGVzKCk7CiAgICAgZm9yIChhdXRvIGl0ID0gb2JzZXJ2
ZWROb2Rlcy5iZWdpbigpLCBlbmQgPSBvYnNlcnZlZE5vZGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoKml0KSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHAKaW5kZXggODQ2Y2Y4ZmFhOGM1MTFlZjgyMTUxNzAxYjRhMDA4YmFmYTFiZmNkMS4uYTMx
ZTQ2YTg0MzIxOGM5ODZhODQxMmE0ODA3NmYwOTg5YmI4NDUyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNOYW1lZE5vZGVNYXA6Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBw
ZWQoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAzZDVmZTEy
NDg2NDg2MzRhNjRhMWQ4OTc1YzRhYzFiYzNkMWJkOWI4Li5mMjRjMDU1ZmM4OWI5ZGU3YjlhNTVj
NGU2MGU0OTA3MmNhZDk1NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC02OCwxMyArNjgsMTMgQEAgSlNWYWx1ZSBKU05hdmln
YXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIGlmICghaW1wbCgpLmZyYW1lKCkpIHsKKyAg
ICBpZiAoIXdyYXBwZWQoKS5mcmFtZSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gcHJvdGVjdCB0aGUgY29udGV4dCAoaS5l
LiBkb2N1bWVudCkgaGVyZSBhcyBVc2VyTWVkaWFSZXF1ZXN0IGlzIG9ic2VydmluZyBjb250ZXh0
IGRlc3RydWN0aW9uIGFuZCB3aWxsIGNoZWNrIHZhbGlkaXR5IGJlZm9yZSByZXNvbHZpbmcvcmVq
ZWN0aW5nIHByb21pc2UuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgpLmZyYW1lKCkt
PmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd3JhcHBlZCgpLmZyYW1lKCkt
PmRvY3VtZW50KCk7CiAKICAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
azo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgZ2xvYmFsT2Jq
ZWN0KCkpOwogICAgIGF1dG8gcmVzb2x2ZUNhbGxiYWNrID0gW3N1Y2Nlc3NDYWxsYmFjaywgZG9j
dW1lbnRdKGNvbnN0IFJlZlB0cjxNZWRpYVN0cmVhbT4mIHN0cmVhbSkgbXV0YWJsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAyYzFhOWY4MzBl
MzUyNzE1NWE2Y2YzN2Q2NzdkY2IyMDJkMTM2Y2U4Li4zMTIzYzk0NjA5NTRlYmRiMzVkMjI4Zjk4
ZDk2MWNmNDdmYzNmMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5jcHAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlYWNo
YWJsZUZyb21ET00oTm9kZSogbm9kZSwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiBib29sIEpTTm9k
ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTm9kZSog
anNOb2RlID0ganNDYXN0PEpTTm9kZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBy
ZXR1cm4gaXNSZWFjaGFibGVGcm9tRE9NKCZqc05vZGUtPmltcGwoKSwgdmlzaXRvcik7CisgICAg
cmV0dXJuIGlzUmVhY2hhYmxlRnJvbURPTSgmanNOb2RlLT53cmFwcGVkKCksIHZpc2l0b3IpOwog
fQogCiBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBvayA9IGltcGwoKS5pbnNlcnRCZWZv
cmUoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBKU05vZGU6OnRvV3JhcHBl
ZChzdGF0ZS5hcmd1bWVudCgxKSksIGVjKTsKKyAgICBib29sIG9rID0gd3JhcHBlZCgpLmluc2Vy
dEJlZm9yZShKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9X
cmFwcGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKICAgICBpZiAob2spCiAgICAgICAgIHJldHVybiBzdGF0ZS5hcmd1bWVudCgwKTsK
QEAgLTEyNCw3ICsxMjQsNyBAQCBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0
ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBvayA9IGltcGwoKS5yZXBs
YWNlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBKU05vZGU6OnRv
V3JhcHBlZChzdGF0ZS5hcmd1bWVudCgxKSksIGVjKTsKKyAgICBib29sIG9rID0gd3JhcHBlZCgp
LnJlcGxhY2VDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9k
ZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKICAgICBpZiAob2spCiAgICAgICAgIHJldHVybiBzdGF0ZS5hcmd1bWVu
dCgxKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4
ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTTm9kZTo6cmVtb3ZlQ2hpbGQoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgp
LnJlbW92ZUNoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOwor
ICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkucmVtb3ZlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3Rh
dGUuYXJndW1lbnQoMCkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwog
ICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTQ0LDcg
KzE0NCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQog
SlNWYWx1ZSBKU05vZGU6OmFwcGVuZENoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBvayA9IGltcGwoKS5hcHBlbmRDaGlsZChKU05v
ZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIGVjKTsKKyAgICBib29sIG9rID0gd3Jh
cHBlZCgpLmFwcGVuZENoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICBpZiAob2spCiAgICAg
ICAgIHJldHVybiBzdGF0ZS5hcmd1bWVudCgwKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1Njb3Bl
KiBKU05vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IG5vZGUpIGNvbnN0CiAKIHZvaWQgSlNOb2RlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBs
KCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkpKTsKIH0KIAog
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVXcmFwcGVySW5saW5lKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZSogbm9kZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNw
cAppbmRleCAyYjQwNDBlM2Q5NmYxNjdlODY1YjY2ODA1YWYzZDk5YTAzYjQzMDhmLi5iM2YwMzYx
MzlmYTBmYjE4MDY0ODRhNjEwZDg0YWM1YWM1N2NhNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCkBAIC0yNyw3ICsyNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoTm9k
ZUZpbHRlciogZmlsdGVyID0gaW1wbCgpLmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBm
aWx0ZXIgPSB3cmFwcGVkKCkuZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChmaWx0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwCmluZGV4IGY3ZDg2M2I4ZTM5NWRiZmNmMTEzY2M2ODZiMzVmNDY4NzRkNTAw
YTIuLmJhMDYyYmVhMjliNDYwM2Q0YjcxOWJjZDc3ZmI2ZjI3MWUzMWQwNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCkBAIC00MiwxMiAr
NDIsMTIgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKICAgICBKU05vZGVMaXN0KiBqc05vZGVM
aXN0ID0ganNDYXN0PEpTTm9kZUxpc3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
aWYgKCFqc05vZGVMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoanNOb2RlTGlzdC0+aW1wbCgpLmlzTGl2ZU5vZGVMaXN0KCkpCi0gICAg
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PExp
dmVOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmltcGwoKSkub3duZXJOb2RlKCkpKTsKLSAgICBpZiAo
anNOb2RlTGlzdC0+aW1wbCgpLmlzQ2hpbGROb2RlTGlzdCgpKQotICAgICAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxDaGlsZE5vZGVMaXN0Jj4o
anNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChqc05vZGVMaXN0LT5p
bXBsKCkuaXNFbXB0eU5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5z
T3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PEVtcHR5Tm9kZUxpc3QmPihqc05vZGVMaXN0LT5p
bXBsKCkpLm93bmVyTm9kZSgpKSk7CisgICAgaWYgKGpzTm9kZUxpc3QtPndyYXBwZWQoKS5pc0xp
dmVOb2RlTGlzdCgpKQorICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qo
cm9vdChzdGF0aWNfY2FzdDxMaXZlTm9kZUxpc3QmPihqc05vZGVMaXN0LT53cmFwcGVkKCkpLm93
bmVyTm9kZSgpKSk7CisgICAgaWYgKGpzTm9kZUxpc3QtPndyYXBwZWQoKS5pc0NoaWxkTm9kZUxp
c3QoKSkKKyAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3Rh
dGljX2Nhc3Q8Q2hpbGROb2RlTGlzdCY+KGpzTm9kZUxpc3QtPndyYXBwZWQoKSkub3duZXJOb2Rl
KCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzRW1wdHlOb2RlTGlzdCgpKQor
ICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2Fz
dDxFbXB0eU5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+d3JhcHBlZCgpKS5vd25lck5vZGUoKSkpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlT3JTdHJpbmcuY3BwCmluZGV4IDM0MzYxYWY0OTZhOGRjOTdlYzdiMzQ2YTVjMDQzZDk2ZmNk
YmI5NWYuLjQ0N2M1ZDcwMGQ1NjUxZWFkZjE0MDRiZDNhN2IxZjQ4NjExMzMyNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgVmVjdG9yPE5vZGVPclN0cmluZz4gdG9Ob2RlT3JTdHJpbmdWZWN0b3IoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkg
ewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoaSk7CiAg
ICAgICAgIGlmIChhdXRvKiBub2RlID0ganNEeW5hbWljQ2FzdDxKU05vZGUqPih2YWx1ZSkpCi0g
ICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCZub2RlLT5pbXBsKCkpOworICAgICAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCgmbm9kZS0+d3JhcHBlZCgpKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0
YXRlKTsKICAgICAgICAgICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKaW5k
ZXggOThjODgxNDlmMzllMmIwY2JhODFkMzUyZTViOWJkYjI5MDVjYjI5Ny4uM2FkZjgwMjI1YzQz
YmZiM2RkYjU2N2IxNjk1Y2FlN2QwMjZiZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTT3NjaWxsYXRvck5vZGU6OnNldFR5cGUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBPc2NpbGxhdG9yTm9kZSYg
aW1wID0gaW1wbCgpOworICAgIE9zY2lsbGF0b3JOb2RlJiBpbXAgPSB3cmFwcGVkKCk7CiAKICNp
ZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAK
aW5kZXggODZjMDNlZDNmYjg5MjU5YWNmOThjZTMzMmE2OTI0Mjg3ZWUzYjAxZC4uNjc5MGY4NGE3
Y2VlOWYxNjYxMjZjZjY0MTQ1MGMxYjQzNDY4NDM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFBhbm5lck5vZGUmIGltcCA9
IGltcGwoKTsKKyAgICBQYW5uZXJOb2RlJiBpbXAgPSB3cmFwcGVkKCk7CiAKICNpZiBFTkFCTEUo
TEVHQUNZX1dFQl9BVURJTykKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewpAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpCiAKIHZvaWQgSlNQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVs
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUGFubmVyTm9kZSYgaW1w
ID0gaW1wbCgpOworICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJM
RShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmNwcAppbmRleCBjNmY2MWViYjU0MzFiNzA0NjljNGQ3ZjBkYjY1YjRkYzg0ZGE5MGNhLi44MzBj
MzA1NTg4NDFjMDIyMmJkZjJkODgxM2VkZDdiMjE3OTA1ZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1
Z2luVmlld0Jhc2UoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkUKIAogc3RhdGljIEpTT2JqZWN0
KiBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoSlNIVE1MRWxlbWVudCoganNI
VE1MRWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1lbnQt
PmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1lbnQtPndyYXBw
ZWQoKTsKICAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBwbHVn
aW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoSlNIVE1MRWxlbWVudCoganNIVE1MRWxl
bWUKIAogSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTSFRN
TEVsZW1lbnQqIGpzSFRNTEVsZW1lbnQpCiB7Ci0gICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBq
c0hUTUxFbGVtZW50LT5pbXBsKCk7CisgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBqc0hUTUxF
bGVtZW50LT53cmFwcGVkKCk7CiAgICAgaWYgKCFpczxIVE1MUGx1Z0luRWxlbWVudD4oZWxlbWVu
dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNjUsNyArMTY1LDcgQEAgQ2FsbFR5
cGUgcGx1Z2luRWxlbWVudEdldENhbGxEYXRhKEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIENhbGxE
YXRhJiBjYWxsRGF0YSkKICAgICAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKICAgICB9CiAgICAg
Ci0gICAgSW5zdGFuY2UqIGluc3RhbmNlID0gcGx1Z2luSW5zdGFuY2UoZWxlbWVudC0+aW1wbCgp
KTsKKyAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT53cmFw
cGVkKCkpOwogICAgIGlmICghaW5zdGFuY2UgfHwgIWluc3RhbmNlLT5zdXBwb3J0c0ludm9rZURl
ZmF1bHRNZXRob2QoKSkKICAgICAgICAgcmV0dXJuIENhbGxUeXBlTm9uZTsKICAgICBjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUGx1Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKaW5kZXggNWY4NjlhOTEyZTA2
NmU0OWI1MmVlOGEwZjE0YmY2NDc1ZGEyYThhOC4uOTVhMGZiNzgyNWNiMzA2YjA0OGJjNzgzY2Zm
MWM2YjlhMTE3YjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
b3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgSlNQb3BT
dGF0ZUV2ZW50OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBQb3BTdGF0ZUV2ZW50JiBldmVudCA9IGltcGwo
KTsKKyAgICBQb3BTdGF0ZUV2ZW50JiBldmVudCA9IHdyYXBwZWQoKTsKIAogICAgIGlmICghZXZl
bnQuc3RhdGUoKS5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1
cmUgYSBQb3BTdGF0ZUV2ZW50IGRvZXMgbm90IGxlYWsgb2JqZWN0cyBpbiBpdHMgc3RhdGUgcHJv
cGVydHkgYWNyb3NzIGlzb2xhdGVkIERPTSB3b3JsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcAppbmRleCA5ZWY1
ZTkzZWQxY2U1YWZhYmJkOWFkY2IwZGNiNmEzOGI0ZjRhZDExLi40MGU1YjkwY2MyN2U4YzRlMTMz
MDAyYjYyZDhhMTE4YTAxNzQ1N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTUlRDU3RhdHNSZXNwb25zZTo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZh
bHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBp
ZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5k
ZXggYjMzNjRkMjY0NTE0NTI2YjU3YmZlZTBlZDE4ZGY1ZDZkMDQwYzgyNC4uM2VhZWYyNjEyNWJm
YWI4ZjdkNTJhNTIxMzYwMmRmMGYzMWZlMjlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC00
NywxNyArNDcsMTcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0
YXRlJiBzdGF0ZSkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgVFlQRV9NSVNNQVRD
SF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9Ci0gICAgaWYgKGlu
ZGV4IDwgMCB8fCAodW5zaWduZWQpaW5kZXggPj0gaW1wbCgpLmxlbmd0aCgpKSB7CisgICAgaWYg
KGluZGV4IDwgMCB8fCAodW5zaWduZWQpaW5kZXggPj0gd3JhcHBlZCgpLmxlbmd0aCgpKSB7CiAg
ICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIElOREVYX1NJWkVfRVJSKTsKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CiAKLSAgICB1bnNpZ25lZCBudW1Db2x1bW5zID0g
aW1wbCgpLmNvbHVtbk5hbWVzKCkuc2l6ZSgpOworICAgIHVuc2lnbmVkIG51bUNvbHVtbnMgPSB3
cmFwcGVkKCkuY29sdW1uTmFtZXMoKS5zaXplKCk7CiAgICAgdW5zaWduZWQgdmFsdWVzSW5kZXgg
PSBpbmRleCAqIG51bUNvbHVtbnM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNv
bHVtbnM7IGkrKykgewotICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSBpbXBsKCkudmFs
dWVzKClbdmFsdWVzSW5kZXggKyBpXTsKKyAgICAgICAgY29uc3QgU1FMVmFsdWUmIHZhbHVlID0g
d3JhcHBlZCgpLnZhbHVlcygpW3ZhbHVlc0luZGV4ICsgaV07CiAgICAgICAgIEpTVmFsdWUganNW
YWx1ZTsKIAogICAgICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewpAQCAtNzQsNyArNzQsNyBA
QCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBv
YmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0
ZSwgaW1wbCgpLmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgd3JhcHBlZCgpLmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVlLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAgIHJldHVybiBvYmplY3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwCmluZGV4IDk1YThkZmNlODVhMzI2YmIzMTViMGRmMmJlZjFlODQ0MGJhMTUxZmYuLjc0MjEy
NTZiMDQ2YThkNzI2OGUyMzY3ZGMyZTEzY2ZhYWMyMjQzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwg
ZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICB3cmFwcGVkKCkuZXhlY3V0ZVNRTChz
cWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNr
LnJlbGVhc2UoKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTVkdMZW5ndGhDdXN0b20uY3BwCmluZGV4IGI2ZjBjZjgzNjE1ZjcxZTY1NTg4Y2UzZGUzZmNi
YmFkZDE1YjZlZGUuLjY0ZTExMjg0NmY4N2UyNmJhNDVmNDAzMTMwNjgzYzg0YjBiYWE3ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAK
QEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTU1ZHTGVu
Z3RoOjp2YWx1ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFNWR0xlbmd0aCYgcG9k
SW1wID0gaW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgU1ZHTGVuZ3RoJiBwb2RJbXAg
PSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoaW1wbCgpLmNvbnRleHRFbGVt
ZW50KCkpOworICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh3cmFwcGVkKCkuY29u
dGV4dEVsZW1lbnQoKSk7CiAgICAgZmxvYXQgdmFsdWUgPSBwb2RJbXAudmFsdWUobGVuZ3RoQ29u
dGV4dCwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7CkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSlNTVkdMZW5ndGg6OnZhbHVlKEV4ZWNT
dGF0ZSYgc3RhdGUpIGNvbnN0CiAKIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGltcGwoKS5pc1JlYWRPbmx5KCkp
IHsKKyAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNTcsMjcgKzU3LDI3IEBAIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVl
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBTVkdMZW5ndGgmIHBvZEltcCA9IGltcGwoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwor
ICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQoaW1wbCgpLmNvbnRleHRFbGVtZW50KCkpOworICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dCh3cmFwcGVkKCkuY29udGV4dEVsZW1lbnQoKSk7CiAgICAgcG9kSW1wLnNldFZh
bHVlKHZhbHVlLnRvRmxvYXQoJnN0YXRlKSwgbGVuZ3RoQ29udGV4dCwgZWMpOwogICAgIGlmIChl
YykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpbXBsKCkuY29tbWl0Q2hhbmdlKCk7CisgICAgd3JhcHBlZCgpLmNv
bW1pdENoYW5nZSgpOwogfQogCiBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZp
ZWRVbml0cyhFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIGlmIChpbXBsKCkuaXNSZWFkT25seSgp
KSB7CisgICAgaWYgKHdyYXBwZWQoKS5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTsKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgU1ZHTGVuZ3RoJiBwb2RJbXAgPSBpbXBs
KCkucHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICBTVkdMZW5ndGgmIHBvZEltcCA9IHdyYXBwZWQo
KS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDEpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CkBAIC04NywxNCArODcsMTQgQEAg
SlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoaW1wbCgpLmNvbnRl
eHRFbGVtZW50KCkpOworICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh3cmFwcGVk
KCkuY29udGV4dEVsZW1lbnQoKSk7CiAgICAgcG9kSW1wLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRz
KHVuaXRUeXBlLCBsZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgfQogCi0gICAgaW1wbCgpLmNvbW1pdENoYW5nZSgpOworICAgIHdyYXBwZWQoKS5jb21t
aXRDaGFuZ2UoKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggNTg1ZDcyNDdiNjFi
YTA5MGQ0MWQwODYxNmU1MmYyNTEwZTNmNGQzZi4uYjg0MjM0YjE3ZTViMWI0NjUxMGIwZWU1Y2Uy
MjU5YzIxMDlhYWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dG9yYWdlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIGJvb2wgSlNTdG9yYWdlOjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgU3Ry
aW5nIGl0ZW0gPSBpbXBsKCkuZ2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpLCBlYyk7CisgICAgU3RyaW5nIGl0ZW0gPSB3cmFwcGVkKCkuZ2V0SXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKIAogICAgIGlmIChpdGVtLmlzTnVsbCgpKQpAQCAtNjksNyArNjksNyBAQCBib29sIEpT
U3RvcmFnZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIHRoaXNPYmplY3QtPmltcGwoKS5yZW1vdmVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSksIGVjKTsKKyAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkucmVtb3ZlSXRl
bShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBlYyk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgzLDEyICs4MywxMiBA
QCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogewogICAgIEpTU3RvcmFnZSogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1N0b3JhZ2UqPihvYmplY3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoZWMpOworICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm47CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmtleShpLCBlYykpKTsKKyAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkua2V5KGksIGVjKSkpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MTgsNyArMTE4LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5zZXRJdGVtKHByb3Bl
cnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CisgICAgd3Jh
cHBlZCgpLnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5n
VmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hl
ZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3Vz
dG9tLmNwcAppbmRleCAwYTY5YTJlNmZkMjNjMjk4M2Y3OThmNGQwNWYyNjE3MTcxYWY2MzQwLi5j
YjkzOTdlZjdkMzFkOTZlMDY1YzAyZjRmNDkwN2M2MTRjM2U4MmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRM
aXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExp
c3RDdXN0b20uY3BwCmluZGV4IGQxYzYwNjVhOTc1ODBmMjk3ZTZlYzI0N2JmZmY4MTc0Yjg5OTU2
YzEuLmM0MjIyYTllMzRhZjI2NTU1OGJlZWVlN2U4NTEyYzM1NjIxMTVmNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTCiAgICAgaWYgKHByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvKiBp
dGVtID0gaW1wbCgpLmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICBhdXRvKiBpdGVtID0gd3JhcHBlZCgpLmdldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0
bGVDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVD
cnlwdG9DdXN0b20uY3BwCmluZGV4IGY1YmE0ZDMwMjljZDY4OGY5MzVlZmUzMGI3OWQ3OWJlMjIz
NDdmMjkuLmE1MGY4Mzk5YmE1ODY0ZDAxYWIxMzBjOGZjZDUxZGU0ZWJkZWU2ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAK
QEAgLTE1Miw3ICsxNTIsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAg
ICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZUVuY3J5cHQpKSB7Ci0gICAgICAgIGlt
cGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRl
ICdlbmNyeXB0JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVy
YWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2VuY3J5cHQnIikpOwogICAgICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCBKU1ZhbHVlIEpTU3VidGxl
Q3J5cHRvOjpkZWNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZURl
Y3J5cHQpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkg
dXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdkZWNyeXB0JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5
cHQnIikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VS
Uik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTI1Nyw3ICsyNTcs
NyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93
cyhDcnlwdG9LZXlVc2FnZVNpZ24pKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVND
SUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdzaWduJyIpKTsKKyAgICAgICAg
d3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGlu
Y2x1ZGUgJ3NpZ24nIikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQ
UE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTMw
OSw3ICszMDksNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAo
IWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlVmVyaWZ5KSkgewotICAgICAgICBpbXBsKCkuZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndmVyaWZ5
JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1
c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3ZlcmlmeSciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQpAQCAtNjQ2LDcgKzY0Niw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86Ondy
YXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CiAKICAgICBpZiAoIXdyYXBwaW5nS2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VXcmFw
S2V5KSkgewotICAgICAgICBpbXBsKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVz
YWdlcyBkbyBub3QgaW5jbHVkZSAnd3JhcEtleSciKSk7CisgICAgICAgIHdyYXBwZWQoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5
JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC03MjgsNyArNzI4LDcg
QEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCF1bndyYXBw
aW5nS2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpKSB7Ci0gICAgICAgIGltcGwo
KS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1
bndyYXBLZXknIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndW53cmFwS2V5JyIpKTsKICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKaW5kZXggNTdmODhiOTU1Y2Y1ODUxODhjMmE2YmVl
NGRmNzc0ZjRmMjk1MWJlZi4uZGViNDQwYjNhYmVhYjdiOGZlNDIyMGI3YmFhZDEwMjIwYTQ5N2I4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3Vl
Q3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBib29sIEpT
VGV4dFRyYWNrQ3VlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAg
ICAgSlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3Vl
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNr
Q3VlID0ganNUZXh0VHJhY2tDdWUtPmltcGwoKTsKKyAgICBUZXh0VHJhY2tDdWUmIHRleHRUcmFj
a0N1ZSA9IGpzVGV4dFRyYWNrQ3VlLT53cmFwcGVkKCk7CiAKICAgICAvLyBJZiB0aGUgY3VlIGlz
IGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNl
CiAgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZl
bnQgbGlzdGVuZXJzLgpAQCAtODQsNyArODQsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGV4dFRyYWNrQ3VlKiBjdWUpCiAKIHZv
aWQgSlNUZXh0VHJhY2tDdWU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIGlmIChUZXh0VHJhY2sqIHRleHRUcmFjayA9IGltcGwoKS50cmFjaygp
KQorICAgIGlmIChUZXh0VHJhY2sqIHRleHRUcmFjayA9IHdyYXBwZWQoKS50cmFjaygpKQogICAg
ICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0ZXh0VHJhY2spKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCmluZGV4IGVi
MTlmMjU3ODcxOTlmMWU3MGU5OWFmN2FkMmZiMDQyN2NlOWY3NWQuLjdmY2U2YWQyYWU1ZDRmMWUx
YjMxMjA3ODk1NWVhMGY2ODQwYWNlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEpTVGV4dFRyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1w
bCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQog
CiB2b2lkIEpTVGV4dFRyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmlu
Zygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRLaW5kKHN0cmluZyk7CisgICAgd3JhcHBl
ZCgpLnNldEtpbmQoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOwpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEpTVGV4dFRyYWNr
OjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8m
IHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldExh
bmd1YWdlKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldExhbmd1YWdlKHN0cmluZyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20u
Y3BwCmluZGV4IGUxYjhjNjMwOTkyNjFkMWYyYjlmNWU3YTRmZjVkYjY1MmE5MGE4NTQuLjNmNDZm
NDMzMWJiYmU2NjgxMjc3MTE0ZmIzYjQyZjI0YmZlOWNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNUZXh0VHJhY2tMaXN0Ojp2aXNp
dEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS5lbGVtZW50KCkpKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuZWxlbWVudCgpKSk7CiB9CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tD
dXN0b20uY3BwCmluZGV4IDk3NTE0NjcyNGRiMDI2OTA1NDQ0NTg5YWRkOTJmNDFiYjQ1MzA4YzUu
LjlhOTQzNmFmODA5YWNmYWI2ZGM1MDk4ODY4YzZlNTk2ZjgwZGY4ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCkBAIC00NCwxMSArNDQsMTEgQEAg
VHJhY2tCYXNlKiB0b1RyYWNrKEpTVmFsdWUgdmFsdWUpCiAKICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTVGV4dFRyYWNr
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU1RleHRUcmFjayo+KG9iamVjdCkt
PmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNUZXh0VHJhY2sqPihvYmplY3QpLT53
cmFwcGVkKCk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNBdWRpb1RyYWNrOjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0F1ZGlvVHJhY2sqPihvYmplY3QpLT5pbXBsKCk7
CisgICAgICAgIHJldHVybiAmanNDYXN0PEpTQXVkaW9UcmFjayo+KG9iamVjdCktPndyYXBwZWQo
KTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU1ZpZGVvVHJhY2s6OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiAmanNDYXN0PEpTVmlkZW9UcmFjayo+KG9iamVjdCktPmltcGwoKTsKKyAgICAg
ICAgcmV0dXJuICZqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogCiAg
ICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFj
a0V2ZW50Q3VzdG9tLmNwcAppbmRleCBmNTFkM2I5NjNjODE4MDNjZmU3MWI5NDdiNDJjOWRiZDAy
YmI4NWJlLi5lYWI2ZmYyMTM4YzUzZDdlM2ZlYjY0NDliMDZkNzFiM2RmMmU1YzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTVHJhY2tFdmVu
dDo6dHJhY2soRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBUcmFja0Jhc2UqIHRyYWNr
ID0gaW1wbCgpLnRyYWNrKCk7CisgICAgVHJhY2tCYXNlKiB0cmFjayA9IHdyYXBwZWQoKS50cmFj
aygpOwogICAgIGlmICghdHJhY2spCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKaW5kZXgg
YzFlNjgxZDQ5N2I0NGMwYjQ4ZTM3YTdmZWEwODFiMTJkMGZjMzVkNy4uMmJlMDhhOTkxZjdkZDE0
ZWY5YTJhNjJkMThmMzFkOWNmMTcxNTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRl
ciA9IGltcGwoKS5maWx0ZXIoKSkKKyAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gd3JhcHBl
ZCgpLmZpbHRlcigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZmlsdGVyKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAKaW5kZXggOGZjNmVmOGZiMzBk
MjBiMzliZDA5OGUyZjE5MzA1OTJmZjQyOGFmYi4uYWRmNDkzNjQ3M2I0MjNkYzEyZGVjN2FkODBk
YmY3MjBhYjNlYTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNV
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU1VzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2U6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewot
ICAgIGlmIChVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSBpbXBsKCkuaGFuZGxlcihwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxPYmplY3QoKS0+d29y
bGQoKSkpIHsKKyAgICBpZiAoVXNlck1lc3NhZ2VIYW5kbGVyKiBoYW5kbGVyID0gd3JhcHBlZCgp
LmhhbmRsZXIocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgZ2xvYmFs
T2JqZWN0KCktPndvcmxkKCkpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgUmVhZE9u
bHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGhh
bmRsZXIpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKaW5kZXggNmYwYWY1YWY1YThl
YTFlMWVhN2U1ZmUxOTFlMGM4MDdjMjA0MWU5MC4uZDgyOGUxMmZhMGM2MmUwODNiMDM2YjljNzQz
ZjA0MGU0YzY3ZjhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdm9pZCBKU1ZpZGVvVHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIHZvaWQg
SlNWaWRlb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBA
IC00Niw3ICs0Niw3IEBAIHZvaWQgSlNWaWRlb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0
YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0S2luZChzdHJpbmcpOworICAgIHdyYXBwZWQoKS5z
ZXRLaW5kKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNl
dExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3Ry
aW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFuZ3Vh
Z2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNw
cAppbmRleCA2NmQ3YmVhM2UwMGUwZGUzYWYwMTgxNWRhNmI5MjFkZWRkYmMxMzE0Li5hMmEzNjE4
NGE0ZWVkNDk1NTI5NWExZTU4NzdiOWRlNDAxZTY2MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOTlmZjcwM2M0NjQ5YTYz
MDRlNjg4YmZkYTAxZTZmOGIxMGZjZjQ2Yi4uN2M0ZWMwODE4NzgxYzg3MjFlY2ZiZDc1NTBmZDYx
NjgxYmYyYTExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHCiAKIHZvaWQgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KCZ3cmFwcGVkKCkpOwogfQogCiBKU1ZhbHVlIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjKQpAQCAtOTksNyArOTksNyBA
QCBKU1ZhbHVlIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSAyKQogICAg
ICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAKLSAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQgPSB3
cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAppbmRl
eCA0ZTRlNWNhOThmYzE0OTAyYTJjYzAwMGI2YWIwNjM4OTBhMjFiMTY1Li44MzFjZjU5MWVkN2Qw
OGU5YTA4ZTE2NDJhOTVhMzFjNDY2MWZkYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3Rv
bS5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRPYmplY3RQYXJhbWV0
ZXIoSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBvYmosIEV4ZWNTdGF0ZSYgcwogICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPmltcGwoKTsK
KyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gb2JqLT53cmFwcGVkKCk7
CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQz
Migmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0
ZW4KIAogdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBwZWQoKSk7CiB9CiAK
IEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMo
RXhlY1N0YXRlJiBzdGF0ZSkKQEAgLTI3Myw3ICsyNzMsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpT
V2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IGlmICghcHJvZ3JhbSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CkBAIC0yOTYs
NyArMjk2LDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVu
c2lvbihFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAx
KQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAotICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcgbmFtZSA9IHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7
CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTMxNSw3ICszMTUsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEV4ZWNTdGF0ZQogICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICB1bnNp
Z25lZCB0YXJnZXQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7
CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTMzOSw3ICszMzksNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIHBuYW1lID0g
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0zNTcs
NyArMzU3LDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0g
SlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTM4
Myw3ICszODMsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hh
ZGVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmICghc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MCkuaW5oZXJpdHMoSlNXZWJHTFNoYWRlcjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CiAgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IEpTV2ViR0xTaGFk
ZXI6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC00MDAsNyArNDAw
LDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFt
ZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyhFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoY29udGV4dC5p
c0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICBWZWN0b3I8U3Ry
aW5nPiB2YWx1ZSA9IGNvbnRleHQuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOwpAQCAtNDIxLDcg
KzQyMSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3Jt
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAg
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0ID0gd3JhcHBlZCgpOwogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9n
cmFtOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJv
Z3JhbSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CkBAIC02OTEsNzcgKzY5MSw3
NyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rpb25N
YXRyaXhUb0NhbGwgZiwgSlNDOjpFeGVjU3RhdAogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0xdiwgc3RhdGUsIGltcGwoKSk7CisgICAg
cmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtMXYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQog
CiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZv
cm0xdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3Jt
MXYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0ydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0
dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtMnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBK
U0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0y
diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtMnYs
IHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtM2Z2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0zdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJu
IGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtM3YsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6
OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwg
c3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtM3YsIHN0
YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtNGZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
ZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm00diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRh
dGFGdW5jdGlvbmYoZl91bmlmb3JtNHYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpT
VmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm00diwgc3Rh
dGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtNHYsIHN0YXRl
LCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtTWF0cml4MmZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJmdiwgc3RhdGUsIGltcGwoKSk7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXgyZnYsIHN0YXRl
LCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtTWF0cml4M2Z2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNmdiwgc3RhdGUsIGltcGwoKSk7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXgzZnYsIHN0YXRl
LCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtTWF0cml4NGZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDRmdiwgc3RhdGUsIGltcGwoKSk7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXg0ZnYsIHN0YXRl
LCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2ZXJ0ZXhBdHRyaWIxZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMXYsIHN0YXRlLCBpbXBsKCkpOworICAgIHJl
dHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMXYsIHN0YXRlLCB3cmFwcGVkKCkpOwog
fQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRy
aWIyZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25m
KGZfdmVydGV4QXR0cmliMnYsIHN0YXRlLCBpbXBsKCkpOworICAgIHJldHVybiBkYXRhRnVuY3Rp
b25mKGZfdmVydGV4QXR0cmliMnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIzZnYoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmli
M3YsIHN0YXRlLCBpbXBsKCkpOworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0
cmliM3YsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQog
ewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliNHYsIHN0YXRlLCBpbXBs
KCkpOworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliNHYsIHN0YXRlLCB3
cmFwcGVkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAKaW5kZXggYjZkMzlhYzA3MGY1OTc3Mzc4OTg5MTI5OWRkZTAwMjM1NzI1ODBkMi4uZWRl
NWJiOTdhODY4YTQyMWYzNTc5ZjQ4N2Y3NTk5ZGM4NzRlNTg2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBwZWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcApp
bmRleCAwNWE5ZTcwMmU3YzgxOWJmN2I3NTFkOWJlNzdjMTEyYmUzNTk0ZmIzLi4wZWZiZDEyZjAz
MzQ5NmVjM2NlMmNkMDZmMTkxN2I2ZjFmZDNlYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmaW1w
bCgpKTsKKyAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZ3cmFwcGVkKCkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV29ya2VyKEV4ZWNT
dGF0ZSogZXhlYykKQEAgLTU3LDcgKzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKIAogICAgIC8vIFNlZSBzZWN0aW9uIDQuOC4yIHN0ZXAg
MTQgb2YgV2ViV29ya2VycyBmb3Igd2h5IHRoaXMgaXMgdGhlIGxleGljYWxHbG9iYWxPYmplY3Qu
IAotICAgIERPTVdpbmRvdyYgd2luZG93ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5pbXBsKCk7CisgICAgRE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2lu
ZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIEFTU0VSVCh3aW5kb3cuZG9jdW1lbnQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKaW5kZXggYWNkNjE3ZTg2OTg5MjkwNzUzNzZlNTgzMmFiMjgzZjJkMmZhNzkwMC4uNThkYTc1
ZThlNzMyOTQ5NTlkZTFiYTYzNzY3M2IzYzc4ODUyZjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNDcs
NyArNDcsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZQogCiBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCiAgICAgOiBK
U0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSkKLSAgICAsIG1faW1wbChpbXBsKQorICAgICwgbV93cmFwcGVk
KGltcGwpCiB7CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9pbXBsLmdldCgpOworICAgIHJldHVybiBtX3dyYXBwZWQuZ2V0KCk7CiB9
CiAKIGJvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3Qg
SlNHbG9iYWxPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggMDMx
NTMwZWU1ODYxMzlmYzVhYjZmOGI4ODUxNGI1ODQ4MTFjNzJkZS4uMmRlOGNjNGZhMDY4ZWQzNDQy
MDZmMTAwOGI0Y2E2YTdlNmI3NjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBERUNMQVJFX0lORk87CiAKLSAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9CisgICAgICAgIFdv
cmtlckdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFJlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gbV9pbXBsOworICAgICAgICBSZWZQdHI8V29y
a2VyR2xvYmFsU2NvcGU+IG1fd3JhcHBlZDsKICAgICB9OwogCiAgICAgLy8gUmV0dXJucyBhIEpT
V29ya2VyR2xvYmFsU2NvcGUgb3IganNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKaW5kZXggMTI4OThj
Yzk3NWJlZjUwMGIzYjEwZGJhZjFmNjUwYTg2ZGMzYzMwMi4uYTk0NTc3MzJkMjI4Y2ZhOWFjYTgw
MzU1ZmUzZjQyZDdkZmExNTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKQEAgLTUzLDkgKzUzLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGU6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChXb3JrZXJM
b2NhdGlvbiogbG9jYXRpb24gPSBpbXBsKCkub3B0aW9uYWxMb2NhdGlvbigpKQorICAgIGlmIChX
b3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSB3cmFwcGVkKCkub3B0aW9uYWxMb2NhdGlvbigpKQog
ICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobG9jYXRpb24pOwotICAgIGlmIChXb3JrZXJO
YXZpZ2F0b3IqIG5hdmlnYXRvciA9IGltcGwoKS5vcHRpb25hbE5hdmlnYXRvcigpKQorICAgIGlm
IChXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IHdyYXBwZWQoKS5vcHRpb25hbE5hdmlnYXRv
cigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobmF2aWdhdG9yKTsKIH0KIApAQCAt
ODAsMzEgKzgwLDMxIEBAIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0
cyhFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAot
ICAgIGltcGwoKS5pbXBvcnRTY3JpcHRzKHVybHMsIGVjKTsKKyAgICB3cmFwcGVkKCkuaW1wb3J0
U2NyaXB0cyh1cmxzLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6
OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGds
b2JhbE9iamVjdCgpLT53b3JsZCgpLCBpbXBsKCkuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFj
dGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIHdyYXBwZWQoKS5j
b250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIWFjdGlvbikKICAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKDApOwogICAgIGludCBkZWxheSA9IHN0YXRlLmFyZ3VtZW50KDEpLnRv
SW50MzIoJnN0YXRlKTsKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLnNldFRpbWVvdXQoV1RG
Ojptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5z
ZXRUaW1lb3V0KFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOwogfQogCiBKU1ZhbHVlIEpTV29y
a2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpj
cmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgaW1wbCgpLmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpLCB3cmFwcGVkKCkuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGlmIChzdGF0ZS5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKCFh
Y3Rpb24pCiAgICAgICAgIHJldHVybiBqc051bWJlcigwKTsKICAgICBpbnQgZGVsYXkgPSBzdGF0
ZS5hcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGltcGwo
KS5zZXRJbnRlcnZhbChXVEY6Om1vdmUoYWN0aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNO
dW1iZXIod3JhcHBlZCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDkxNWIwNjI4NzQwZTc3
ZWEwZGE3MGE3ZmJiZWNkYjcxODBjYmE2YmQuLjg5YjNiY2ZiYjJjNjRiMmUzYjhlZjFiZjhmNjM3
OTZkNmI4YjI0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC01OCwxNiArNTgsMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChYTUxIdHRwUmVxdWVzdFVwbG9hZCog
dXBsb2FkID0gaW1wbCgpLm9wdGlvbmFsVXBsb2FkKCkpCisgICAgaWYgKFhNTEh0dHBSZXF1ZXN0
VXBsb2FkKiB1cGxvYWQgPSB3cmFwcGVkKCkub3B0aW9uYWxVcGxvYWQoKSkKICAgICAgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHVwbG9hZCk7CiAKLSAgICBpZiAoRG9jdW1lbnQqIHJlc3BvbnNl
RG9jdW1lbnQgPSBpbXBsKCkub3B0aW9uYWxSZXNwb25zZVhNTCgpKQorICAgIGlmIChEb2N1bWVu
dCogcmVzcG9uc2VEb2N1bWVudCA9IHdyYXBwZWQoKS5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCiAg
ICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZURvY3VtZW50KTsKIAotICAgIGlm
IChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9IGltcGwoKS5vcHRpb25hbFJlc3Bv
bnNlQXJyYXlCdWZmZXIoKSkKKyAgICBpZiAoQXJyYXlCdWZmZXIqIHJlc3BvbnNlQXJyYXlCdWZm
ZXIgPSB3cmFwcGVkKCkub3B0aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZUFycmF5QnVmZmVyKTsKIAotICAgIGlmIChCbG9i
KiByZXNwb25zZUJsb2IgPSBpbXBsKCkub3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKKyAgICBpZiAo
QmxvYiogcmVzcG9uc2VCbG9iID0gd3JhcHBlZCgpLm9wdGlvbmFsUmVzcG9uc2VCbG9iKCkpCiAg
ICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyZXNwb25zZUJsb2IpOwogfQogCkBAIC03Nyw3
ICs3Nyw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gc3Rh
dGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogCi0gICAgY29uc3QgVVJMJiB1cmwgPSBpbXBsKCkuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0
cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHdyYXBw
ZWQoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOwogICAgIFN0cmlu
ZyBtZXRob2QgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC04OCwxMyArODgs
MTMgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiAK
ICAgICAgICAgICAgIGlmICghc3RhdGUuYXJndW1lbnQoNCkuaXNVbmRlZmluZWQoKSkgewogICAg
ICAgICAgICAgICAgIFN0cmluZyBwYXNzd29yZCA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNr
KCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoNCkpOwotICAgICAgICAgICAgICAgIGlt
cGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dvcmQsIGVjKTsKKyAgICAg
ICAgICAgICAgICB3cmFwcGVkKCkub3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIHBhc3N3
b3JkLCBlYyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBpbXBsKCkub3Bl
bihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIGVjKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVk
KCkub3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIGVjKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBpbXBsKCkub3BlbihtZXRob2QsIHVybCwgYXN5bmMsIGVjKTsKKyAgICAgICAg
ICAgIHdyYXBwZWQoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOwogICAgIH0gZWxzZQot
ICAgICAgICBpbXBsKCkub3BlbihtZXRob2QsIHVybCwgZWMpOworICAgICAgICB3cmFwcGVkKCku
b3BlbihtZXRob2QsIHVybCwgZWMpOwogCiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMp
OwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTM4LDMwICsxMzgsMzAgQEAgcHJpdmF0
ZToKIAogSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGlt
cGwoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGltcGwoKS51cmwoKSk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KHdyYXBwZWQoKS5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHdyYXBwZWQoKS51cmwoKSk7CiAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBKU1ZhbHVlIHZhbCA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIGlm
ICh2YWwuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoZWMpOworICAg
ICAgICB3cmFwcGVkKCkuc2VuZChlYyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTRG9j
dW1lbnQ6OmluZm8oKSkpCi0gICAgICAgIGltcGwoKS5zZW5kKEpTRG9jdW1lbnQ6OnRvV3JhcHBl
ZCh2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKEpTRG9jdW1lbnQ6OnRvV3JhcHBl
ZCh2YWwpLCBlYyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTQmxvYjo6aW5mbygpKSkK
LSAgICAgICAgaW1wbCgpLnNlbmQoSlNCbG9iOjp0b1dyYXBwZWQodmFsKSwgZWMpOworICAgICAg
ICB3cmFwcGVkKCkuc2VuZChKU0Jsb2I6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CiAgICAgZWxzZSBp
ZiAodmFsLmluaGVyaXRzKEpTRE9NRm9ybURhdGE6OmluZm8oKSkpCi0gICAgICAgIGltcGwoKS5z
ZW5kKEpTRE9NRm9ybURhdGE6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQo
KS5zZW5kKEpTRE9NRm9ybURhdGE6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CiAgICAgZWxzZSBpZiAo
dmFsLmluaGVyaXRzKEpTQXJyYXlCdWZmZXI6OmluZm8oKSkpCi0gICAgICAgIGltcGwoKS5zZW5k
KHRvQXJyYXlCdWZmZXIodmFsKSwgZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZCh0b0FycmF5
QnVmZmVyKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNBcnJheUJ1ZmZl
clZpZXc6OmluZm8oKSkpIHsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdmlldyA9
IHRvQXJyYXlCdWZmZXJWaWV3KHZhbCk7Ci0gICAgICAgIGltcGwoKS5zZW5kKHZpZXcuZ2V0KCks
IGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQodmlldy5nZXQoKSwgZWMpOwogICAgIH0gZWxz
ZQotICAgICAgICBpbXBsKCkuc2VuZCh2YWwudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRl
KSwgZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZCh2YWwudG9TdHJpbmcoJnN0YXRlKS0+dmFs
dWUoJnN0YXRlKSwgZWMpOwogCiAgICAgU2VuZEZ1bmN0b3IgZnVuY3RvcjsKICAgICBzdGF0ZS5p
dGVyYXRlKGZ1bmN0b3IpOwotICAgIGltcGwoKS5zZXRMYXN0U2VuZExpbmVBbmRDb2x1bW5OdW1i
ZXIoZnVuY3Rvci5saW5lKCksIGZ1bmN0b3IuY29sdW1uKCkpOwotICAgIGltcGwoKS5zZXRMYXN0
U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFzdFNlbmRMaW5lQW5k
Q29sdW1uTnVtYmVyKGZ1bmN0b3IubGluZSgpLCBmdW5jdG9yLmNvbHVtbigpKTsKKyAgICB3cmFw
cGVkKCkuc2V0TGFzdFNlbmRVUkwoZnVuY3Rvci51cmwoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMTY5LDcgKzE2
OSw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUmIHN0YXRlKQog
SlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQoRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgdGV4dCA9IGlt
cGwoKS5yZXNwb25zZVRleHQoZWMpOworICAgIFN0cmluZyB0ZXh0ID0gd3JhcHBlZCgpLnJlc3Bv
bnNlVGV4dChlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xODAsMjUgKzE4MCwy
NSBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUm
IHN0YXRlKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBVc2UgQ2FjaGVkQXR0cmlidXRlIGZvciBv
dGhlciB0eXBlcyB0aGFuIEpTT04gYXMgd2VsbC4KLSAgICBpZiAobV9yZXNwb25zZSAmJiBpbXBs
KCkucmVzcG9uc2VDYWNoZUlzVmFsaWQoKSkKKyAgICBpZiAobV9yZXNwb25zZSAmJiB3cmFwcGVk
KCkucmVzcG9uc2VDYWNoZUlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1fcmVzcG9uc2UuZ2V0
KCk7CiAKLSAgICBpZiAoIWltcGwoKS5kb25lV2l0aG91dEVycm9ycygpICYmIGltcGwoKS5yZXNw
b25zZVR5cGVDb2RlKCkgPiBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlVGV4dCkKKyAgICBp
ZiAoIXdyYXBwZWQoKS5kb25lV2l0aG91dEVycm9ycygpICYmIHdyYXBwZWQoKS5yZXNwb25zZVR5
cGVDb2RlKCkgPiBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlVGV4dCkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogCi0gICAgc3dpdGNoIChpbXBsKCkucmVzcG9uc2VUeXBlQ29kZSgpKSB7
CisgICAgc3dpdGNoICh3cmFwcGVkKCkucmVzcG9uc2VUeXBlQ29kZSgpKSB7CiAgICAgY2FzZSBY
TUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlRGVmYXVsdDoKICAgICBjYXNlIFhNTEh0dHBSZXF1
ZXN0OjpSZXNwb25zZVR5cGVUZXh0OgogICAgICAgICByZXR1cm4gcmVzcG9uc2VUZXh0KHN0YXRl
KTsKIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZUpTT046CiAgICAgICAg
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU09OUGFyc2UoJnN0YXRlLCBpbXBsKCku
cmVzcG9uc2VUZXh0SWdub3JpbmdSZXNwb25zZVR5cGUoKSk7CisgICAgICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNPTlBhcnNlKCZzdGF0ZSwgd3JhcHBlZCgpLnJlc3BvbnNlVGV4dElnbm9yaW5n
UmVzcG9uc2VUeXBlKCkpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IGpzTnVsbCgpOwogICAgICAgICAgICAgbV9yZXNwb25zZS5zZXQoc3RhdGUudm0o
KSwgdGhpcywgdmFsdWUpOwogCi0gICAgICAgICAgICBpbXBsKCkuZGlkQ2FjaGVSZXNwb25zZUpT
T04oKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5kaWRDYWNoZVJlc3BvbnNlSlNPTigpOwogCiAg
ICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KQEAgLTIwNiw3ICsyMDYsNyBAQCBK
U1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0
CiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlRG9jdW1lbnQ6CiAgICAgICAg
IHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gaW1wbCgpLnJlc3BvbnNlWE1MKGVjKTsKKyAgICAgICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHdyYXBwZWQoKS5yZXNwb25zZVhNTChlYyk7CiAgICAgICAgICAgICBp
ZiAoZWMpIHsKICAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0yMTUsMTAgKzIxNSwxMCBA
QCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiAgICAgICAgIH0KIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZUJs
b2I6Ci0gICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5y
ZXNwb25zZUJsb2IoKSk7CisgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5yZXNwb25zZUJsb2IoKSk7CiAKICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0
OjpSZXNwb25zZVR5cGVBcnJheUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgaW1wbCgpLnJlc3BvbnNlQXJyYXlCdWZmZXIoKSk7CisgICAgICAgIHJl
dHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5yZXNwb25zZUFycmF5
QnVmZmVyKCkpOwogICAgIH0KIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAppbmRleCAy
NDE2ZDY3OTA4MTM5MTNmMTNlYzBhNTE5YzVmMTA4NmMyNjM1ODU2Li41ZDM0ODZlODU5YzY0MjU2
Njc3Y2Q4N2JjYWJmYzdiNmExNjAzNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNYUGF0aFJlc3VsdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvJiB2YWx1ZSA9IGltcGwo
KS52YWx1ZSgpOworICAgIGF1dG8mIHZhbHVlID0gd3JhcHBlZCgpLnZhbHVlKCk7CiAgICAgaWYg
KHZhbHVlLmlzTm9kZVNldCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgbm9kZSA6IHZhbHVlLnRv
Tm9kZVNldCgpKQogICAgICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qobm9kZS5n
ZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJv
Y2Vzc29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nl
c3NvckN1c3RvbS5jcHAKaW5kZXggMzMxYjlmMWIwYmJmNTc5YWM0NTJkMDdlZGMxYjlmNjU4ZmNm
NjE1Zi4uMTUyYjg3MzcwMGI5YTBkYzQ2OGNjMDNmYjA5ZTFhNDMyNGRjNzY4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBTdHJp
bmcgbG9jYWxOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9TdHJpbmcoJnN0YXRl
KS0+dmFsdWUoJnN0YXRlKTsKICAgICBTdHJpbmcgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgyKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIGltcGwoKS5zZXRQ
YXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKKyAgICB3cmFwcGVkKCku
c2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1ZSBKU1hTTFRQcm9j
ZXNzb3I6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBTdHJpbmcgbG9j
YWxOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFs
dWUoJnN0YXRlKTsKLSAgICBTdHJpbmcgdmFsdWUgPSBpbXBsKCkuZ2V0UGFyYW1ldGVyKG5hbWVz
cGFjZVVSSSwgbG9jYWxOYW1lKTsKKyAgICBTdHJpbmcgdmFsdWUgPSB3cmFwcGVkKCkuZ2V0UGFy
YW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKICAgICByZXR1cm4ganNTdHJpbmdPclVu
ZGVmaW5lZCgmc3RhdGUsIHZhbHVlKTsKIH0KIApAQCAtNzMsNyArNzMsNyBAQCBKU1ZhbHVlIEpT
WFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAg
IFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygm
c3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIGltcGwoKS5yZW1vdmVQYXJhbWV0ZXIobmFtZXNw
YWNlVVJJLCBsb2NhbE5hbWUpOworICAgIHdyYXBwZWQoKS5yZW1vdmVQYXJhbWV0ZXIobmFtZXNw
YWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCAwNThj
OTFjOTI0NGE1YzgwYWU5ZThmMGZiNjRhZTBhODQ2YTNkNWQzLi5mZWJkMjkwMGU2MjVlN2NlMzZm
YzcyOTMzN2E0OTJiODM5NmQ1ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKCF3aW5kb3cpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSB3aW5kb3ctPmltcGwoKS5m
cmFtZSgpOworICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSB3aW5kb3ctPndyYXBwZWQoKS5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0
cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKaW5kZXgg
MDQzMGJhN2ZkNTNjYWMyYzU0MmU4NjMyMDRkYWJhYzVmYTBiYWYxNS4uMWNjY2Y4YWYyMTAwZjA3
ZjUwNWZlNjdiZmMwMGI1OTQ0ODk5NDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZv
aWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lJiBmcmFtZSkKICAgICAgICAg
ICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT52bSgpLCB3aW5kb3cpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIERPTVdpbmRvdyogZG9tV2luZG93ID0gZnJhbWUuZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCk7Ci0gICAgICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3co
KS0+aW1wbCgpID09IGRvbVdpbmRvdykKKyAgICAgICAgICAgIGlmICgmd2luZG93U2hlbGwtPndp
bmRvdygpLT53cmFwcGVkKCkgPT0gZG9tV2luZG93KQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2luZG93KGRvbVdpbmRvdyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIx
NjFlNjZmOGQ5MmM4MGM0ZmM4YjJiNzI2YmMyNDg2NTdkZDUyZDkuLjYyOWM0MjEzYWU4ZmExYjZl
OWQyNmRlMDAzZmY0ZTEwYjY2ZTlhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKERPTVdpbmRvdyogbmV3RE9NV2luZG93LCBib29s
IGdvaW5nSW50b1AKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdpbmRvd1NoZWxscy5zaXpl
KCk7ICsraSkgewogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCA9IHdpbmRv
d1NoZWxsc1tpXS5nZXQoKTsKIAotICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3coKS0+
aW1wbCgpID09IG5ld0RPTVdpbmRvdykKKyAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2luZG93
KCktPndyYXBwZWQoKSA9PSBuZXdET01XaW5kb3cpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAvLyBDbGVhciB0aGUgZGVidWdnZXIgYW5kIGNvbnNvbGUgZnJvbSB0aGUgY3VycmVu
dCB3aW5kb3cgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyB3aW5kb3cuCkBAIC0zOTEsNyArMzkxLDcg
QEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8
c3RkOjpwYWlyPEpTQzo6RXhlY1N0YXRlKiwKIHsKICAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRv
ciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVnaW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5l
bmQoKTsgKytpdGVyKSB7CiAgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gaXRlci0+dmFs
dWUtPndpbmRvdygpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4gPSBpdGVyLT52YWx1ZS0+d2luZG93KCktPmltcGwoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpOworICAgICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gaXRlci0+dmFsdWUtPndp
bmRvdygpLT53cmFwcGVkKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAg
cmVzdWx0LmFwcGVuZChzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+
KGV4ZWMsIG9yaWdpbikpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmNwcAppbmRleCBhZTNjNzI5NzZmZjk3MGFhZTJjZDM1MTlhYjg2MWEwNThiOTRi
Y2RlLi4yNmNhYjNjNGEyNzFkY2FiNzBhMzc2YTAwOTAyZmFhZDM0ODA0YjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERP
TVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUpCiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0U3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHMo
SlNET01XaW5kb3dCYXNlOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gJkpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCktPmltcGwo
KTsKKyAgICByZXR1cm4gJkpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVj
dCktPndyYXBwZWQoKTsKIH0KIAogRnJhbWUqIGZyYW1lRnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IDYz
ZjZiNTUyZDA0Yjk1OTRiZjFlMzI5NTNjZTUxZGJmZDk4OGM5ODguLjQzNTJlYjRlMGViOGE5ZGQz
NDgyNGNiYTM4MzU5NGJiYmUyMjc4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1t
CkBAIC01NzEsNyArNTcxLDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZl
bnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIGlmICghb2JqZWN0LT5pbmhlcml0cyhKU05vZGU6
OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBXZWJDb3JlOjpOb2RlJiBub2Rl
ID0ganNDYXN0PEpTTm9kZSo+KG9iamVjdCktPmltcGwoKTsKKyAgICBXZWJDb3JlOjpOb2RlJiBu
b2RlID0ganNDYXN0PEpTTm9kZSo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICByZXR1cm4ga2l0
KCZub2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01VdGlsaXR5Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1t
CmluZGV4IGZiMTdmMGQzZDg2YjEwZGE1ODA4ZDE4OGNlYzkwNGMwOTg2Mjc5YTEuLjFjM2M3Y2Zl
ZTI1M2QwNzU4ZDU0YjM4NDljZmY0YjNlNWNmNzMzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NVXRpbGl0eS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTVV0aWxpdHkubW0KQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGlubGluZSBp
ZCBjcmVhdGVET01XcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9iamVjdCkKIHsKICAgICAjZGVmaW5l
IFdSQVAoY2xhc3NOYW1lKSBcCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKFdlYkNvcmU6
OkpTIyNjbGFzc05hbWU6OmluZm8oKSkpIFwKLSAgICAgICAgICAgIHJldHVybiBraXQoJnN0YXRp
Y19jYXN0PFdlYkNvcmU6OkpTIyNjbGFzc05hbWUqPihvYmplY3QpLT5pbXBsKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SlMjI2NsYXNzTmFtZSo+KG9i
amVjdCktPndyYXBwZWQoKSk7CiAKICAgICBXUkFQKENTU1J1bGUpCiAgICAgV1JBUChDU1NSdWxl
TGlzdCkKQEAgLTEyMSwxMCArMTIxLDEwIEBAIHN0YXRpYyBpbmxpbmUgaWQgY3JlYXRlRE9NV3Jh
cHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QpCiAgICAgI3VuZGVmIFdSQVAKIAogICAgIGlmIChv
YmplY3QtPmluaGVyaXRzKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGwqPihv
YmplY3QpLT5pbXBsKCkpOworICAgICAgICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+d3JhcHBlZCgpKTsKIAogICAgIGlmIChvYmpl
Y3QtPmluaGVyaXRzKFdlYkNvcmU6OkpTRE9NSW1wbGVtZW50YXRpb246OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpTRE9NSW1wbGVtZW50YXRpb24q
PihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJD
b3JlOjpKU0RPTUltcGxlbWVudGF0aW9uKj4ob2JqZWN0KS0+d3JhcHBlZCgpKTsKIAogICAgIHJl
dHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tCmluZGV4IDU3ZjMyMDJhOGMyZDYwMTRlZTFlMWFjOGZjZjdlNWJkMDYyYTc3Yzgu
LmZiNmRmMjVhNGM3YmY0NzhmYTMzMTEzOTcyMTJjNzFjNmYwNTc2YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0yNTIsNyArMjUy
LDcgQEAgc3RhdGljIHZvaWQgYWRkRXhjZXB0aW9uVG9Db25zb2xlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAvLyBKU0RPTVdpbmRvd0Jhc2UqIGlzbid0IHRoZSByaWdodCBvYmplY3QgdG8gcmVwcmVz
ZW50IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nCiAgICAgLy8gSmF2YVNjcmlwdC4gSW5zdGVhZCwg
d2Ugc2hvdWxkIHVzZSBFeGVjU3RhdGUsIGxpa2Ugd2UgZG8gZWxzZXdoZXJlLgogICAgIEpTRE9N
V2luZG93QmFzZSogdGFyZ2V0ID0ganNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHJvb3QtPmdsb2Jh
bE9iamVjdCgpKTsKLSAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpLCB0YXJnZXQtPmltcGwoKSk7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgdGFyZ2V0LT53cmFwcGVkKCkpOwogfQog
CiAtIChKU0dsb2JhbENvbnRleHRSZWYpX2dsb2JhbENvbnRleHRSZWYKQEAgLTU0MSw3ICs1NDEs
NyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0Fy
cmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVy
aXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpIHsKICAgICAgICAgICAgIC8vIFBsdWdpbiBlbGVt
ZW50cyBjYWNoZSB0aGUgaW5zdGFuY2UgaW50ZXJuYWxseS4KLSAgICAgICAgICAgIGlmIChPYmpj
SW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4ocGx1Z2luSW5z
dGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihvYmplY3QpLT5pbXBsKCkpKSkKKyAgICAgICAg
ICAgIGlmIChPYmpjSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNl
Kj4ocGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihvYmplY3QpLT53cmFwcGVk
KCkpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE9iamVjdCgpOwogICAg
ICAgICB9IGVsc2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVPYmplY3Q6OmluZm8o
KSkpIHsKICAgICAgICAgICAgIE9iakNSdW50aW1lT2JqZWN0KiBydW50aW1lT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8T2JqQ1J1bnRpbWVPYmplY3QqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1NjgzN2EyOTQw
OWRhOTExZWExZDI1MGRkOTJlMmM1MDFmZGM4MjJlLi43ZjhmNDg5NTM0MGUzMzJkMGM2M2E4YTAz
YTU4NDM1ZTkzY2I4Yjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDIxLDcgKzQyMSw3IEBAIHN1YiBHZW5lcmF0ZUdl
dE93blByb3BlcnR5U2xvdEJvZHkKICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24t
PnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgcHVzaChAZ2V0
T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAob3B0aW9uYWxJbmRleCkge1xuIik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAi
ICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRoaXNPYmpl
Y3QtPmltcGwoKS5sZW5ndGgoKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9w
ZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFs
dWUoKSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgIH0K
ICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7XG4iKTsKICAgICAgICAgIyBBc3N1bWUgdGhh
dCBpZiB0aGVyZSdzIGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQpAQCAtMTE4
OCw5ICsxMTg4LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoTmVlZHNJbXBsZW1l
bnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlmICgkaGFzUGFyZW50KSB7Ci0g
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBs
KCkgY29uc3RcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkaW50
ZXJmYWNlTmFtZSYgd3JhcHBlZCgpIGNvbnN0XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUmPihCYXNlOjppbXBsKCkp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUmPihCYXNlOjp3cmFwcGVkKCkpO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICB9CiAgICAg
fQpAQCAtMTc1OSw5ICsxNzU5LDkgQEAgc3ViIEdldEluZGV4ZWRHZXR0ZXJFeHByZXNzaW9uCiB7
CiAgICAgbXkgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiA9IHNoaWZ0OwogICAgIGlmICgkaW5kZXhl
ZEdldHRlckZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKLSAgICAg
ICAgcmV0dXJuICJqc1N0cmluZ09yVW5kZWZpbmVkKHN0YXRlLCB0aGlzT2JqZWN0LT5pbXBsKCku
aXRlbShpbmRleCkpIjsKKyAgICAgICAgcmV0dXJuICJqc1N0cmluZ09yVW5kZWZpbmVkKHN0YXRl
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpIjsKICAgICB9Ci0gICAgcmV0dXJu
ICJ0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+aW1w
bCgpLml0ZW0oaW5kZXgpKSI7CisgICAgcmV0dXJuICJ0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSI7CiB9CiAK
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCkBAIC0yMjI4LDcgKzIyMjgsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1
bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRF
WCkge1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLmxl
bmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdz
IGEgc2V0dGVyLCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9
KSB7CkBAIC0yMzI4LDkgKzIzMjgsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogICAgICAgICAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIpOwogICAgICAgICAgICAg
ICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRob2ROYW1lKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRCeVNldHRpbmcifSkgLiAiRW5h
YmxlZCI7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgh
Y2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSlc
biIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRU
aGlzLT5pbXBsKCkuZnJhbWUoKS0+c2V0dGluZ3MoKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkuZnJhbWUoKS0+c2V0dGluZ3MoKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNldHRpbmdzLiRlbmFibGVfZnVuY3Rpb24o
KSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTIzNDMsNyArMjM0Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2Vj
dXJpdHkifSAmJgogICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSAmJgogICAgICAgICAgICAgICAg
ICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNr
U2VjdXJpdHlPbkdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
c3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAgLTIzNjEsNyArMjM2MSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJGV4Y2Vw
dGlvbkNvZGUgPSAkZ2V0dGVyRXhjZXB0aW9ucyA/ICJlYyIgOiAiMCI7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gYmluZGluZ05hbWUoXCIkaW50ZXJmYWNlTmFtZS4kbmFtZVwiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkge1xuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRtZW1vaXplZFR5cGUgbWVt
b2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUo
IiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVzdWx0ID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PCRtZW1v
aXplZFR5cGU+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsICRl
eGNlcHRpb25Db2RlKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgIm1lbW9pemVkUmVzdWx0IiwgImNhc3RlZFRo
aXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7XG4iKSBpZiAkZ2V0dGVyRXhjZXB0aW9uczsK
QEAgLTIzODUsNyArMjM4NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgqc3RhdGUpKTtcbiIpOwogICAgICAg
ICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eUZvck5vZGUifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1w
bC4iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigpKSA/ICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGlt
cGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAiIDoganNOdWxsKCkpO1xu
Iik7CiAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnRIYW5kbGVyIikgewogICAg
ICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJXaW5kb3dFdmVudEhhbmRsZXIifSA/ICJ3aW5kb3dFdmVudEhhbmRsZXJB
dHRyaWJ1dGUiCkBAIC0yMzkzLDcgKzIzOTMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICA6ICJldmVudEhhbmRsZXJBdHRyaWJ1dGUiOwogICAgICAg
ICAgICAgICAgIG15ICRldmVudE5hbWUgPSBFdmVudEhhbmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUo
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJGdldHRlcihjYXN0ZWRUaGlzLT5pbXBsKCks
ICRldmVudE5hbWUpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJGdldHRlcihjYXN0ZWRUaGlzLT53cmFwcGVkKCks
ICRldmVudE5hbWUpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNv
bnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAg
ICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CkBAIC0yNDIxLDkgKzI0
MjEsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15IEBj
YWxsV2l0aEFyZ3MgPSBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkiKTsKIAogICAgICAgICAgICAgICAgIGlmICgkc3ZnTGlzdFBy
b3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlzLT5pbXBsKCkuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVk
VGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJGltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAi
Y2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9w
ZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5
cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBl
IGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIg
LiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFt
ZSwgImltcGwiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewpAQCAtMjQ0Niw3ICsyNDQ2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
IAogICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3Mp
OwogICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHR5cGU+IG9i
aiA9ICRqc1R5cGU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIG9iai5nZXQoKSk7XG4iKTsKQEAgLTI0NzIsMTAgKzI0NzIsMTAgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMs
IEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgIkpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKSIpKTsKIAogICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1By
b3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPndyYXBwZWQoKSk7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBy
ZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGlu
dGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIs
IEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpv
aW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAg
ICAgICAgICAgICAgfQogCkBAIC0yNTE3LDcgKzI1MTcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgIGRpZSBpZiAhQ29uc3RydWN0
b3JTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSk7Ci0gICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBkb21PYmplY3QtPndyYXBwZWQoKSkpXG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgfQogCkBAIC0yNTQ5
LDkgKzI1NDksOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSkpXG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuO1xuIik7CiAgICAgICAgICAgICB9CkBAIC0yNjYxLDkgKzI2NjEsOSBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gJiYgISRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7
CiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5p
bXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRl
LCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKSlcbiIp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkp
KVxuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTI2NzYsMTMgKzI2
NzYsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAjIEZJ
WE1FOiBGaW5kIGEgd2F5IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNlIHdpdGhvdXQgaGFyZGNvZGlu
ZyB0aGUgY2xhc3MgYW5kIGF0dHJpYnV0ZSBuYW1lcyBoZXJlLgogICAgICAgICAgICAgICAgIGlm
ICgoKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSBvciAoJGludGVyZmFjZU5hbWUgZXEg
Ildvcmtlckdsb2JhbFNjb3BlIikpIGFuZCAkbmFtZSBlcSAib25lcnJvciIpIHsKICAgICAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFcnJvckhhbmRsZXIuaCJ9ID0gMTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+aW1wbCgp
LnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNFcnJvckhhbmRs
ZXIoc3RhdGUsIHZhbHVlLCBjYXN0ZWRUaGlzKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNFcnJvckhhbmRsZXIoc3RhdGUsIHZh
bHVlLCBjYXN0ZWRUaGlzKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAg
ICAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IldpbmRvd0V2ZW50SGFuZGxlciJ9ID8gInNldFdpbmRvd0V2ZW50
SGFuZGxlckF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgIDogJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9jdW1lbnRFdmVudEhhbmRsZXIifSA/
ICJzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICAgICAg
ICAgIDogInNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRzZXR0ZXIoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVk
VGhpcy0+aW1wbCgpLCAkZXZlbnROYW1lLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHNldHRlcigqc3RhdGUsICpjYXN0ZWRUaGlzLCBj
YXN0ZWRUaGlzLT53cmFwcGVkKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5
cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CkBAIC0yNzA1LDE4ICsyNzA1LDE4IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBteSAk
aW1wbEdldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSB8
fCAkbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHthdHRyaWJ1dGVUeXBlfT4g
Zm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5h
bWV9KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBSZWZQdHI8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWZvcndhcmRl
ZEltcGwpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgQXR0cmlidXRlIGlzIG5vdCBudWxsYWJsZSwgdGhlIGltcGxlbWVudGF0aW9uIGlzIGV4
cGVjdGVkIHRvIHJldHVybiBhIHJlZmVyZW5jZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWY8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVk
SW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBS
ZWY8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gZm9yd2FyZGVkSW1w
bC5nZXQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgJGF0dHJpYnV0ZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBdHRyaWJ1dGVGcm9tSW50
ZXJmYWNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSwgJHB1dEZvcndh
cmRzKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmICRzZXR0ZXJSYWlzZXNFeGNl
cHRpb247CkBAIC0yODIzLDEzICsyODIzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4i
KTsKICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09i
amVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSlcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlz
T2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbShzdGF0ZSwgaSkpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRuYW1l
ZEdldHRlckZ1bmN0aW9uKSB7CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVlZCB0byBh
ZGQgYW4gSURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdCBzb21lIHBvaW50IGlmIGFuIGludGVyZmFj
ZSBuZWVkcyBlbnVtZXJhYmxlIG5hbWVkIHByb3BlcnRpZXMuCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHtc
biIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGZvciAoYXV0byYg
cHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMo
KSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGZvciAoYXV0
byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBwcm9wZXJ0
eU5hbWUpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7
CiAgICAgICAgIH0KQEAgLTI5MzAsMTQgKzI5MzAsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KIAogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IGFuZAogICAgICAgICAgICAgICAgICAgICAhJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkg
ewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhp
cy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhz
dGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgk
aXNDdXN0b20pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4iIC4gJGZ1bmN0aW9uSW1wbGVtZW50
YXRpb25OYW1lIC4gIigqc3RhdGUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGltcGwuaXNSZWFkT25seSgpKSB7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBzZXRET01FeGNlcHRpb24oc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7XG4i
KTsKQEAgLTI5OTEsMTEgKzI5OTEsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7XG4iKTsKICAgICAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8ICRp
bnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IikgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+aW1wbCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2
aXNpdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09i
amVjdC0+d3JhcHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOwogICAg
ICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKHZpc2l0b3IpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTQ3VzdG9tTWFya0Z1bmN0aW9uIn07CiAgICAgICAgIGlmICgkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlDb3N0In0pIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1v
cnlWaXNpdGVkKHRoaXNPYmplY3QtPmltcGwoKS5tZW1vcnlDb3N0KCkpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5Vmlz
aXRlZCh0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpKTtcbiIpOwogICAgICAgICB9
CiAgICAgICAgIGlmICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgICAgIGZv
cmVhY2ggKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKQEAgLTMwMzcsNyArMzAzNyw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0Iikp
IHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZh
Y2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSk7XG4iKTsKICAgICAgICAgICAgICRlbWl0dGVkSlNDYXN0ID0gMTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5o
YXNQZW5kaW5nQWN0aXZpdHkoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmhhc1BlbmRpbmdBY3Rpdml0
eSgpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0IikpIHsKQEAgLTMw
NDUsNyArMzA0NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFjZU5hbWV9ID0ganND
YXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgICRlbWl0dGVkSlNDYXN0ID0gMTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPmlt
cGwoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5pc0Zpcmlu
Z0V2ZW50TGlzdGVuZXJzKCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkY29kZUdl
bmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewpAQCAtMzA2
NCwzNCArMzA2NCwzNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAg
ICBteSAkcm9vdFN0cmluZzsKICAgICAgICAgICAgIGlmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxl
KCRpbnRlcmZhY2UpIGVxICJJbXBsIikgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9
ICIgICAgJHtpbXBsVHlwZX0qIHJvb3QgPSAmanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCk7XG4i
OworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgJHtpbXBsVHlwZX0qIHJvb3Qg
PSAmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCk7XG4iOwogICAgICAgICAgICAgfSBlbHNp
ZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbFdlYkdMUmVuZGVy
aW5nQ29udGV4dCIpIHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFt
ZX0tPmltcGwoKS5jb250ZXh0KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAg
PSAiICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7
aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5jb250ZXh0KCkpO1xuIjsKICAgICAgICAgICAgIH0g
ZWxzaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxGcmFtZSIp
IHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEZyYW1lKiByb290ID0gV1RG
OjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuZnJhbWUoKSk7XG4iOworICAgICAg
ICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRnJhbWUqIHJvb3QgPSBXVEY6OmdldFB0cihq
cyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5mcmFtZSgpKTtcbiI7CiAgICAgICAgICAgICAg
ICAgJHJvb3RTdHJpbmcgLj0gIiAgICBpZiAoIXJvb3QpXG4iOwogICAgICAgICAgICAgICAgICRy
b290U3RyaW5nIC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7CiAgICAgICAgICAgICB9IGVs
c2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsRG9jdW1lbnQi
KSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBEb2N1bWVudCogcm9vdCA9
IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmRvY3VtZW50KCkpO1xuIjsK
KyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0gV1RG
OjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkuZG9jdW1lbnQoKSk7XG4iOwog
ICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFyb290KVxuIjsKICAgICAg
ICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iOwogICAg
ICAgICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAi
SW1wbEVsZW1lbnRSb290IikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1l
bnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20u
aCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5lbGVtZW50KCkp
O1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5lbGVtZW50KCkp
O1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgIGlmICghZWxlbWVudClc
biI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNl
O1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgIHZvaWQqIHJvb3QgPSBX
ZWJDb3JlOjpyb290KGVsZW1lbnQpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0IikgewogICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkVsZW1lbnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJKU05vZGVDdXN0b20uaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAg
PSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1w
bCgpLmNhbnZhcygpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2
b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5j
YW52YXMoKSk7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJs
ZSgkaW50ZXJmYWNlKSBlcSAiSW1wbE93bmVyTm9kZVJvb3QiKSB7CiAgICAgICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siRWxlbWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkpTTm9kZUN1c3RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5n
ICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT5p
bXBsKCkub3duZXJOb2RlKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAi
ICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBl
ZCgpLm93bmVyTm9kZSgpKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoJmpzJHtp
bnRlcmZhY2VOYW1lfS0+aW1wbCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcg
ID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdCgmanMke2ludGVyZmFjZU5hbWV9LT53
cmFwcGVkKCkpO1xuIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICRyb290U3RyaW5nKTsKQEAgLTMxMTEsNyArMzExMSw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2Fz
dDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwo
KSwganMke2ludGVyZmFjZU5hbWV9KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgp
LCBqcyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuXG4iKTsKICAgICB9CiAKQEAgLTMyMDYsNyArMzIwNiw3IEBAIEVORAogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiRpbXBsVHlwZSogJHtjbGFzc05hbWV9Ojp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRvKiB3cmFwcGVyID0gIiAuIEdl
dENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIih2YWx1ZSkpXG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1w
bCgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gbnVsbHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwog
ICAgIH0KQEAgLTQyNDksNyArNDI0OSw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAg
ICAgIGlmICgkc2VsZklzVGVhck9mZlR5cGUpIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiU1ZHTWF0cml4VGVhck9mZi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBCbGluazogRG9uJ3QgY3JlYXRlIGEgbmV3IG9uZSBldmVyeXRpbWUgd2Ug
YWNjZXNzIHRoZSBtYXRyaXggcHJvcGVydHkuIFRoaXMgbWVhbnMsIGUuZywgPT09IHdvbid0IHdv
cmsuCi0gICAgICAgICAgICAgICAgJHZhbHVlID0gIlNWR01hdHJpeFRlYXJPZmY6OmNyZWF0ZShj
YXN0ZWRUaGlzLT5pbXBsKCksICR2YWx1ZSkiOworICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJT
VkdNYXRyaXhUZWFyT2ZmOjpjcmVhdGUoY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCAkdmFsdWUpIjsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IlNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAg
ICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1Byb3Bl
cnR5VGVhck9mZjwkaW50ZXJmYWNlTmFtZSwgLzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKaW5kZXggOTllMTIyZDNkNzU0MWEyZjU2YTAxOWUwMGQ5OTRhYmNlY2Q0MzJhZC4uYjBk
MTJjMzg5M2FmZTI3YjQ0YjcyNTg4MDIyMWU3ODM5Y2ZhNzI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAKQEAgLTE0OSw5ICsxNDksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsbwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmpl
Y3QqPihzbG90QmFzZSk7Ci0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRo
aXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5leGNpdGluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURP
TU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiwgRW5jCiAgICAg
SlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFj
dGl2ZURPTU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWRv
bU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBk
b21PYmplY3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTE3OSw5ICsxNzksOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9i
amVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7Ci0gICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3Rl
ZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgTm9kZSogbmV4dENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUt
PmFyZ3VtZW50KDApKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2Uo
RQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJwb3N0TWVzc2FnZSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0aXZl
RE9NT2JqZWN0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0
cmluZyBtZXNzYWdlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0T3du
ZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkCiB7CiAg
ICAgYXV0byoganNUZXN0QWN0aXZlRE9NT2JqZWN0ID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdEFjdGl2ZURPTU9iamVjdC0+aW1wbCgpLCBqc1Rlc3RBY3RpdmVET01PYmpl
Y3QpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0QWN0aXZlRE9NT2JqZWN0LT53
cmFwcGVkKCksIGpzVGVzdEFjdGl2ZURPTU9iamVjdCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCkBAIC0yNjksNyArMjY5LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE8K
IFRlc3RBY3RpdmVET01PYmplY3QqIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBw
ZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDA5ZDZhYWI4MjRl
MTFkN2NlNGM5ZDcxOWQ3ZmY5YjljZGRiZDkyZTAuLmNhYWRiYzFmMGI1N2RkNTEwZWJiYWUwNmM4
YTBkMzExZTk1MDU0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMTM0LDcgKzEzNCw3
IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDCiB7CiAgICAgYXV0byoganNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAg
ICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC0+aW1wbCgpLCBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC0+d3JhcHBlZCgpLCBqc1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCkBAIC0xODQsNyArMTg0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tQ28K
IFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4odmFsdWUpKQotICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuY3BwCmluZGV4IDM3YzFlNTgxMmY0MWE1NTI1NTQ5ZjM0MDMzMWU1ZjhlNzY5YjUwNjku
Ljk5NGYzNjZlZjQ0YzFlODQwOTk2OWFhODAzMGE0OTgyNDRiOTZlMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlv
bkFub3RoZXJGdW5jCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAi
YW5vdGhlckZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBTdHJpbmcgc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvCiB7CiAgICAgYXV0byoganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPSBqc0Nhc3Q8
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0g
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21OYW1lZEdldHRlci0+aW1wbCgp
LCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlcik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c1Rlc3RDdXN0b21OYW1lZEdldHRlci0+d3JhcHBlZCgpLCBqc1Rlc3RDdXN0b21OYW1lZEdldHRl
cik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNTQsNyArMjU0LDcg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tTmEKIFRlc3RDdXN0b21OYW1lZEdldHRlciogSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAxYTlmZWE3YzExN2M3MDRmYTNiYzY2
M2I0ZjM1MGMyM2E4Njk4MzhkLi44ZGY5MmQ5ZmQxODczNTNjMjdmZjYwMzlkYWE4Y2I4NDIwOWQw
MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNjcsNyArMTY3
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0
cjEiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RF
dmVudENvbnN0cnVjdG9yIiwgImF0dHIxIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHIx
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE4NCw3ICsx
ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjIoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJh
dHRyMiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0
cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjE0LDcg
KzIxNCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNUZXN0RXZl
bnRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci0+aW1wbCgpLCBqc1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICB1bmNh
Y2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50Q29uc3RydWN0b3ItPndyYXBwZWQoKSwganNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CkBAIC0yNjQsNyArMjY0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRDb24KIFRlc3RFdmVudENv
bnN0cnVjdG9yKiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RF
dmVudENvbnN0cnVjdG9yKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwo
KTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDk3OGQ5MmE2NDVkMmM0ODIx
MWEyMDY4ZjhiZmI5ZjNlMTVjYmJiNTcuLjRlZGVhYzg2OTNkNmEyN2UyZTI3YzA5ZTlmMjU1Njc2
OTM5OTMxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTQ1LDEwICsxNDUsMTAg
QEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFs
SW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKG9wdGlvbmFsSW5kZXgg
JiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpKSB7
CisgICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gb3B0
aW9uYWxJbmRleC52YWx1ZSgpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gRG9udERl
bGV0ZSB8IFJlYWRPbmx5OwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJp
YnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0
LT5pbXBsKCkuaXRlbShpbmRleCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhp
c09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBpZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEV2ZW50VGFyZ2V0LCBCYXNl
PihzdGF0ZSwgSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkKQEAgLTE3MSw5ICsxNzEsOSBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogcwogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlcyA9IERvbnREZWxldGUgfCBSZWFkT25seTsKLSAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSwgdGhpc09iamVjdC0+aW1wbCgpLml0ZW0oaW5kZXgpKSk7CisgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRlcywgdG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgc3RhdGUsIGluZGV4LCBzbG90KTsKQEAgLTE5MSwxMCAr
MTkxLDEwIEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MCwgY291bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKQor
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxl
bmd0aCgpOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbShzdGF0ZSwgaSkpOwogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3Qt
PmltcGwoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCisgICAgICAgIGZvciAoYXV0byYgcHJv
cGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMo
KSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmco
c3RhdGUsIHByb3BlcnR5TmFtZSkpOwogICAgIH0KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKQEAgLTIxMiw3ICsy
MTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogcwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2
ZW50VGFyZ2V0IiwgIml0ZW0iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gdG9VSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0yMjksNyArMjI5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uQWRk
RXZlbnRMaXN0ZW5lcigKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJhZGRF
dmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFko
IWxpc3RlbmVyLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVu
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRUYXJnZXQiLCAicmVtb3ZlRXZlbnRMaXN0ZW5l
ciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZl
bnRUYXJnZXQ6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlz
dGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5p
c09iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTI1OSw3ICsyNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50KEV4ZQogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgImRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwpAQCAtMjc3LDEzICsyNzcsMTMgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5pbXBsKCkudmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS52aXNp
dEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXRP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiBqc1Rl
c3RFdmVudFRhcmdldCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKLSAgICBpZiAoanNUZXN0RXZlbnRUYXJnZXQtPmltcGwoKS5pc0ZpcmluZ0V2
ZW50TGlzdGVuZXJzKCkpCisgICAgaWYgKGpzVGVzdEV2ZW50VGFyZ2V0LT53cmFwcGVkKCkuaXNG
aXJpbmdFdmVudExpc3RlbmVycygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURf
UEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkzLDcgKzI5Myw3IEBAIHZv
aWQgSlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqIGNvCiB7CiAgICAgYXV0byoganNUZXN0RXZlbnRUYXJnZXQgPSBq
c0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0g
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLCBqc1Rl
c3RFdmVudFRhcmdldCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVudFRh
cmdldC0+d3JhcHBlZCgpLCBqc1Rlc3RFdmVudFRhcmdldCk7CiB9CiAKICNpZiBFTkFCTEUoQklO
RElOR19JTlRFR1JJVFkpCkBAIC0zNDMsNyArMzQzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRU
YXIKIFRlc3RFdmVudFRhcmdldCogSlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEV2ZW50VGFyZ2V0Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwo
KTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMzVkYTBlNzU5ZTQ4MzliMTIzZjll
NTIzY2RkMjYxNTlmMTkyYTFlNS4uY2FkNmU5OWRlNGM1MDEzMDg3OWUxMzUwMDI2MmRiMDkwOWFh
MDAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RF
eGNlcHRpb24qPihzbG90QmFzZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBK
U1Rlc3RFeGNlcHRpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnQKIHsKICAgICBhdXRvKiBqc1Rlc3RFeGNlcHRpb24gPSBqc0Nhc3Q8
SlNUZXN0RXhjZXB0aW9uKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXhjZXB0aW9uLT5pbXBsKCksIGpzVGVzdEV4Y2VwdGlv
bik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFeGNlcHRpb24tPndyYXBwZWQo
KSwganNUZXN0RXhjZXB0aW9uKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
QEAgLTIxOSw3ICsyMTksNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFeGNlcHRpbwogVGVzdEV4Y2VwdGlv
biogSlNUZXN0RXhjZXB0aW9uOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAg
IGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPih2YWx1
ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDU3M2EwOTBhY2Y3YTg3MGUwYmI3MTli
ZmY3ZjE1YzE5Y2UxZTYzNTguLmM3NDA2YWMxOTU0ZTkwOTJiYTU1ZjMyNGFmMWJjZTFkNWNkY2Nk
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTEyMyw3
ICsxMjMsNyBAQCBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogYm9vbCBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
YXV0byoganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIFRlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlKiByb290ID0gJmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKTsKKyAg
ICBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogcm9vdCA9ICZqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJv
b3QpOwogfQogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLAogewog
ICAgIGF1dG8qIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBqc0Nhc3Q8SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3Js
ZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwgJmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKSwganNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLT53cmFwcGVkKCksIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUp
OwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMTgxLDcgKzE4MSw3IEBA
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdEdlbmVyYXRlCiBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZSo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGQyZDdiODAxMzQ4ZmQ2Y2M0YzYxYTkxOWU3YjEyMDMw
YzY2YjYxMjkuLmZkOGNlYTM1ZGMyZWZmZjBkNTRhZWUzMTM2NjE0MjJlMzVjMGJjMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
U3RyMSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00ODEsNyArNDgxLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRz
U3RyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01MTIs
NyArNTEyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBs
ZW1lbnRzTm9kZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5pbXBsZW1lbnRzTm9kZSgpKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNTU1LDcgKzU1NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJzdXBwbGVtZW50YWxTdHIxIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBUZXN0U3VwcGxl
bWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtNTc0LDcgKzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50
YWxTdHIyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50
YWxTdHIyKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtNjA1LDcgKzYwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2Ui
LCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFsOjpz
dXBwbGVtZW50YWxOb2RlKCZpbXBsKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTY2Niw3ICs2NjYsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxl
bWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJp
bXBsZW1lbnRzU3RyMiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZh
bHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNl
IiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC03MzcsNyArNzM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVt
ZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBw
bGVtZW50YWxTdHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFs
dWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VT
dXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAog
ICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIs
ICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC03OTUsNyArNzk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEUKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5pbXBsZW1lbnRzTWV0aG9kMSgp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC04MTAs
NyArODEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKEUKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg2MSw3
ICs4NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMQogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEo
JmltcGwpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBA
IC04NzYsNyArODc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtOTIyLDcgKzkyMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvCiBib29sIEpTVGVzdElu
dGVyZmFjZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1
dG8qIGpzVGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7Ci0gICAgaWYgKGpzVGVzdEludGVyZmFjZS0+aW1wbCgpLmhhc1BlbmRp
bmdBY3Rpdml0eSgpKQorICAgIGlmIChqc1Rlc3RJbnRlcmZhY2UtPndyYXBwZWQoKS5oYXNQZW5k
aW5nQWN0aXZpdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZp
c2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEpTVGVz
dEludGVyZmFjZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udAogewogICAgIGF1dG8qIGpzVGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQg
PSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc1Rlc3RJbnRlcmZhY2UtPmltcGwoKSwganNUZXN0SW50ZXJmYWNlKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEludGVyZmFjZS0+d3JhcHBlZCgpLCBq
c1Rlc3RJbnRlcmZhY2UpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZh
Y2UqIGltcGwpCkBAIC05NjEsNyArOTYxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50ZXJmYWMKIFRl
c3RJbnRlcmZhY2UqIEpTVGVzdEludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAxZjQwY2Nk
ZTVkMmFjY2RhNTM1YTE4MGE2ZmY1ZDEyM2FlMmZmNzY1Li5kMDYxMWU1ZWVjYTU3NmU4NzkyN2M5
NjRhMjIwZTk3YTVhZTY3MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC0xNTYsNyArMTU2
LDcgQEAgdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKIHsKICAgICBhdXRvKiBqc1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyID0ganNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLT5pbXBsKCksIGpzVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci0+d3JhcHBlZCgpLCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKIH0K
IAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3RNZWRpYVF1ZQogVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAg
ICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDYxZGUzOTI0YWI5YzI0
NzE5MTBiYmEzZGI0MjQzMDgzM2NjMDU3ZTAuLmM4YTYxNjQ2YjgyZGQ5MWE1YzYzNzkyNmFkNTQz
ZjlhMWIyODAzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5hbWVkQ29u
c3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogYm9vbCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
YXV0byoganNUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGlmIChqc1Rlc3ROYW1lZENvbnN0
cnVjdG9yLT5pbXBsKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAgaWYgKGpzVGVzdE5hbWVk
Q29uc3RydWN0b3ItPndyYXBwZWQoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaQogewogICAgIGF1dG8q
IGpzVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPmltcGwoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53cmFw
cGVkKCksIGpzVGVzdE5hbWVkQ29uc3RydWN0b3IpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdf
SU5URUdSSVRZKQpAQCAtMjIzLDcgKzIyMyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkQ29uCiBU
ZXN0TmFtZWRDb25zdHJ1Y3RvciogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggNzljZDUxYjQ5N2JmODk3YzAxOTk3
ZDA1YjJlMmY2NDkyZDEwZDdlZi4uZDBlYWEzMTc4OGY3MDEyOTZkZjAxZjBkYzAyNTA2MzA5ZDc0
ZDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGlt
cGwubmFtZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0x
NTIsNyArMTUyLDcgQEAgdm9pZCBzZXRKU1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGgKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3MCw3ICsxNzAs
NyBAQCB2b2lkIEpTVGVzdE5vZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5vZGUq
PihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB0
aGlzT2JqZWN0LT5pbXBsKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRo
aXNPYmplY3QtPndyYXBwZWQoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmgKaW5kZXggOGZkMGQzZDIyY2Q0NWQ3OWNjYTdjY2FhM2FkYmExMzdkODA2NzkwNS4u
MGM3MmEzMWJkYjZiY2JmOWIxN2E3ZDZiYzExOWU1YjM0ODQ2MDAzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCkBAIC00
OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKLSAgICBUZXN0Tm9kZSYg
aW1wbCgpIGNvbnN0CisgICAgVGVzdE5vZGUmIHdyYXBwZWQoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3ROb2RlJj4oQmFzZTo6aW1wbCgpKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRlc3ROb2RlJj4oQmFzZTo6d3JhcHBlZCgpKTsKICAgICB9CiBw
cm90ZWN0ZWQ6CiAgICAgSlNUZXN0Tm9kZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3ROb2RlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cAppbmRleCA1YzBhNTdhN2MxZTM2N2UyZTAxMWZiZmU2NTljMjk5YjhmMWI5OTlkLi4xOTJhZTA4
YWJjYjQ0NGNlNWYzMGMyNjYxOTQyN2Q5MzQ4NzQxYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRl
dGVybWluaXN0aWMuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoRXhlY1N0YXRlKiBz
dGEKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigp
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdO
YW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0Nh
cHR1cmluZygpKSB7Ci0gICAgICAgIGludCBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmlt
cGwoKS5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKCk7CisgICAgICAgIGludCBtZW1vaXpl
ZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlB
dHRyKCk7CiAgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxpbnQ+
PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRy
KEV4ZWNTdGF0ZSogc3RhCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm5vbmRldGVybWluaXN0
aWNSZWFkb25seUF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtMTg5LDcgKzE4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgSW5wdXRD
dXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRl
dGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsK
LSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRl
dGVybWluaXN0aWNXcml0ZWFibGVBdHRyKCk7CisgICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3Vs
dCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cigp
OwogICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4o
YmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMDQsNyArMjA0
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3QKICAgICAgICAgfQogICAgIH0KICNlbmRpZgot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBpbXBsLm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlv
bkF0dHIoRXhlY1N0YXRlKiBzdAogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmpl
Y3QtPmlucHV0Q3Vyc29yKCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gYmluZGluZ05hbWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0
aWNFeGNlcHRpb25BdHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJl
c3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigp
OworICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCku
bm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElu
cHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmluZz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygp
LCBtZW1vaXplZFJlc3VsdCwgMCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMjQxLDcgKzI0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUq
IHN0CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1p
bmlzdGljRXhjZXB0aW9uQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0yNjQsNyArMjY0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICBJ
bnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0
dXJpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5p
bXBsKCkubm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoZWMpOworICAgICAgICBT
dHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5p
c3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoZWMpOwogICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8
TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1l
bW9pemVkUmVzdWx0LCBlYyk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBlYyk7CkBAIC0yODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAg
ICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMzA0LDcgKzMwNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0
dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhCiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2Jh
bE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJt
aW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5n
IG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNTZXR0
ZXJFeGNlcHRpb25BdHRyKCk7CisgICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cigpOwog
ICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmlu
ZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMTksNyArMzE5LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNT
ZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCB2
b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBKUwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJs
ZUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKUwogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMi
LCAibm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUu
dG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0cihFeGVjU3RhdGUqIHN0YQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2Vw
dGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YQogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0
aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00
MjcsNyArNDI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb25kZXRl
cm1pbmlzdGljUHJvdG90eXBlRnVuY3Rpb25Ob25kZXRlcm1pbmkKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE5vbmRl
dGVybWluaXN0aWM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0OwogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIElucHV0Q3Vyc29yJiBjdXJzb3Ig
PSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5pbnB1dEN1cnNvcigpOwpAQCAtNDYyLDcg
KzQ2Miw3IEBAIHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY093bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyA9IGpzQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYy0+aW1wbCgpLCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljKTsKKyAgICB1bmNh
Y2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5vbmRldGVybWluaXN0aWMtPndyYXBwZWQoKSwganNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CkBAIC01MTIsNyArNTEyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Tm9uZGV0ZXIKIFRlc3ROb25kZXRl
cm1pbmlzdGljKiBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
b25kZXRlcm1pbmlzdGljKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwo
KTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZmM3YWFkM2EyNDZkMTE3MThiODI0ZDU0OGJhMzUxN2Yy
ZGU4MDBhOC4uZDdkM2IwNGY4YzQ1NDQ3ODJiM2FhNzU1MmE2Mzk2MzE5NjcxY2I1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKQEAgLTczNiw3ICs3MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25s
eUxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlMb25nQXR0ciIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJlYWRP
bmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtNzUzLDcgKzc1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5n
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVh
ZE9ubHlTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5U3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgaW1wbC5yZWFkT25seVN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtNzcwLDcgKzc3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlYWRPbmx5VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnJlYWRP
bmx5VGVzdE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTgxMiw5ICs4MTIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBpZiAoIWNh
c3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKQorICAgIGlmICghY2FzdGVkVGhpcy0+d3JhcHBlZCgp
LmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgU2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCktPnNl
dHRpbmdzKCk7CisgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
LmZyYW1lKCktPnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncy50ZXN0U2V0dGluZ0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC04MzIsNyArODMyLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0
ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04NDksNyArODQ5LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5
dGVBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTg2
Niw3ICs4NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0
ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJvY3RldEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtODgzLDcgKzg4Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnNo
b3J0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05
MDAsNyArOTAwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVk
U2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRTaG9ydEF0
dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTE3LDcg
KzkxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC05MzQsNyArOTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9u
Z0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTk1MSw3ICs5NTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25n
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWdu
ZWRMb25nTG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtOTY4LDcgKzk2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
c3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmlu
Z0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTg1
LDcgKzk4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0
dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAidGVzdE9iakF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwudGVzdE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTEwMDIsNyArMTAwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnhtbE9iakF0dHIoKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwMTksNyArMTAxOSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xl
YW4oaW1wbC5pc0NyZWF0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVm
bGVjdGVkc3RyaW5nYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYQogICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3Rl
ZGludGVncmFsYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xMDcwLDcgKzEwNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKHN0ZDo6bWF4KDAsIGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA4Nyw3ICsxMDg3LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0
ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZFVSTEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTIxLDcgKzExMjEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90QmFzZQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3Ry
aW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJbnRlZ3JhbEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTE1NSw3ICsxMTU1
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHMKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0
SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRy
QXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExNzIs
NyArMTE3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Q3VzdG9tVVJMQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRl
bnRVUkxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTExODksNyArMTE4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
dHlwZWRBcnJheUF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwudHlwZWRBcnJheUF0dHIoKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEyMDcsNyArMTIwNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsK
ICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0xMjI1LDcgKzEyMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjYxLDcgKzEyNjEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEyNzgsNyArMTI3OCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSgp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTMwNiw3ICsx
MzA2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWwKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib25mb28iKTsKICAgICB9CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT5pbXBsKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXZlbnRIYW5kbGVyQXR0cmlidXRlKGNhc3RlZFRo
aXMtPndyYXBwZWQoKSwgZXZlbnROYW1lcygpLmZvb0V2ZW50KSk7CiB9CiAKIApAQCAtMTMyMSw3
ICsxMzIxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG8KICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTEzMzgsNyArMTMzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC53aXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSgqc3RhdGUpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBKUwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRD
b250ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEz
NzYsNyArMTM3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjCiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMoKnN0YXRlLCBlYykpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVj
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzk4LDcgKzEzOTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YQogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBlYykpKTsKICAgICBzZXRET01FeGNlcHRpb24o
c3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDE5
LDcgKzE0MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdAogICAgIGF1dG8qIHNjcmlwdENv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDQwLDcgKzE0NDAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKAogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCwgZWMpKSk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTQ2MSw3ICsxNDYxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWIKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
c3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGlt
cGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGUoKnN0YXRlLCBzY3JpcHRDb250ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTE0NzgsNyArMTQ3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTE0OTYsNyArMTQ5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBF
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwuY29uZGl0aW9uYWxBdHRyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xNTE1LDcgKzE1MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNv
bmRpdGlvbmFsQXR0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtMTUzNCw3ICsxNTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRp
b25hbEF0dHIzKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTE1OTAsNyArMTU5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0
ZTEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgfQogICAgIGlm
IChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLmdl
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5jYWNoZWRBdHRyaWJ1
dGUxKCkuaGFzTm9WYWx1ZSgpID8ganNOdWxsKCkgOiBpbXBsLmNhY2hlZEF0dHJpYnV0ZTEoKS5q
c1ZhbHVlKCkpOwogICAgIGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMS5zZXQoc3RhdGUt
PnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTYxMCw3ICsxNjEwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAg
ICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0
dHJpYnV0ZTIuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFs
dWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBsLmNh
Y2hlZEF0dHJpYnV0ZTIoKS5oYXNOb1ZhbHVlKCkgPyBqc051bGwoKSA6IGltcGwuY2FjaGVkQXR0
cmlidXRlMigpLmpzVmFsdWUoKSk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUy
LnNldChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjI4LDcgKzE2MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImFueUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gKGltcGwuYW55QXR0
cmlidXRlKCkuaGFzTm9WYWx1ZSgpID8ganNOdWxsKCkgOiBpbXBsLmFueUF0dHJpYnV0ZSgpLmpz
VmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTY0
MCw3ICsxNjQwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KICAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2UpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0
YXRlLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSA/IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmNvbnRlbnREb2N1bWVudCgpKSkgOiBqc051
bGwoKSk7CiB9CiAKQEAgLTE2NTYsNyArMTY1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHU3RhdGljUHJvcGVydHlUZWFyT2Zm
PFRlc3RPYmosIFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50KCksICZU
ZXN0T2JqOjp1cGRhdGVNdXRhYmxlUG9pbnQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMTY3Myw3ICsxNjczLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludCIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2Zm
PFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnQoKSkpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmJsdWViZXJyeSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xNzA3LDcgKzE3MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RG
bG9hdChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInN0cmljdEZsb2F0Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuc3RyaWN0RmxvYXQoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTcyNCw3ICsxNzI0
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRGVzY3JpcHRpb24oRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJkZXNjcmlwdGlvbiIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJk
ZXNjcmlwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmRlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3NDEsNyArMTc0MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJpZCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpZCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmlkKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3NTgsNyArMTc1OCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaGFzaCIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJoYXNoIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLmhhc2goKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtMTc3NSw3ICsxNzc1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLnJlcGxhY2VhYmxlQXR0cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTE3OTMsNyArMTc5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlRG91YmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im51bGxhYmxlRG91YmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFs
c2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4MTMsNyArMTgx
Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOwog
ICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVMb25nQXR0cmlidXRlKGlz
TnVsbCkpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwpAQCAtMTgzMyw3ICsxODMzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG8K
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bnVsbGFibGVCb29sZWFuQXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFs
c2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFu
KGltcGwubnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlmIChpc051bGwp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTg1Myw3ICsx
ODUzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5udWxs
YWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4NzMsNyArMTg3Myw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAg
ICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4OTQsNyArMTg5NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlCiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgaXNOdWxs
ID0gZmFsc2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5udWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpKTsKICAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICBpZiAoaXNOdWxsKQpAQCAtMTkxNCw3ICsxOTE0LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGUiKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmli
dXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTMxLDcgKzE5MzEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBl
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLmF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE5NDgsNyArMTk0OCw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNB
dHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTE5NjUsNyArMTk2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJk
c051bGxhYmxlQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIwMTUsNyArMjAxNSw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuY29kZWRKU1ZhbHVlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2b2lkIHNl
dEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpbnQ4X3QgbmF0aXZlVmFsdWUgPSB0b0ludDgoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1Nyw3ICsyMDU3LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3Qs
IEVuY29kZWRKU1ZhbHUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQ4KHN0YXRlLCB2
YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNzcsNyArMjA3Nyw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmNvZGVkSlNWYWx1CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9JbnQxNihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMDk3LDcgKzIwOTcsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBFbmNvZAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1aW50MTZfdCBuYXRpdmVWYWx1ZSA9IHRvVUlu
dDE2KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMTcsNyArMjExNyw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzNyw3ICsyMTM3LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmplY3QsIEVuY29kZWRKU1YKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRv
SW50NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1Nyw3ICsyMTU3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIG5hdGl2ZVZhbHVlID0gdG9VSW50NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjE3Nyw3ICsyMTc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5n
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjE5Nyw3ICsyMTk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmEKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0
dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
VGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAg
LTIyMTcsNyArMjIxNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiog
bmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMzcsNyAr
MjIzNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0CiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3Ry
aW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjk3LDcgKzIy
OTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1
bnNpZ25lZCBuYXRpdmVWYWx1ZSA9IHRvVUludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIzMTcsNyArMjMxNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Qm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZEJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yMzM3LDcgKzIzMzcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxB
dHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIzNTcsNyArMjM1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
U3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hl
Y2soc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM3Nyw3ICsyMzc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUg
PSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNDM3LDcg
KzI0MzcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSgogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8RmxvYXQz
MkFycmF5PiBuYXRpdmVWYWx1ZSA9IHRvRmxvYXQzMkFycmF5KHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ1Nyw3
ICsyNDU3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50
IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yNDc3LDcgKzI0NzcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0yNDk5LDcgKzI0OTksNyBAQCB2b2lkIHNldEpTVGVz
dE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxOSw3ICsyNTE5LDcg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmco
c3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCkBAIC0yNTQxLDcgKzI1NDEsNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmljdFR5cGVD
aGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iagogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RU
eXBlQ2hlY2tpbmdBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
ICYmICF2YWx1ZS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpKSB7CiAgICAgICAgIHRocm93
QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNoZWNraW5n
QXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU3Nyw3ICsyNTc3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGgKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib25mb28iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2Fz
dGVkVGhpcy0+aW1wbCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKKyAgICBzZXRF
dmVudEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKIH0KIAogCkBAIC0yNTkzLDcg
KzI1OTMsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdAogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50
IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yNjEzLDcgKzI2MTMsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZQogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhB
bmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2
YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MzMsNyArMjYzMyw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5h
dGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNjU2LDcgKzI2
NTYsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
VGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI2NzYsNyArMjY3Niw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0
b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CkBAIC0yNjk5LDcgKzI2OTksNyBAQCB2b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RP
YmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNzIy
LDcgKzI3MjIsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YQogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlKEV4ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjc2OCw3ICsyNzY4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2IK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9
IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc4OSw3ICsyNzg5LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMy
KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MTEsNyArMjgxMSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9J
bnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yODMzLDcgKzI4MzMs
NyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9
IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg5OSw3ICsy
ODk5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1YKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIG5hdGl2ZVZhbHVlID0geyBzdGF0ZS0+dm0oKSwgdmFsdWUgfTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkxOSw3
ICsyOTE5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1YKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVh
ck9mZjxTVkdQb2ludD4qIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjkzOSw3ICsyOTM5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2lu
dChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEoKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxl
UG9pbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTU5LDcgKzI5NTksNyBAQCB2b2lkIHNldEpTVGVz
dE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1ZhbAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk3OSw3ICsyOTc5LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5j
b2RlZEpTVmEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgZmxvYXQgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Zsb2F0KHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjk5OSw3ICsyOTk5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZh
bHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDM2
LDcgKzMwMzYsNyBAQCB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0
dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTMwNTYsNyArMzA1Niw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVT
dHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxh
YmxlU3RyaW5nVmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0zMDc2LDcgKzMwNzYsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0
dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50
b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5OCw3ICszMDk4LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogYmFzZU9iamVjdCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBSZWY8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCkucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKTsKKyAgICBSZWY8VGVzdE5vZGU+IGZvcndhcmRl
ZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKTsKICAg
ICBhdXRvJiBpbXBsID0gZm9yd2FyZGVkSW1wbC5nZXQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFs
dWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTMxMTksNyArMzExOSw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCkucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOworICAgIFJlZlB0cjxU
ZXN0Tm9kZT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wdXRGb3J3YXJk
c051bGxhYmxlQXR0cmlidXRlKCk7CiAgICAgaWYgKCFmb3J3YXJkZWRJbXBsKQogICAgICAgICBy
ZXR1cm47CiAgICAgYXV0byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsOwpAQCAtMzE0Miw3ICszMTQy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAidm9pZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLnZv
aWRNZXRob2QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQpAQCAtMzE1NCw3ICszMTU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAidm9pZE1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdBcmcgPSB0b0ludDMyKHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzE3Nyw3ICszMTc3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Ynl0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZU1ldGhvZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMTg5LDcgKzMxODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdz
KEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlTWV0aG9kV2l0aEFyZ3Mi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQ4X3QgYnl0ZUFy
ZyA9IHRvSW50OChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsK
QEAgLTMyMTIsNyArMzIxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIHN0CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldE1ldGhvZCgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMjI0LDcgKzMyMjQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvY3RldE1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgdWludDhfdCBvY3RldEFyZyA9IHRvVUludDgoc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMjQ3LDcgKzMyNDcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChF
eGVjU3RhdGUqIHN0YQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5sb25nTWV0aG9kKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTMyNTksNyArMzI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9JbnQzMihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMyODIsNyArMzI4
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PYmpNZXRob2QoRXhlY1N0YXRlKiBzdGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm9iak1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLm9iak1ldGhvZCgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMzI5NCw3ICszMjk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGEKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIoc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMzE3LDcgKzMz
MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBWZWN0b3I8UmVmUHRyPFNjcmlwdFByb2ZpbGU+PiBzZXF1ZW5jZUFyZyA9
ICh0b1JlZlB0ck5hdGl2ZUFycmF5PFNjcmlwdFByb2ZpbGUsIEpTU2NyaXB0UHJvZmlsZT4oc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgJkpTU2NyaXB0UHJvZmlsZTo6dG9XcmFwcGVkKSk7CkBA
IC0zMzM0LDcgKzMzMzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoRQogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9JbnQzMihzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMzNTEsNyArMzM1MSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRW51bUFyZyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhFbnVtQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgLy8gS2VlcCBwb2ludGVyIHRvIHRoZSBKU1N0cmluZyBpbiBhIGxvY2FsIHNvIHdlIGRv
bid0IG5lZWQgdG8gcmVmIHRoZSBTdHJpbmcuCkBAIC0zMzcyLDcgKzMzNzIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
T3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAg
ICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zNDAxLDcgKzM0MDEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJncwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0zNDI0LDcgKzM0MjQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFs
aXplZFZhbHVlKEV4ZWNTdGF0ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzZXJpYWxp
emVkVmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkQXJnID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0zNDQx
LDcgKzM0NDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdChFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm9wdGlvbnNPYmplY3QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBEaWN0aW9uYXJ5IG9vID0geyBzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApIH07
CkBAIC0zNDYxLDcgKzM0NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjUwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGltcGwubWV0aG9k
V2l0aEV4Y2VwdGlvbihlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC0z
NDk1LDcgKzM0OTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInByaXZhdGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJp
bmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC0zNTEyLDcgKzM1MTIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0
ZW5lcihFeGVjU3RhdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhZGRFdmVudExpc3Rl
bmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIg
PSBzdGF0ZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVj
dCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTM1MjcsNyArMzUyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzU0Miw3ICszNTQyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRTdGF0ZVZvaWQoRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dFN0YXRlVm9pZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLndpdGhT
Y3JpcHRTdGF0ZVZvaWQoKnN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQpAQCAtMzU1NCw3ICszNTU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaihFeGVj
U3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlw
dFN0YXRlT2JqKCpzdGF0ZSkpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTM1NjgsNyArMzU2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW1wbC53
aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKCpzdGF0ZSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbihzdGF0ZSwgZWMpOwpAQCAtMzU4Miw3ICszNTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4
Y2VwdGkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqRXhj
ZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9u
KCpzdGF0ZSwgZWMpKSk7CiAKQEAgLTM1OTksNyArMzU5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIHNjcmlwdENv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2
MTQsNyArMzYxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzYyOSw3ICszNjI5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAg
ICBpZiAoIXNjcmlwdENvbnRleHQpCkBAIC0zNjQ5LDcgKzM2NDksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjY2LDcgKzM2NjYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6
Y3JlYXRlU2NyaXB0QXJndW1lbnRzKHN0YXRlLCAwKSk7CiAgICAgaW1wbC53aXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrKHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjc5LDcgKzM2NzksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRo
b2RXaXRoT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBz
aXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0Nv
dW50IDw9IDApIHsKQEAgLTM3MDEsNyArMzcwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmRE
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERl
ZmF1bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBh
cmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0g
MCkgewpAQCAtMzcyMyw3ICszNzIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9u
YWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9u
T3B0ID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9u
KTsKQEAgLTM3NTAsNyArMzc1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlv
bmFsQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBu
b25PcHQgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pOwpAQCAtMzc4NSw3ICszNzg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZygKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5h
cmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zODA3LDcgKzM4
MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM4MjksNyArMzgyOSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmco
c3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0zODQ0LDcgKzM4NDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIHN0ciA9IHN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0zODU5LDcgKzM4NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4
ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoIXN0YXRlLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQpAQCAtMzg3Niw3ICszODc2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxs
YmFja0FyZ0EKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxi
YWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBpbnQgbm9uQ2FsbGJhY2sgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzg5Niw3ICszODk2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVm
UHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCku
aXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKS5pc09iamVjdCgpKQpAQCAtMzkxNCw3ICszOTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW8KICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBp
ZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC0zOTMxLDcgKzM5MzEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQz
MihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM5NTEs
NyArMzk1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFja0Z1bmN0aW9u
PiBjYWxsYmFjazsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzRnVuY3Rp
b24oKSkKQEAgLTM5OTMsNyArMzk5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00MDA4LDcgKzQwMDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2Qy
KEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDIi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5jb25kaXRpb25hbE1ldGhv
ZDIoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAt
NDAyMyw3ICs0MDIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QzKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQwMzcsNyArNDAzNyw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2Fk
ZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0
T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpA
QCAtNDA1Nyw3ICs0MDU3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMigKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MDg0LDcgKzQwODQsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QzKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIHN0
ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
QEAgLTQxMDEsNyArNDEwMSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC00MTE4LDcgKzQxMTgsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2Q1KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
aWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTQxMzUsNyArNDEzNSw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92
ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbGlzdEFyZyA9IHRvRE9NU3RyaW5nTGlzdChzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQxNTIsNyArNDE1Miw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDcoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8U3RyaW5n
PiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKQEAgLTQxNjksNyArNDE2OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgoCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6
OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDE4Niw3ICs0MTg2LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kOSgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDIwMyw3ICs0MjAzLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kMTAKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4g
YXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKQEAgLTQyMjAsNyArNDIyMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBTdHJpbmcgc3RyQXJnID0gc3RhdGUtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtNDIzNyw3ICs0MjM3LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBWZWN0
b3I8QmxvYio+IGJsb2JBcmdzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgaWYgKCFzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQpAQCAtNDI4
OSw3ICs0Mjg5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2kKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZzEgPSBK
U1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDMxNiw3ICs0MzE2
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2kKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NDMzLDcgKzQ0MzMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NN
ZXRob2RXaXRoQ2xhbXAoRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjbGFzc01l
dGhvZFdpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IHVuc2lnbmVkIHNob3J0IG9iakFyZ3NTaG9ydCA9IDA7CkBAIC00NDYzLDcgKzQ0NjMsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRo
b2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IHVuc2lnbmVkTG9uZ1NlcXVlbmNlID0gdG9O
YXRpdmVBcnJheTx1bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NDgw
LDcgKzQ0ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjUwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NTAwLDcgKzQ1MDAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ1MjAsNyArNDUyMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQW5kV2l0aG91dE51bGxhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gYXJyYXlBcmcgPSB0b05hdGl2ZUFy
cmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ1NDAsNyArNDU0
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZTIiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJnID0g
dG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00
NTYwLDcgKzQ1NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKgogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJnZXRTVkdEb2N1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNz
VG9Ob2RlKHN0YXRlLCBpbXBsLmdldFNWR0RvY3VtZW50KGVjKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtNDU3Nyw3ICs0NTc3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4
ZWNTdGF0ZSogc3RhdGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDEiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUg
PSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ1OTQsNyAr
NDU5NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNvbnZlcnQyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgwKSk7CkBAIC00NjExLDcgKzQ2MTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQoRXhlY1N0YXRlKiBzdGF0ZQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDYyOCw3ICs0NjI4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ1KEV4
ZWNTdGF0ZSogc3RhdGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDUiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUg
PSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ2NDUsNyAr
NDY0NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShp
bXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtNDY1Nyw3ICs0NjU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24o
RXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0aW9uKCkp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDY2OSw3ICs0
NjY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9yYW5nZShFeGVjU3RhdGUqIHN0YXRlKQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJvcmFuZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5iYW5h
bmEoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAt
NDY4MSw3ICs0NjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKEV4ZWNTdGF0ZSoKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ3MDcsNyArNDcwNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NzMyLDcgKzQ3MzIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJz
dHJpY3RGdW5jdGlvbldpdGhBcnJheSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljU3RyaW5nTWV0aG9kKEV4ZWMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFk
aWNTdHJpbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBTdHJpbmcgaGVhZCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVl
KHN0YXRlKTsKQEAgLTQ3NzcsNyArNDc3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgZG91YmxlIGhlYWQgPSBzdGF0ZS0+
YXJndW1lbnQoMCkudG9OdW1iZXIoc3RhdGUpOwpAQCAtNDc5Nyw3ICs0Nzk3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
Tm9kZU1ldGhvZChFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNO
b2RlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgTm9k
ZSogaGVhZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00ODIw
LDcgKzQ4MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImFueSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGZs
b2F0IGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CkBAIC00ODQ2LDcgKzQ4
NDYsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblByb21pcwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlvbihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDg2NCw3ICs0ODY0LDcgQEAgc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlRnVuY3Rpb25XaXRoRmwKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFBy
b21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgZmxvYXQgYSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Zsb2F0KHN0
YXRlKTsKQEAgLTQ4OTEsNyArNDg5MSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRGVmZXJyZWRXcmFw
cGVyKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtNDkxMSw3ICs0OTExLDcg
QEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3AKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
dGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC00OTQ2LDcgKzQ5NDYsNyBA
QCB2b2lkIEpTVGVzdE9iak93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBhdXRvKiBqc1Rlc3RPYmogPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNUZXN0T2JqLT5pbXBsKCksIGpzVGVzdE9iaik7CisgICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc1Rlc3RPYmotPndyYXBwZWQoKSwganNUZXN0T2JqKTsKIH0KIAogI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTQ5OTYsNyArNDk5Niw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE9iaiogaW1wCiBUZXN0T2JqKiBKU1Rlc3RPYmo6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggZGQ1MGJh
MjZlMWVjMmQyODkzOGQwNmIwNzJmOTcxYjU5NGNiYjM5My4uZGU0YWJmYWNmODRhYWY3MTA1OGYz
YmJlYTA5MTI5MThmMmVkM2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
CiB7CiAgICAgYXV0byoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+
aW1wbCgpLCBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICB1bmNhY2hlV3JhcHBl
cih3b3JsZCwgJmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPndyYXBwZWQoKSwganNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCkBAIC0yNjEsNyArMjYxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWQKIFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBw
ZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4odmFsdWUpKQotICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcAppbmRleCAzZDk3YjEzY2FiYjA3M2QxNDFiNjRhNTk3NDczMjdmMWY4ZWU4NmE0Li40
MWYzZjI0OTIyMTFiNDRkYWJjZmY5NzJhZDJiNDI1YzdjMDY3NjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogc3QKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsK
LSAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT5pbXBsKCkuc3Vw
cG9ydGVkUHJvcGVydHlOYW1lcygpKQorICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBwcm9w
ZXJ0eU5hbWUpKTsKICAgICB9CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0xOTIsNyArMTkyLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
RnVuY3Rpb25OYW1lZEl0ZW0oRXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPdmVycmlkZUJ1aWx0
aW5zIiwgIm5hbWVkSXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgU3RyaW5nIG5hbWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUp
LT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yMTEs
NyArMjExLDcgQEAgdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3RP
dmVycmlkZUJ1aWx0aW5zID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RP
dmVycmlkZUJ1aWx0aW5zLT5pbXBsKCksIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMpOworICAgIHVu
Y2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+d3JhcHBlZCgpLCBq
c1Rlc3RPdmVycmlkZUJ1aWx0aW5zKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVycmlkZQogVGVzdE92ZXJy
aWRlQnVpbHRpbnMqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnMqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1w
bCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAppbmRleCBiYzc1ZDJlYTVjZWZmY2RjNGVhN2RiODZhZjI5Yjk0ODVj
NzIxNGY4Li4zYTMyNzIxZWIxZTkyYmMxOTBhM2QwYWZlZTUyNGQxNTU2MzFjODcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cApAQCAtMTM3LDcgKzEzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiLCAidmFsdWUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gaW1wbC52YWx1ZSgpID8gaW1wbC52YWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTU0LDcgKzE1NCw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUoRXhl
Y1N0YXRlKiBzdGF0CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9u
bHlWYWx1ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwucmVh
ZG9ubHlWYWx1ZSgpID8gaW1wbC5yZWFkb25seVZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSwKICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRU
aGlzLT5tX2NhY2hlZFZhbHVlLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhY2hlZFZhbHVlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBpbXBsLmNhY2hlZFZhbHVlKCkgPyBpbXBsLmNhY2hlZFZhbHVlKCktPmRlc2VyaWFsaXplKHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICBjYXN0
ZWRUaGlzLT5tX2NhY2hlZFZhbHVlLnNldChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywgcmVzdWx0
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTEsNyArMTkxLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9y
dHMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICJwb3J0cyIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FycmF5KHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wb3J0cygpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yMTAsNyArMjEwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9u
bHlWYWx1ZShFeGVjU3RhdGUKICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBj
YXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGltcGwuY2FjaGVkUmVhZG9ubHlWYWx1ZSgpID8gaW1wbC5jYWNoZWRS
ZWFkb25seVZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgMCkgOiBqc051bGwoKTsKICAgICBjYXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFs
dWUuc2V0KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIHNldEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRl
LCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vdwogewogICAgIGF1dG8qIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UtPmltcGwoKSwganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS0+d3JhcHBlZCgpLCBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZ
KQpAQCAtMzQwLDcgKzM0MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFNlcmlhbGl6CiBUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJl
dHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcAppbmRleCBjMjNkZmUyZGM5NzhhNGJhNDI2MzI4ZDM0NTM2NDcyMzAwOTMx
YjdmLi40ZTRjZmU4NWEyMDdlZTFhNzZmMjNiY2NhZjgwMmMyNzlmMWU4MDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbAog
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdM
b25nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIzNyw3ICsyMzcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3Rh
dGUqIHN0YXRlLCBKUwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZh
bHVlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwuaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKCkgPyBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDog
anNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjY1
LDcgKzI2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI4Myw3ICsyODMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTMwMSw3ICszMDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMzE5LDcgKzMxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzVW5z
aWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplYwog
ICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
InVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUlu
dDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NSw3ICszNjUsNyBA
QCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4NSw3ICszODUsNyBA
QCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRp
dmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDA1LDcgKzQwNSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQz
MihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgc2V0SlNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBl
ZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBA
IHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmlu
ZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKQEAgLTQ2OSw3ICs0NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogc3RhdAogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImZ1bmMiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRD
b3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtNDkxLDcgKzQ5MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blNldFNoYWRvdyhFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
c2V0U2hhZG93Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBmbG9hdCB3aWR0aCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Zsb2F0KHN0YXRlKTsKQEAgLTUz
Miw3ICs1MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcgogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+PiBzZXF1ZW5jZUFyZyA9ICh0b1JlZlB0ck5hdGl2ZUFycmF5PFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgSlNTZXJpYWxpemVkU2NyaXB0VmFsdWU+KHN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCksICZKU1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9XcmFwcGVkKSk7CkBAIC01NDksNyAr
NTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVBcnJheUFyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJudWxsYWJsZUFycmF5QXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJy
YXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTU2Niw3ICs1NjYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25GdW5jV2l0aENsYW1wKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgImZ1bmNXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmcxID0gMDsKQEAgLTYwMyw3ICs2MDMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVh
dGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNjE1LDcgKzYxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVu
Y3Rpb24oCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5j
dGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC02MzUsNyArNjM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5j
dGlvbjIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBcnJheUZ1bmN0
aW9uMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC02NTUsNyArNjU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5j
ZVRoYXQKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJjYWxsV2l0aFNlcXVlbmNl
VGhhdFJlcXVpcmVzSW5jbHVkZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXN0RXZlbnRUYXJnZXQ+PiBzZXF1ZW5jZUFyZyA9
ICh0b1JlZlB0ck5hdGl2ZUFycmF5PFRlc3RFdmVudFRhcmdldCwgSlNUZXN0RXZlbnRUYXJnZXQ+
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICZKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVk
KSk7CkBAIC02NzIsNyArNjcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbigKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
aW1wbC5tZXRob2RXaXRoRXhjZXB0aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZQogewogICAg
IGF1dG8qIGpzVGVzdFR5cGVkZWZzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0VHlw
ZWRlZnMtPmltcGwoKSwganNUZXN0VHlwZWRlZnMpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0VHlwZWRlZnMtPndyYXBwZWQoKSwganNUZXN0VHlwZWRlZnMpOwogfQogCiAjaWYg
RU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtNzQwLDcgKzc0MCw3IEBAIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdFR5cGVkZWZzCiBUZXN0VHlwZWRlZnMqIEpTVGVzdFR5cGVkZWZzOjp0b1dyYXBwZWQoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBs
KCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNhdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAppbmRleCA2NGFmMzE4NGFiZWI2MzlmNjRlODNjZjcyNWJl
ODZjMTM1MDAxYjI2Li5lMmZjYmFmYjIwZTNhNGFjZTZjODFkZmQxYmE0ZGYxOWE2ZmRjMWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRy
aWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U2F0dHJpYnV0ZS5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJp
YnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgaW1wbC5yZWFkb25seSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBKU2F0dHJpYnV0ZU93bmVyOjpmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBh
dXRvKiBqc2F0dHJpYnV0ZSA9IGpzQ2FzdDxKU2F0dHJpYnV0ZSo+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQq
Pihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzYXR0cmlidXRlLT5pbXBs
KCksIGpzYXR0cmlidXRlKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzYXR0cmlidXRl
LT53cmFwcGVkKCksIGpzYXR0cmlidXRlKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGF0dHJpYnV0ZSogaQogYXR0cmli
dXRlKiBKU2F0dHJpYnV0ZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGUqPih2YWx1ZSkpCi0g
ICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXIt
PndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmluZGV4IDU0
ZmNhOGM3NzkwYjc4ZGJlMTYzOGFkOTZkOWM4NDUxM2FlNzVkNjUuLmNlZTgyNTI3NjY1N2Y1NmMz
N2VjOGQyM2NlZWJjODlhMjJmNDE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBA
QCB2b2lkIEpTcmVhZG9ubHlPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgYXV0byoganNyZWFkb25seSA9IGpzQ2Fz
dDxKU3JlYWRvbmx5Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNyZWFkb25seS0+aW1wbCgpLCBqc3JlYWRvbmx5KTsKKyAgICB1bmNh
Y2hlV3JhcHBlcih3b3JsZCwgJmpzcmVhZG9ubHktPndyYXBwZWQoKSwganNyZWFkb25seSk7CiB9
CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgcmVhZG9ubHkqIGltcGwpCkBAIC0xNjAsNyArMTYw
LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCByZWFkb25seSogaW0KIHJlYWRvbmx5KiBKU3JlYWRvbmx5Ojp0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU3JlYWRvbmx5Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXIt
PmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmlu
ZGV4IDM5MTQwODUxYzI3YWQ5YzM4NmUzODE4NDg5NDg1NGUzOTlkMDkzOTQuLmIxMjYxMjdlZDJm
NDQ3YjQ0NmM4YWExNWZhMGQwZjY2OWMzYzkyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gQ2FsbGluZyBhIHJ1bnRpbWUgb2JqZWN0IG9mIGEgcGx1Z2luIGVs
ZW1lbnQ/CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNIVE1MRWxlbWVudDo6aW5m
bygpKSkKLSAgICAgICAgICAgIGluc3RhbmNlID0gcGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRN
TEVsZW1lbnQqPihhc09iamVjdCh0aGlzVmFsdWUpKS0+aW1wbCgpKTsKKyAgICAgICAgICAgIGlu
c3RhbmNlID0gcGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdCh0
aGlzVmFsdWUpKS0+d3JhcHBlZCgpKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZSkKICAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBhMzc1NWQ5ZjNm
ODQ3ZDliM2ZiYjA4ZWFiZmRlZTY1OTA1Njc4YzU5Li44NWU2ZDBhOTQyZDA2ODQyMWMxODYwODgx
YWNkNmQ5NzI3YTVhNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3QKICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhzY3JpcHRTdGF0ZSwgaW5zcGVjdGVkV2luZG93LT5pbXBsKCksIERvTm90UmVwb3J0U2VjdXJp
dHlFcnJvcik7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzY3JpcHRTdGF0ZSwgaW5zcGVjdGVkV2luZG93LT53cmFwcGVkKCksIERvTm90
UmVwb3J0U2VjdXJpdHlFcnJvcik7CiB9CiAKIEluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRsZXIg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZnVuY3Rpb25DYWxsSGFuZGxlcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA4MzdiNmJjYjQ1OWRkYWYwZTMxOTg1MDE5
YWIyZDU4YzQ1YjI3ZjhiLi5kMTE1MThmNWU3MTQ3NzE5ODY2NzQ5YjhhNmUxNzBlYTQ1M2YyMWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTIwODEsNyArMjA4MSw3
IEBAIHN0YXRpYyBXZWJGcmFtZUxvYWRUeXBlIHRvV2ViRnJhbWVMb2FkVHlwZShGcmFtZUxvYWRU
eXBlIGZyYW1lTG9hZFR5cGUpCiAgICAgICAgIGFueVdvcmxkR2xvYmFsT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpOwogCiAg
ICAgLy8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVk
IG9uLgotICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5pbXBsKCkuZnJh
bWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+d3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBSZXRhaW5QdHI8
V2ViRnJhbWU+IHdlYkZyYW1lKGtpdChmcmFtZSkpOyAvLyBSdW5uaW5nIGFyYml0cmFyeSBKYXZh
U2NyaXB0IGNhbiBkZXN0cm95IHRoZSBmcmFtZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggZmVmYzNhYjk1ZjUwNWRmOWJlNmNlYmNm
YzQ3NmRiNGMwZTQzNzU0MS4uN2I1YzQ4NDM3ZjI2MDhkODFjYjdiOTNlNWQwMWMxYzlhNDMxMTE1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1t
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBOU1VSTCAqdG9OU1VSTChjb25zdCBTdHJpbmcmIHMp
CiBzdGF0aWMgV2ViRnJhbWUgKnRvV2ViRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cq
PihnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBraXQod2luZG93LT5pbXBsKCkuZnJhbWUoKSk7
CisgICAgcmV0dXJuIGtpdCh3aW5kb3ctPndyYXBwZWQoKS5mcmFtZSgpKTsKIH0KIAogV2ViU2Ny
aXB0RGVidWdnZXI6OldlYlNjcmlwdERlYnVnZ2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggZjY5ZjFlMTE3NWZjZDIxYjdmNjI2NTUyODIx
NzZjOGVhNmY0OWQ0OS4uY2ViMThkYzMwMzQxNTlkNzgxOWZmYzU5MjZmNjAwOWRkMTRmYjM4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSFJFU1VMVCBXZWJG
cmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQoSVdlYlNjcmlw
dFdvcmxkKiBpV28KICAgICAgICAgYW55V29ybGRHbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd1NoZWxsKj4oZ2xvYmFsT2JqZWN0T2JqKS0+d2luZG93KCk7CiAKICAgICAvLyBH
ZXQgdGhlIGZyYW1lIGZyb21lIHRoZSBnbG9iYWwgb2JqZWN0IHdlJ3ZlIHNldHRsZWQgb24uCi0g
ICAgRnJhbWUqIGZyYW1lID0gYW55V29ybGRHbG9iYWxPYmplY3QtPmltcGwoKS5mcmFtZSgpOwor
ICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUo
KTsKICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
ZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBzdHJp
bmcsIHRydWUpLmpzVmFsdWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjgwMGMyMmZjZjUyYzdiMzY2NjgxNGRkYTI2Yjc0NDJh
MWM2NDBiNy4uZjljMjYwNjgxZWFkODY2N2M2MGY5M2Q3OGI4NDM1N2Y2YzQ2YzdkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC02ODMs
NyArNjgzLDcgQEAgV2ViRnJhbWUqIFdlYkZyYW1lOjpmcmFtZUZvckNvbnRleHQoSlNDb250ZXh0
UmVmIGNvbnRleHQpCiAgICAgaWYgKHN0cmNtcChnbG9iYWxPYmplY3RPYmotPmNsYXNzSW5mbygp
LT5jbGFzc05hbWUsICJKU0RPTVdpbmRvd1NoZWxsIikgIT0gMCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oZ2xv
YmFsT2JqZWN0T2JqKS0+d2luZG93KCktPmltcGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFt
ZSA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxPYmplY3RPYmopLT53aW5k
b3coKS0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgcmV0dXJuIFdlYkZyYW1lOjpmcm9tQ29yZUZy
YW1lKCpmcmFtZSk7CiB9CiAKQEAgLTcyOCw3ICs3MjgsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OmNv
dW50ZXJWYWx1ZShKU09iamVjdFJlZiBlbGVtZW50KQogICAgIGlmICghdG9KUyhlbGVtZW50KS0+
aW5oZXJpdHMoSlNFbGVtZW50OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxlbWVudCgmanNDYXN0PEpTRWxlbWVudCo+KHRv
SlMoZWxlbWVudCkpLT5pbXBsKCkpOworICAgIHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50
KCZqc0Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPndyYXBwZWQoKSk7CiB9CiAKIFN0
cmluZyBXZWJGcmFtZTo6cHJvdmlzaW9uYWxVUkwoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264567</attachid>
            <date>2015-11-02 01:38:14 -0800</date>
            <delta_ts>2015-11-02 02:15:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-150613-20151102103655.patch</filename>
            <type>text/plain</type>
            <size>423784</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3MTA0YmUyYWYzOTAy
YmY4ZDFlMjA3NzE4MWNkZWY1NDQxODE3Yy4uMTczNDRlYTdkNWQxOTU0NTlhZDJiMDQ0YjgzYTlk
ZmIzNDM1MTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4MyBAQAorMjAxNS0xMS0wMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFwcGVk
IGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6OnRpbWVkTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVycm9yTG9nKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRLaW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNB
dWRpb1RyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0JpcXVhZEZpbHRlck5vZGU6OnNldFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NT
UnVsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3BlcnR5
VmFsdWVGYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUdldHRlclBpeGVs
T3JQb3NQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndlYmtpdExpbmVE
YXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRX
ZWJraXRMaW5lRGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q2hhcmFjdGVyRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NoYXJhY3RlckRh
dGE6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OmFmdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjpzdG9yYWdlSWQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvOjpn
ZXRSYW5kb21WYWx1ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5OjphbGdvcml0aG0pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NyeXB0b0tleVBhaXI6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tRXZlbnQ6OmRldGFpbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjphY3RpdmVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RET01X
aW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MRm9ybUVsZW1lbnRPck51bGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01Gb3JtRGF0YTo6YXBwZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01NaW1lVHlw
ZUFycmF5OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxv
d0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01OYW1lZEZsb3dD
b2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBsdWdp
bkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5h
bWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01TdHJpbmdMaXN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6
OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkQWxsb3dBY2Nlc3NGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFz
ZTo6SlNET01XaW5kb3dCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
cHJpbnRFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpz
dXBwb3J0c1Byb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnN1
cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRGcmFtZUdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNET01XaW5kb3dXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dJbmRl
eGVkREIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRFbnVtZXJhYmxlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
Z2V0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRU
aW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRJbnRlcnZhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6
OnNldFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp3cmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBw
ZXI6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjpKU0RPTVdyYXBw
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RhdGFDdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGF0YUN1
ZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGF0YVRyYW5zZmVyOjp0eXBlcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVk
aW5nR3Jhdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50Ojpyb3Rh
dGlvblJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJ2
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1v
dGlvbkV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZl
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjphbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmJl
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBh
c3NIZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
d2Via2l0Q29tcGFzc0FjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50
YXRpb25FdmVudDo6YWJzb2x1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50
OjpwcmVwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
b2N1bWVudFR5cGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50VHlwZTo6YWZ0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVt
ZW50OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphZnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OmFwcGVu
ZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V2ZW50OjpjbGlwYm9hcmREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRmlsZVJlYWRlcjo6cmVzdWx0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9u
Ojp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVkSXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEhUTUxBbGxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEFsbENvbGxlY3Rpb246Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNFbGVtZW50Ojpw
cm9iYWJseVN1cHBvcnRzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNF
bGVtZW50Ojp0b0RhdGFVUkwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rp
b25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmFsbCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQ2Fs
bGluZ0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50V3JpdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRWxlbWVu
dDo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVk
SXRlbXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVFbGVtZW50OjpzZXRMb2NhdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTZWxl
Y3RFbGVtZW50OjppbmRleFNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MVGVt
cGxhdGVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTFRlbXBsYXRl
RWxlbWVudDo6Y29udGVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0hp
c3Rvcnk6OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHVzaFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0luc3BlY3RvckZyb250
ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNNZWRpYVNvdXJjZVN0YXRlczo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNv
dXJjZVN0YXRlczo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0
ZXM6OmZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjph
c3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjpmYWNp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFubmVsOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlSW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6ZGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uT2JzZXJ2ZXJPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWRO
b2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjpuYW1l
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6cmVwbGFj
ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05v
ZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVJdGVyYXRvcjo6
dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlTGlzdE93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JTdHJp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9Ob2RlT3JTdHJpbmdWZWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQYW5uZXJOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFubmVyTm9kZTo6
c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFubmVyTm9kZTo6c2V0RGlz
dGFuY2VNb2RlbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5W
aWV3QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEdldENhbGxEYXRhKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQb3BT
dGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSVENTdGF0c1Jlc3Bv
bnNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUlRDU3RhdHNSZXNwb25zZTo6bmFt
ZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NW
R0xlbmd0aDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnNldFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTU3RvcmFnZTo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1N0
b3JhZ2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N1
YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6
ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6c2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5
cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrQ3VlT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrQ3VlOjp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJh
Y2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjpzZXRLaW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGV4dFRyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UcmFjayk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVHJhY2tFdmVudDo6dHJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
VHJlZVdhbGtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZp
c2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlk
ZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFj
a0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrTGlzdDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRT
aGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTRmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIyZnYp
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXI6OnBvc3RNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29ya2VyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
QWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFt
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0
b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRvbVdpbmRvd0Zyb21FeGVjU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1t
OgorICAgICAgICAoK1tET01Ob2RlIF9ub2RlRnJvbUpTV3JhcHBlcjpdKToKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW06CisgICAgICAgIChKU0M6OmNyZWF0ZURPTVdyYXBw
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgX2lzU2FmZVNjcmlwdF0pOgorICAgICAgICAoK1tXZWJTY3Jp
cHRPYmplY3QgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOm9yaWdpblJvb3RPYmplY3Q6cm9vdE9i
amVjdDpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbik6CisgICAg
ICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rp
b25FeGNpdGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25Bbm90aGVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZl
bnRDb25zdHJ1Y3RvckF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3Ry
dWN0b3JBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3du
ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZl
bnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbkRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRUYXJnZXRPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRUYXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFeGNlcHRpb25O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5hbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50
YWxTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0
cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZU93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6Zmlu
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFw
cGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpS
ZWFkT25seVRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQnl0ZUF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNpZ25lZFNo
b3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0T2JqQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEludGVncmFs
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aENhbGxXaXRoQW5k
U2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11dGFibGVQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmljdEZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5dGVBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28pOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
U3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVu
Y2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RSZXR1cm5pbmdTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRo
YXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRTdGF0ZVZvaWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2Jq
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc051bGxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFj
a0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdM
aXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
R2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0NSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlv
bldpdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21p
c2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iak93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPYmo6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0
aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnNP
d25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
czo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2Fj
aGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTnVsbGFibGVBcnJheUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzT3duZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc2F0dHJpYnV0ZVJlYWRvbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
YXR0cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRl
Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRv
bmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHlPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1ldGhvZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3Rh
dGUpOgorCiAyMDE1LTEwLTI5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIG1pbi1jb250ZW50IHJvdyBkb2VzIG5v
dCBhbHdheXMgc2hyaW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMjI3NzQ0NDc1OTRhZWJlN2Q2MThl
ZDc5NjFkYmM1YjlkMzNkZTU1Mi4uMDMwYWUzMDVkYzk3YmFiMzlmY2FiYzZlM2NkOGM1NjdlMDcw
NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTExLTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVuYW1l
IEpTRE9NV3JhcHBlci5pbXBsIHRvIEpTRE9NV3JhcHBlci53cmFwcGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmlu
Zzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29ybGQ6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKHRvV2ViRnJhbWUpOgorCiAyMDE1LTExLTAx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZd
IFN1cHBvcnQgR2VuZXJhdG9yIFN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDVjOGEwMTg5ZjVl
Y2M4MzhlZTEwOWFmNDE1ODZlNGZmMGRkZTJlMDcuLmViOWYzYTM2NTk4NzMzOWRiNjMxODYxMDQ3
ODhiYzA5ZjAwMjNlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0x
MS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIFJlbmFtZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0
V29ybGQpOgorCiAyMDE1LTEwLTIyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgTW92ZSBtZW51IGNyZWF0aW9uIHRvIFdlYlZpZXcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA1OTE0ZTNhMDY4NDIxYzk2NTQ3OWNmNzFjYTQzMTA2NDUyM2E1Njg0Li42ZTk2MDVmNzQ5MmJm
MzY4YTI0YzBiMGQwZTA5NmVkNGRjMjdmOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTUtMTEtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4K
KworICAgICAgICBSZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8gSlNET01XcmFwcGVyLndyYXBw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDYx
MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmZy
YW1lRm9yQ29udGV4dCk6IFJlbmFtaW5nIGltcGwoKSB0byB3cmFwcGVkKCkuCisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpjb3VudGVyVmFsdWUpOiBEaXR0by4KKwogMjAxNS0xMS0wMSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
VXNlIFJ1bkxvb3AgaW4gV29ya1F1ZXVlIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KaW5kZXggMTZiYjE4YmE1YjI2ZTE2OWZiY2VmYWM1ZTQ2YWM2ZTEyMzg5NTVkYi4uZTQ1
MzJjOGExNWZkNTYyOWQyYTE4NTg4Zjk3YjE1NGEyMDhmMGRiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbQpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqaXRlbSwgSlNDCiBKU0M6
OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEhUTUxW
aWRlb0VsZW1lbnQqIHBhcmVudCA9IGltcGwoKS5wYXJlbnRFbGVtZW50KCk7CisgICAgSFRNTFZp
ZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAo
IXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiBKU0M6OkpT
VmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9nKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgSFRNTFZpZGVvRWxl
bWVudCogcGFyZW50ID0gaW1wbCgpLnBhcmVudEVsZW1lbnQoKTsKKyAgICBIVE1MVmlkZW9FbGVt
ZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIApA
QCAtNDE2LDcgKzQxNiw3IEBAIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50OjphY2Nlc3NMb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zCiBKU0M6OkpTVmFsdWUg
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZXJyb3JMb2coSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBIVE1MVmlkZW9FbGVtZW50KiBw
YXJlbnQgPSBpbXBsKCkucGFyZW50RWxlbWVudCgpOworICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBh
cmVudCA9IHdyYXBwZWQoKS5wYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBh
cmVudC0+cGxheWVyKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0MmYxMmYwZWQyZDEz
YzRlNzVlMDY0YTMzNmJiNzNjMGFkNTM1ZDM1Li5kNDVjZjZkMmM4YThlZTJhZDdjMzdhZGJkZTcw
OGY0ZGRlNGE1YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0
dHJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3Rv
bS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXR0
cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS5vd25lckVsZW1lbnQoKSkKKyAgICBp
ZiAoRWxlbWVudCogZWxlbWVudCA9IHdyYXBwZWQoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1
c3RvbS5jcHAKaW5kZXggMWM5YzMyOGIxMjEyNWQ5YmJlMzkyY2UzMWUyNjM4MTZlMmYxMzRlZC4u
MzNmNzY4ZTNjODM0NTNkYWU5NzUwMmY1MzQ4M2NkM2RkMjliZTg3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Q3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWltcGwoKS5zZXRCdWZmZXIoYnVmZmVyKSkKKyAg
ICBpZiAoIXdyYXBwZWQoKS5zZXRCdWZmZXIoYnVmZmVyKSkKICAgICAgICAgc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsICJBdWRpb0J1ZmZl
ciB1bnN1cHBvcnRlZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCmluZGV4IDM2ZjMxZDlk
NjJlY2Q3OGZkMWFhZjE5MWMyMmI5YTU1MDAyMjc3M2QuLjE1MzE4MTVhYzYzNzVkOTYwZmViMjM3
NWY1ZmMzZTE1N2M2YTliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNBdWRpb1RyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgp
KSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiB2
b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVk
KCkuc2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgSlNBdWRpb1RyYWNr
OjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8m
IHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldExh
bmd1YWdlKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldExhbmd1YWdlKHN0cmluZyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3Rv
bS5jcHAKaW5kZXggODMxZTQyNWM4NjVkNGI4NTdkM2FjNDBhOGVlOTdhZmJhYWQyNWMzYS4uNmZk
MWE1MDQwMjUwZTdkNDc3NmM2ZTk4ZjU0NjJlOTgzYjE1OGYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXVkaW9UcmFja0xpc3Q6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS5lbGVtZW50KCkpKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuZWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCmluZGV4IGY2ZmE4NmY1YzM3NGZlYmJjMGI4MWJm
ZmNhZmM1ZWVkY2E0MWIzMWUuLjkyMWJhZWYzYmRlMjkzZDhhMTdjMjM2ZjI2NGUyMTFiOThiYzYw
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVy
Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRG
aWx0ZXJOb2RlQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEpTQmlxdWFkRmlsdGVy
Tm9kZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogI2lmIEVOQUJM
RShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAg
IHVpbnQzMl90IHR5cGUgPSB2YWx1ZS50b1VJbnQzMigmc3RhdGUpOwotICAgICAgICBpZiAoIWlt
cGwoKS5zZXRUeXBlKHR5cGUpKQorICAgICAgICBpZiAoIXdyYXBwZWQoKS5zZXRUeXBlKHR5cGUp
KQogICAgICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5
cGVFcnJvcigmc3RhdGUsICJJbGxlZ2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBKU0JpcXVhZEZpbHRlck5v
ZGU6OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgewogICAgICAgICBTdHJpbmcgdHlwZSA9IHZhbHVlLnRvU3RyaW5nKCZz
dGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgICAgIGlmICh0eXBlID09ICJsb3dwYXNzIiB8fCB0
eXBlID09ICJoaWdocGFzcyIgfHwgdHlwZSA9PSAiYmFuZHBhc3MiIHx8IHR5cGUgPT0gImxvd3No
ZWxmIiB8fCB0eXBlID09ICJoaWdoc2hlbGYiIHx8IHR5cGUgPT0gInBlYWtpbmciIHx8IHR5cGUg
PT0gIm5vdGNoIiB8fCB0eXBlID09ICJhbGxwYXNzIikgewotICAgICAgICAgICAgaW1wbCgpLnNl
dFR5cGUodHlwZSk7CisgICAgICAgICAgICB3cmFwcGVkKCkuc2V0VHlwZSh0eXBlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCmluZGV4IGZmMjYzMDc4ODMxZjNjOTcxMTljN2Ew
OTlhNDRkMDIyY2YzYjlhZTIuLjBkMzM3Nzc5NjkzMTEwZmNhOTdiY2ExY2MzMWU2OTgyMWQ4MWQ2
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNDU1NSdWxl
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSogcnVsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKaW5kZXgg
ODllOTkyMTUwNmZmNTBlODFlMGM4YjhiODM5ZjJlOTg2YmRhOTNiNC4uMDI4NDQ0ZmUzZGQ5MThi
YzBkMDgwNTBlOWRiYzI4NjI5MjdhNWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgYm9vbCBK
U0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGEKICAgICBKU0NTU1J1bGVMaXN0KiBqc0NTU1J1bGVMaXN0ID0ganND
YXN0PEpTQ1NTUnVsZUxpc3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgaWYgKCFq
c0NTU1J1bGVMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPmlt
cGwoKS5zdHlsZVNoZWV0KCkpCisgICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBq
c0NTU1J1bGVMaXN0LT53cmFwcGVkKCkuc3R5bGVTaGVldCgpKQogICAgICAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdHlsZVNoZWV0KSk7Ci0gICAgaWYgKENTU1J1
bGUqIGNzc1J1bGUgPSBqc0NTU1J1bGVMaXN0LT5pbXBsKCkuaXRlbSgwKSkKKyAgICBpZiAoQ1NT
UnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QtPndyYXBwZWQoKS5pdGVtKDApKQogICAgICAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChjc3NSdWxlKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggZGUyZjkwNzM0NWE3Njhm
NWNlZjM2ODg0OTYyN2NiNDJkNWU0NTFlYy4uOTFiYTMxMjI5OTA5ZDY0OGZjOTBhN2RmNDJmM2E1
ZTY5MjNjZTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgm
d3JhcHBlZCgpKSk7CiB9CiAKIGNsYXNzIENTU1Byb3BlcnR5SW5mbyB7CkBAIC0yNzgsNyArMjc4
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGdldFByb3BlcnR5VmFsdWVGYWxsYmFjayhFeGVj
U3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXIKIHsKICAgICAvLyBJZiB0aGUgcHJvcGVydHkg
aXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwKICAgICAvLyBpdCBj
YW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT5pbXBsKCkuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUgY3NzUHJvcGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KEV4ZWNT
dGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNpZ25lZCBwcm9w
ZXJ0eUlEKQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9w
ZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0CiAgICAg
Ly8gcG9zVG9wIHJldHVybnMgIkNTUyB0b3AiIGFzIG51bWJlciB2YWx1ZSBpbiB1bml0IHBpeGVs
cyBfaWZfIGl0cyBhCiAgICAgLy8gcG9zaXRpb25lZCBlbGVtZW50LiBpZiBpdCBpcyBub3QgYSBw
b3NpdGlvbmVkIGVsZW1lbnQsIHJldHVybiAwCiAgICAgLy8gZnJvbSBNU0lFIGRvY3VtZW50YXRp
b24gRklYTUU6IElNUExFTUVOVCBUSEFUIChEaXJrKQotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9
IHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRo
aXNPYmotPndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwogICAgIGlmICh2KSB7CiAgICAgICAgIGlmICh2
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGlj
X3BvaW50ZXJfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odiktPmdldEZsb2F0VmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVj
LCBKU0NTU1N0CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5zaWduZWQgcHJv
cGVydHlJRCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlzT2JqLT5pbXBsKCkuZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3Bl
cnR5SUQpKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3Bl
cnR5SUQpKTsKICAgICBpZiAodikKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMs
IHYtPmNzc1RleHQoKSk7CiAKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJbmZvLnByb3BlcnR5
SUQpOwotICAgIGltcGwoKS5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1
ZSwgaW1wb3J0YW50LCBlYyk7CisgICAgd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJv
cGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTMsMTEgKzM1MywxMSBAQCBKU1Zh
bHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUm
IHN0YXRlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gaW1wbCgpLmdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNz
c1ZhbHVlID0gd3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoIWNzc1ZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBnbG9iYWxP
YmplY3QoKS0+d29ybGQoKS5tX2Nzc1ZhbHVlUm9vdHMuYWRkKGNzc1ZhbHVlLmdldCgpLCByb290
KCZpbXBsKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgor
ICAgIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5hZGQoY3NzVmFsdWUu
Z2V0KCksIHJvb3QoJndyYXBwZWQoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6
OmZpbmFsaXplKCkuCiAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoY3NzVmFsdWUpKTsKIH0KIApAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlCiAgICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1ZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVD
dXN0b20uY3BwCmluZGV4IGVkNTEyNTMzZWQzM2EzOTIyNTJiZjY0NTJjMjFlYmM5YWVhOWExNzYu
LmQ4ZjQ3MDVhZWJkMmFjNGY3MmFjYjA5YjAyOGJkNTM3MzIxMDJlYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw3
IEBAIGJvb2wgSlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiAgICAgaWYgKCFqc0NTU1ZhbHVlLT5oYXNDdXN0
b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAg
dm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nzc1ZhbHVlUm9vdHMuZ2V0KCZqc0NTU1ZhbHVlLT5pbXBs
KCkpOworICAgIHZvaWQqIHJvb3QgPSB3b3JsZC0+bV9jc3NWYWx1ZVJvb3RzLmdldCgmanNDU1NW
YWx1ZS0+d3JhcHBlZCgpKTsKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7CkBAIC02MCw4ICs2
MCw4IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU0NTU1ZhbHVlKiBqc0NTU1Zh
bHVlID0ganNDYXN0PEpTQ1NTVmFsdWUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKLSAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLT5p
bXBsKCkpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+aW1wbCgpLCBq
c0NTU1ZhbHVlKTsKKyAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVl
LT53cmFwcGVkKCkpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+d3Jh
cHBlZCgpLCBqc0NTU1ZhbHVlKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1ZhbHVlKiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAppbmRleCBiOTkzYmRjMjQyYjQyYzc5M2MyMWU5ZDA0NzIxOTQ2YjM5
MGNlN2I3Li5kYTc1ODAyZWRmZmExNjcwMjhlZDhlMGIxMjRhY2ExYzQ4NDMyM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC01Myw5ICs1Myw5IEBAIHN0YXRpYyBDYW52YXNT
dHlsZSB0b0hUTUxDYW52YXNTdHlsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlKQogICAgICAg
ICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
dmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTQ2FudmFzR3JhZGllbnQ6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzR3JhZGllbnQq
PihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoJmpzQ2FzdDxK
U0NhbnZhc0dyYWRpZW50Kj4ob2JqZWN0KS0+d3JhcHBlZCgpKTsKICAgICBpZiAob2JqZWN0LT5p
bmhlcml0cyhKU0NhbnZhc1BhdHRlcm46OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBDYW52YXNT
dHlsZSgmanNDYXN0PEpTQ2FudmFzUGF0dGVybio+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAg
IHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzUGF0dGVybio+KG9iamVjdCktPndy
YXBwZWQoKSk7CiAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiB9CiAKQEAgLTY3LDEyICs2Nywx
MiBAQCBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21taXQoRXhlY1N0YXRl
JikKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCBpbXBsKCkuc3Ryb2tlU3R5bGUoKSk7CisgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnN0cm9rZVN0eWxlKCkpOwogfQogCiB2b2lkIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9
IGltcGwoKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcihhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZzdGF0ZSkpOwogICAgICAgICByZXR1cm47
CkBAIC04MiwxMiArODIsMTIgQEAgdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U3Ryb2tlU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLmZp
bGxTdHlsZSgpKTsKKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFw
cGVkKCkuZmlsbFN0eWxlKCkpOwogfQogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmICh2YWx1ZS5pc1N0
cmluZygpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGFzU3RyaW5nKHZhbHVlKS0+
dmFsdWUoJnN0YXRlKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Ondl
YmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgZGFzaCA9IGltcGwoKS5nZXRMaW5lRGFzaCgpOworICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIGRhc2ggPSB3cmFwcGVkKCkuZ2V0TGluZURhc2goKTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGxpc3Q7CiAgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
ZGFzaC5lbmQoKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAog
ICAgICAgICBkYXNoLmFwcGVuZChlbGVtKTsKICAgICB9CiAKLSAgICBpbXBsKCkuc2V0V2Via2l0
TGluZURhc2goZGFzaCk7CisgICAgd3JhcHBlZCgpLnNldFdlYmtpdExpbmVEYXNoKGRhc2gpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRl
eCBlNWRkNmU4ODEyNzZjODU2MGFmYmQ1ZDk1MTNiMjA3ZjIyMmRkZGZkLi43ZjUwNDM1ZjVhNjNk
MjU4ZDJjMDNmY2NhMGYzNzg1ZDZiOWY0YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmNhbnZhcygpKSk7
CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qod3JhcHBlZCgpLmNhbnZhcygpKSk7CiB9
CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKaW5k
ZXggY2I4MzFkMDRjZmI4ZWY4NTY4NDc2YmQ4ZmRlM2Y4ZjgyZTlhN2M5MS4uNjAxN2YxZjYwOWZj
NmRmM2ViZDk1M2U0ODUwMzM4YWJkM2Q5MWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCku
YmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5i
ZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00NSw3ICs0
NSw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkK
IEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0
ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6
OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAppbmRleCBiMDY1ZDVjZmYxY2YxYjUwNjQ3
NDU5NjJiZGNkOGQ2MWRmNzY3ZjUyLi41NWM3OTIxMmExMjQwZjJmYmJiODBmYjZmZTBmNTRjY2Rk
ZTJiN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRM
aW5lQVBJSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdCogb2JqZWN0ID0gaW1wbCgpLmluc3BlY3RlZE9iamVjdCgpOworICAgIENvbW1hbmRM
aW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3QqIG9iamVjdCA9IHdyYXBwZWQoKS5pbnNwZWN0
ZWRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0Ojpn
ZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAogICAgIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4gbGlzdGVuZXJzQXJyYXk7
Ci0gICAgaW1wbCgpLmdldEV2ZW50TGlzdGVuZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJheSk7
CisgICAgd3JhcHBlZCgpLmdldEV2ZW50TGlzdGVuZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJh
eSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRl
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc0FycmF5LnNpemUoKTsgKytp
KSB7CkBAIC0xMjksNyArMTI5LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5z
cGVjdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPj0g
MikgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBvYmplY3Qoc3RhdGUudm0oKSwg
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBoaW50cyhzdGF0ZS52bSgpLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0gICAg
ICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpLCBo
aW50cy50b0luc3BlY3RvclZhbHVlKCZzdGF0ZSkpOworICAgICAgICB3cmFwcGVkKCkuaW5zcGVj
dEltcGwob2JqZWN0LnRvSW5zcGVjdG9yVmFsdWUoJnN0YXRlKSwgaGludHMudG9JbnNwZWN0b3JW
YWx1ZSgmc3RhdGUpKTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE0
Miw3ICsxNDIsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBKU0RhdGFiYXNlOjp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChkYXRhYmFzZSkK
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLmRhdGFiYXNl
SWRJbXBsKGRhdGFiYXNlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3Rh
dGUsIHdyYXBwZWQoKS5kYXRhYmFzZUlkSW1wbChkYXRhYmFzZSkpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5l
QVBJSG9zdDo6c3RvcmFnZUlkKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBTdG9yYWdlKiBzdG9y
YWdlID0gSlNTdG9yYWdlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIGlmIChzdG9yYWdlKQotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRl
LCBpbXBsKCkuc3RvcmFnZUlkSW1wbChzdG9yYWdlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKIAog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwCmluZGV4IGQwN2JlYWNhMTVhNTQ3MmI0NjkwYWFjNDVjMWFk
NzU0Y2Y1ZDlhMzkuLjY4N2VjZDFiNWI1NzNmYmJiMmI1MDk5ZGM3ZWIxZjQ1ODc4OTZhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgSlNWYWx1ZSBKU0NyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmdldFJhbmRvbVZhbHVlcyhhcnJheUJ1ZmZl
clZpZXcuZ2V0KCksIGVjKTsKKyAgICB3cmFwcGVkKCkuZ2V0UmFuZG9tVmFsdWVzKGFycmF5QnVm
ZmVyVmlldy5nZXQoKSwgZWMpOwogCiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvS2V5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvS2V5Q3VzdG9tLmNwcAppbmRleCBhZDgxZTRkNDViMWU2MWVhZTE4NzBhYWVjNzNkZTNhZTVk
YmM4OWY1Li41ODU5NGJlZjJkYjI5YTJmMDk3NWVjOTlmZmNhZjg0MDUxZGI5ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNDcnlwdG9LZXk6OmFs
Z29yaXRobShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgSlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyIGJ1aWxkZXIoJnN0YXRlKTsKLSAgICBpbXBsKCkuYnVpbGRBbGdvcml0aG1E
ZXNjcmlwdGlvbihidWlsZGVyKTsKKyAgICB3cmFwcGVkKCkuYnVpbGRBbGdvcml0aG1EZXNjcmlw
dGlvbihidWlsZGVyKTsKICAgICByZXR1cm4gYnVpbGRlci5yZXN1bHQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAK
aW5kZXggOWZkYjg5YmMyN2Y2OGEyMmEzMmQ5Yzk5NGJlZjI4ZGMxMjMyOTc5Zi4uYjRhZDA0NjIy
Y2ZmZGYyODgyNTAzZDU2Mjg5NTMwY2ExOTNjNWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwCkBAIC0zNCw4ICszNCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NyeXB0b0tleVBhaXI6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KGltcGwoKS5wdWJsaWNLZXkoKSk7Ci0gICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KGltcGwoKS5wcml2YXRlS2V5KCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh3
cmFwcGVkKCkucHVibGljS2V5KCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh3cmFwcGVk
KCkucHJpdmF0ZUtleSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FdmVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcAppbmRleCBh
ZjE0OWRhYWYwNTQyNTEyM2ZlODg2OTQ5OWQ1YjdiZWY1ODAzZTVhLi5jNTU2YzllMmU1MDBhNTc1
N2I3MmMzMGJkYWY1YzYwYjUxYjBlMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBKU1ZhbHVlIEpTQ3VzdG9tRXZlbnQ6OmRldGFpbChFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogewotICAgIEN1c3RvbUV2ZW50JiBldmVudCA9IGltcGwoKTsKKyAg
ICBDdXN0b21FdmVudCYgZXZlbnQgPSB3cmFwcGVkKCk7CiAgICAgCiAgICAgaWYgKGV2ZW50LmRl
dGFpbCgpLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
CmluZGV4IGIyODdjNmI4OTk2MjdiNDE4MDg5OThiMjY3NmE5MWU1Yjc4MTI1MmEuLjYwYzU3Zjhk
M2ExOTNkODJkYzNjNjExNDUxZDQ4ZTYyNzIzM2JkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgICAgIGNhbGxUeXBlID0gbV9jdXN0b21SZXNv
bHZlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEobV9jdXN0b21SZXNvbHZlci5nZXQoKSwg
Y2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE0MzEyPiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJIENvbnNvbGUgTWVzc2FnZSBzaG91bGQg
aW5jbHVkZSBMaW5lLCBDb2x1bW4sIGFuZCBTb3VyY2VVUkwKLSAgICAgICAgICAgIGlmIChQYWdl
Q29uc29sZUNsaWVudCogY29uc29sZSA9IG1fZ2xvYmFsT2JqZWN0LT5pbXBsKCkuY29uc29sZSgp
KQorICAgICAgICAgICAgaWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxP
YmplY3QtPndyYXBwZWQoKS5jb25zb2xlKCkpCiAgICAgICAgICAgICAgICAgY29uc29sZS0+YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRl
cmFsKCJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBt
ZXRob2QuIikpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAzMDJjN2E5YTA2
NzRhMGY4ZTBkYTFjMWNlYzAzN2E1NGQ2MjQ5MzgwLi4yMGVmNjA5MTMxOTA2ZTM4ZjNkMjM3ZTcy
ZWM5YTI3ZjQzNWQzMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uLCBDYWNoZWRTY3JpcHQqIGNhY2hlZAogCiAg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKEpTRE9NV2luZG93
KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KSkgewot
ICAgICAgICBpZiAoIXdpbmRvdy0+aW1wbCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQorICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE1LDEyICs1MTUsMTIg
QEAgdWludDY0X3QgdG9VSW50NjQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRl
Z2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3co
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCk7CiB9CiAKIERPTVdpbmRvdyYgZmly
c3RET01XaW5kb3coRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBhc0pTRE9NV2luZG93
KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdyhleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24gcmVwb3J0
aW5nT3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggMTNmZGI1MmQ2YzI1MzE5
YzE5MzhhNzQyOTIyNDIyMDZhY2ZlYzY3OC4uYjA0OGFmOTEzZDJmYjk2NzE2ZDUxNWFmMzA1ZWJi
OTQ2YjY2NzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01G
b3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01G
b3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgSFRNTEZvcm1FbGVtZW50KiB0b0hUTUxGb3JtRWxlbWVudE9yTnVsbChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKEpTSFRNTEZvcm1FbGVt
ZW50OjppbmZvKCkpID8gJmpzQ2FzdDxKU0hUTUxGb3JtRWxlbWVudCo+KGFzT2JqZWN0KHZhbHVl
KSktPmltcGwoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKEpTSFRNTEZv
cm1FbGVtZW50OjppbmZvKCkpID8gJmpzQ2FzdDxKU0hUTUxGb3JtRWxlbWVudCo+KGFzT2JqZWN0
KHZhbHVlKSktPndyYXBwZWQoKSA6IG51bGxwdHI7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNET01Gb3JtRGF0YShFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NCw5
ICs2NCw5IEBAIEpTVmFsdWUgSlNET01Gb3JtRGF0YTo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgICAgICAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpID49IDMgJiYgIXN0YXRlLmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdGF0ZS5hcmd1bWVudCgyKS50b1N0cmlu
Zygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgICAgICAgICAgaW1wbCgpLmFwcGVuZChuYW1l
LCBKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHdyYXBw
ZWQoKS5hcHBlbmQobmFtZSwgSlNCbG9iOjp0b1dyYXBwZWQodmFsdWUpLCBmaWxlbmFtZSk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW1wbCgpLmFwcGVuZChuYW1lLCB2YWx1ZS50b1N0
cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5hcHBl
bmQobmFtZSwgdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAppbmRleCA0MzEyYWUyNzY5
NWUyODZmNzc5MmI0MGUzZGQ1Yzc4NmU4MzY5YzAyLi43NThjYjU4ZDJiMGZjNmQwNWFmYWI1YjE5
NmJiYzZhOTczZWJkYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFp
dGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwCmlu
ZGV4IDBkZDU0NTEyMTdkYzgwOGRkM2U5ZjUyYWJkMmI0ZmZjZDY0ZjhiM2YuLjRmZjEyNjI5Mjdj
ZGNhZGMyYWEyYTllYmIwNmE0MWQ0MzA4MzA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNw
cApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5B
cnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcAppbmRleCAyNjY5ZDgzN2RmMjkzNDY1MjM1YTg5NDI1MTQyZWY2YzE3NDk4
MzA2Li41M2I0YjQ1NzMyNzNlNTIzNGRiMzY4ZDBiMDZiNTk1Y2IyOWRjNGRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNw
cApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NUGx1
Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8g
aXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAppbmRl
eCAxYTc1ODZkYmZmYzAzMjNiODExYjU1N2UzOWY1NThiNzBiY2YwM2U3Li5jY2ZjYTM0OWYyZmRm
ODc0NGVkYTg4M2EwOTI5YWRlYWM1YjIxMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCkBAIC0yOSw3ICsyOSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBh
dXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCmluZGV4IGZkNDAxYjI5MDVmNjkxZjZkZmZmZGI1
ZDg1ZGQ0MjUzNGFkZjI4OWIuLjViZDMzY2IyZTUwMzgzY2I3M2VmYTdiMjFlZTVjNjFiN2I2ZWFh
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdM
aXN0Q3VzdG9tLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gSlNET01TdHJpbmdMaXN0Ojp0b1dyYXBwZWQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0RPTVN0cmlu
Z0xpc3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTRE9NU3RyaW5nTGlzdCo+
KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01T
dHJpbmdMaXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+d3JhcHBlZCgpOwogCiAgICAgaWYgKCFpc0pT
QXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAppbmRleCA5YWY4NDVj
MTgyMGI2YTQ0OTE4OTM0ZWUzMTAyMTVlNjhkNzRkMzU1Li4yMjcxZmQ5YWI5YTdjYWQwZTNhM2I1
OGM5YjkwZTM4N2YwODA5NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgSlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByCiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBuYW1lSXNWYWxpZDsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGl0ZW0gPSBpbXBsKCkuaXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
LCBuYW1lSXNWYWxpZCk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpdGVtID0gd3JhcHBlZCgp
Lml0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZUlzVmFsaWQpOwog
ICAgIGlmIChuYW1lSXNWYWxpZCkgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBp
dGVtKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEpTRE9N
U3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcAogewogICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NU3RyaW5nTWFwKj4ob2JqZWN0KTsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAg
ICB0aGlzT2JqZWN0LT5pbXBsKCkuZ2V0TmFtZXMobmFtZXMpOworICAgIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5nZXROYW1lcyhuYW1lcyk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWVzW2ldKSk7CkBA
IC02NSw3ICs2NSw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBKU0RPTVN0cmluZ01h
cCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVN0cmluZ01hcCo+KGNlbGwpOwogICAgIGlmIChw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPmltcGwoKS5kZWxldGVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZGVsZXRlSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmRleCkKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1YKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUs
IGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgcmV0dXJuICFlYzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcAppbmRleCBiZGQ0ODc3ODQ5ZWNhN2NjYzkxYmI2ZGE1
YmM0M2QxNjYyOGRkZGNlLi41NGY3NWQwYTE5ZTY0ZTcyNWQ1NGIwOTQzMTA3ZjYwOWUyNTNiZDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RD
dXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBAIEpTVmFsdWUgSlNET01Ub2tlbkxpc3Q6OnRvZ2ds
ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIE9wdGlvbmFsPGJvb2w+IGZvcmNlID0gc3RhdGUuYXJn
dW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE51bGxvcHQgOiBPcHRpb25hbDxib29sPihzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbCgpLnRvZ2dsZSh0b2tlbiwgZm9yY2Us
IGVjKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4od3JhcHBlZCgpLnRvZ2dsZSh0
b2tlbiwgZm9yY2UsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCmluZGV4IDY0YWFiNmUwZDMzYTkwNmQzYzAyMTZiMWM3ZWNlOGY4ZTg4Yjk3
MTAuLmY4MDNkYmVjYjE5NGE1NjVmOThhY2U3ZWQ2NTc1MjA2NjhkMzhiNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNz
RnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coZXhlYywgYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KS0+aW1wbCgpKTsKKyAgICByZXR1cm4g
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGFzSlNE
T01XaW5kb3codGhpc09iamVjdCktPndyYXBwZWQoKSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBK
U0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKQEAgLTcw
LDcgKzcwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNl
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2gKIEpTRE9NV2luZG93QmFzZTo6SlNE
T01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9N
V2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgIDogSlNET01HbG9i
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJnNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93Q2xvc2VXYXRjaHBvaW50cygod2luZG93ICYmIHdp
bmRvdy0+ZnJhbWUoKSkgPyBJc1dhdGNoZWQgOiBJc0ludmFsaWRhdGVkKQotICAgICwgbV9pbXBs
KHdpbmRvdykKKyAgICAsIG1fd3JhcHBlZCh3aW5kb3cpCiAgICAgLCBtX3NoZWxsKHNoZWxsKQog
ICAgICwgbV9wcml2YXRlRnVuY3Rpb25zKHZtKQogewpAQCAtMTM0LDI1ICsxMzQsMjUgQEAgdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQoKQogewotICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50
KCkpOworICAgIEFTU0VSVChtX3dyYXBwZWQtPmRvY3VtZW50KCkpOwogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91
Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9j
dW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV9pbXBsLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBv
aW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRv
SlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01XaW5kb3dCYXNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbXBsLT5kb2N1bWVu
dCgpOworICAgIHJldHVybiBtX3dyYXBwZWQtPmRvY3VtZW50KCk7CiB9CiAKIHZvaWQgSlNET01X
aW5kb3dCYXNlOjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
CiB7Ci0gICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkuZnJhbWUoKSwgbWVzc2Fn
ZSk7CisgICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZSh3cmFwcGVkKCkuZnJhbWUoKSwgbWVz
c2FnZSk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyhjb25z
dCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7
Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJh
bWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBKU0RP
TVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmpl
Y3QpCiBib29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBK
U0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0g
ICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUq
IGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTUsMTYgKzE5NSwxNiBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0VG9QcmV2ZW50SW5maW5pdGVSZWN1cnNpb25X
aGVuQ2xvc2luZ1BhZwogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlw
dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93
QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9i
amVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKTsKLSAgICBQYWdl
KiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnBhZ2UoKTsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpOworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgpOwogICAgIHJldHVybiBzaG91bGRJbnRlcnJ1
cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldoZW5DbG9zaW5nUGFnZShwYWdlKTsK
IH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBjb25zdCBKU0RPTVdp
bmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2Uq
PihvYmplY3QpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSk7Ci0gICAg
UGFnZSogcGFnZSA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT5wYWdlKCk7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKTsKKyAgICBQYWdlKiBwYWdlID0gdGhp
c09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnBhZ2UoKTsKIAogICAgIGlmIChzaG91bGRJbnRl
cnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldoZW5DbG9zaW5nUGFnZShwYWdl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBKU0RPTVdp
bmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNHbG9i
YWxPYmplY3QqIG8KIFJ1bnRpbWVGbGFncyBKU0RPTVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBjb25zdCBKU0RP
TVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jh
c2UqPihvYmplY3QpOwotICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBSdW50aW1lRmxhZ3MoKTsKICAgICByZXR1
cm4gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVGbGFncygpOwpAQCAtMzI4LDcg
KzMyOCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2lu
dHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cpCiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBK
U0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZU5h
bWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSkKIHsKICAgICBKU0RPTVdpbmRvd0Jh
c2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmpl
Y3QpOwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1w
bCgpLmRvY3VtZW50KCkpCisgICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5t
b2R1bGVMb2FkZXIoKS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZU5hbWUsIGlt
cG9ydGVyTW9kdWxlS2V5KTsKICAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRl
ZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5l
ZCgpKTsKQEAgLTMzNyw3ICszMzcsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdp
bmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdAogSlNDOjpK
U0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUgbW9kdWxlS2V5KQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9
IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJl
ZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkK
KyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5m
ZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZUtleSk7CiAgICAgSlNDOjpKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWpl
Y3QoZXhlYywganNVbmRlZmluZWQoKSk7CkBAIC0zNDYsNyArMzQ2LDcgQEAgSlNDOjpKU0ludGVy
bmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xv
YmFsT2JqZWN0KgogSlNDOjpKU1ZhbHVlIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZh
bHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCkK
IHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3Vt
ZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmRvY3VtZW50KCkpCisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LCBleGVjLCBtb2R1bGVLZXksIG1vZHVsZVJlY29yZCk7CiAgICAgcmV0dXJuIEpTQzo6anNVbmRl
ZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKaW5kZXggMTA3NjQwYzE3NjhmYjdkODJlNzk0YjEwNmYwMjNiMjkxNDM4OWY5Zi4uZDY5OWE1
YWU1N2I3ZjcyMmVhYmE0ODgyNzA2YzFhNGUxMDFmM2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwog
Ci0gICAgICAgIERPTVdpbmRvdyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAg
ICAgICAgRE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2lu
ZG93IGZyb20gdGhlIEpTRE9NV2luZG93U2hlbGwuCkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSk7CiAgICAgICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OkpTVmFsdWUpOwogCi0gICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKKyAgICAg
ICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVkOwogICAgICAgICBKU0RPTVdpbmRvd1NoZWxs
KiBtX3NoZWxsOwogCiAgICAgICAgIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zIG1fcHJpdmF0
ZUZ1bmN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAppbmRleCAwYmMzMzc1NGFhMWZiYzVhMzY5MzE3MzRmN2QxNTllNDI0OTA0NDZl
Li4wMGU2MmE0MmI2NDliZjc4NTYzZDYwODhlYTM4ZGY4MTA1OTYyMzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MiwyMSAr
NjIsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTRE9NV2luZG93Ojp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gaW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQo
KS5mcmFtZSgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZnJhbWUpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgY2hpbGRGcmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDYXN0
PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbmFtZWRJdGVt
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRo
aXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSk7Ci0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpc09iai0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdGhpc09iai0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAK
LSAgICBBU1NFUlQoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93
KGV4ZWMsIHRoaXNPYmotPmltcGwoKSkpOworICAgIEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iai0+d3JhcHBlZCgpKSk7CiAg
ICAgQVNTRVJUKGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQpKTsKIAogICAgIEF0b21pY1N0cmlu
Z0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CkBA
IC05Niw5ICs5Niw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBuYW1lZEl0ZW1HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUganNET01XaW5kb3dXZWJLaXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93KiBj
YXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyhKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgY2Fz
dGVkVGhpcy0+aW1wbCgpLndlYmtpdE5hbWVzcGFjZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKIH0KICNlbmRpZgogCkBAIC0xMTEsOSAr
MTExLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93SW5kZXhlZERCKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSB0
b0pTRE9NV2luZG93KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5kZXhlZERCRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3Rl
ZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmluZGV4ZWREQigmaW1w
bCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjksNyAr
MTI5LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAvLyBXZSBkb24ndCB3YW50IGFu
eSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3NlIiBhbmQgImNsb3NlZCIgb24gYSBmcmFtZWxl
c3Mgd2luZG93IChpLmUuIG9uZSB3aG9zZSBwYWdlIGdvdCBjbG9zZWQsCiAgICAgLy8gb3Igd2hv
c2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGZ1bGx5
IG1hdGNoIEZpcmVmb3gsIHdoaWNoIGFsbG93cyBhdCBsZWFzdCB0b1N0cmluZyBpbiBhZGRpdGlv
biB0byB0aG9zZS4KLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSB7CisgICAg
aWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkgewogICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIGNvZGUgaXMgc2FmZSBmb3IgY3Jvc3MtZG9tYWluIGFuZCBzYW1lIGRvbWFpbiB1c2Uu
CiAgICAgICAgIC8vIEl0IGlnbm9yZXMgYW55IGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQg
YmUgc2V0IG9uIHRoZSBET01XaW5kb3cgKGluY2x1ZGluZyBhIGN1c3RvbSBwcm90b3R5cGUpLgog
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZWQp
IHsKQEAgLTE0NSwxNCArMTQ1LDE1IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAg
IC8vIG5vdCBhbGxvd2VkLiAKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNsb3Quc2V0V2F0Y2hwb2ludFNldCh0
aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMpOworICAgIH0KKworICAgIHNsb3Qu
c2V0V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMpOwog
CiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgY3Jvc3MtZG9tYWluIGFjY2VzcyBoZXJlIHdp
dGhvdXQgcHJpbnRpbmcgdGhlIGdlbmVyaWMgd2FybmluZyBtZXNzYWdlCiAgICAgLy8gYmVjYXVz
ZSB3ZSBhbHdheXMgYWxsb3cgYWNjZXNzIHRvIHNvbWUgZnVuY3Rpb24sIGp1c3QgZGlmZmVyZW50
IG9uZXMgZGVwZW5kaW5nIHdoZXRoZXIgYWNjZXNzCiAgICAgLy8gaXMgYWxsb3dlZC4KICAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGJvb2wgYWxsb3dzQWNjZXNzID0gc2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCksIGVycm9yTWVzc2FnZSk7
CisgICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4
ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKTsKICAgICAKICAgICAvLyBM
b29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVy
dGllcywgYnV0IGlnbm9yZSBvdmVycmlkZXMgY29tcGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMg
Y3Jvc3MtZG9tYWluIGFjY2Vzcy4KQEAgLTE3Niw3ICsxNzcsNyBAQCBib29sIEpTRE9NV2luZG93
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eQogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9N
V2luZG93UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSwgMj4pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuc2hvd01vZGFsRGlhbG9nKSB7Ci0gICAgICAgIGlmICghRE9NV2luZG93OjpjYW5TaG93TW9k
YWxEaWFsb2codGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKSB7CisgICAgICAgIGlmICghRE9N
V2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2codGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkp
KSB7CiAgICAgICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTIwNyw3ICsyMDgsNyBAQCBib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eQogICAgIH0KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkud2Via2l0ICYmIHRoaXNPYmpl
Y3QtPmltcGwoKS5zaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQodGhpc09iamVjdC0+
d29ybGQoKSkpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS53ZWJraXQgJiYgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3Bh
Y2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgewogICAgICAgICBzbG90LnNldENhY2hl
YWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBhbGxvd3NBY2Nlc3MgPyBEb250RGVsZXRlIHwgUmVhZE9u
bHkgOiBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwganNET01XaW5kb3dXZWJLaXQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzcsNyArMjM4LDcgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHkKICAgICAvLyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZs
aWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5v
dCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8g
aXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVl
KCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkp
IHsKKyAgICBpZiAodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRD
aGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAg
ICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTI0Nyw5ICsyNDgsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogCiAgICAgLy8gYWxsb3cg
d2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMpCiAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChpbmRleCAmJiBp
bmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRD
aGlsZENvdW50KCkpIHsKKyAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9u
dEVudW0sCi0gICAgICAgICAgICB0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgp
LT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgudmFsdWUoKSktPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpKSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFt
ZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgudmFsdWUoKSktPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjYwLDcgKzI2MSw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgfQogCiAgICAgLy8gQWxsb3cgc2hvcnRj
dXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBkb2N1bWVudC5pbWFnZXMuSW1hZ2UxCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KSkgewog
ICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpOwogICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIGRvd25j
YXN0PEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KS5oYXNXaW5kb3dOYW1lZEl0ZW0oKmF0b21pY1By
b3BlcnR5TmFtZSkpIHsKQEAgLTI3Niw3ICsyNzcsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAKLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSB7Cisg
ICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkgewogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYSBtZXNzYWdlIGhlcmUgdGhhdCBleHBsYWlucyB3aHkgdGhlIHBy
b3BlcnR5IGFjY2Vzcy9mdW5jdGlvbiBjYWxsIHdhcwogICAgICAgICAvLyBub3QgYWxsb3dlZC4g
CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CkBAIC0yODcsNyArMjg4LDcgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIHUKICAgICAvLyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3Mg
dG8gc29tZSBmdW5jdGlvbiwganVzdCBkaWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBh
Y2Nlc3MKICAgICAvLyBpcyBhbGxvd2VkLgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAg
Ym9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRo
aXNPYmplY3QtPmltcGwoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9
IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgp
LCBlcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29r
aW5nIGF0IGFueSBvZiBvdXIgb3duIHByb3BlcnRpZXMsIGJ1dCBpZ25vcmUgb3ZlcnJpZGVzIGNv
bXBsZXRlbHkKICAgICAvLyBpZiB0aGlzIGlzIGNyb3NzLWRvbWFpbiBhY2Nlc3MuCkBAIC0zMDEs
NyArMzAyLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKICAgICAvLyBuYW1pbmcgZnJhbWVz
IHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8v
IGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBo
YXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmlt
cGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTMyMyw5ICszMjQsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dQogICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAog
ICAgIC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGlm
IChpbmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGRD
b3VudCgpKSB7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkt
PnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwKLSAgICAgICAgICAgIHRv
SlMoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChp
bmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgp
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTMzNiw3ICszMzcsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIH0KIAog
ICAgIC8vIEFsbG93IHNob3J0Y3V0cyBsaWtlICdJbWFnZTEnIGluc3RlYWQgb2YgZG9jdW1lbnQu
aW1hZ2VzLkltYWdlMQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwo
KS5mcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIGlmIChpczxIVE1MRG9jdW1l
bnQ+KCpkb2N1bWVudCkpIHsKICAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eU5hbWUgaXMgZ2VuZXJh
dGVkIGJ5IElkZW50aWZpZXI6OmZyb20uCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gZ2VuZXJh
dGVzIElkZW50aWZpZXIgZnJvbSBTdHJpbmcgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBub24tc3lt
Ym9sIElkZW50aWZpZXIuCkBAIC0zNTQsMTIgKzM1NSwxMiBAQCBib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgdQogdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihjZWxsKTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKQorICAg
IGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIE9wdGltaXphdGlvbjogYWNjZXNzIEphdmFTY3JpcHQgZ2xvYmFsIHZhcmlhYmxlcyBk
aXJlY3RseSBiZWZvcmUgaW52b2x2aW5nIHRoZSBET00uCiAgICAgaWYgKHRoaXNPYmplY3QtPkpT
R2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKGV4ZWMsIHByb3BlcnR5TmFtZSkp
IHsKLSAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgICAgICBpZiAoQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MzY3LDI2ICszNjgsMjYgQEAgdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogICAgIGlmIChsb29rdXBQ
dXQoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQ
cm9wSGFzaFRhYmxlLCBzbG90KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCkpKQorICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpT
RE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwotICAgIGlm
ICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFw
cGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCk7CiAKICAgICAvLyBPcHRp
bWl6YXRpb246IGFjY2VzcyBKYXZhU2NyaXB0IGdsb2JhbCB2YXJpYWJsZXMgZGlyZWN0bHkgYmVm
b3JlIGludm9sdmluZyB0aGUgRE9NLgogICAgIGlmICh0aGlzT2JqZWN0LT5KU0dsb2JhbE9iamVj
dDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShleGVjLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAg
IGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3Q6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5k
ZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAg
ICAgQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIH0KIApAQCAtMzk0LDcgKzM5NSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihj
ZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTQw
Myw3ICs0MDQsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiB7CiAgICAgSlNET01XaW5kb3cq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFs
bG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC00MTIsNyArNDEzLDcgQEAg
dWludDMyX3QgSlNET01XaW5kb3c6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cg
dG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIEJhc2U6OmdldEVudW1lcmFibGVMZW5ndGgoZXhlYywgdGhpc09iamVj
dCk7CiB9CkBAIC00MjEsNyArNDIyLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJl
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFAKIHsKICAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7
CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpA
QCAtNDMwLDcgKzQzMSw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNET01X
aW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8v
IE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2Ft
ZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkpKQogICAgICAgICByZXR1cm47CiAgICAgQmFzZTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00MzksNyAr
NDQwLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxv
dyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4K
LSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtNDQ4LDcgKzQ0OSw3IEBAIHZvaWQgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBl
bnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+
aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KQEAgLTQ1Nyw3ICs0NTgsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVj
LAogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IGRlZmluaW5nIHByb3BlcnRpZXMgaW4gdGhpcyB3
YXkgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbiwgYXMgaXQgYWxsb3dzIHNldHRlcnMgdG8g
YmUgaW50cm9kdWNlZC4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3Qt
PndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0IGFsbG93
IHNoYWRvd2luZyBsb2NhdGlvbiB1c2luZyBhY2Nlc3NvciBwcm9wZXJ0aWVzLgpAQCAtNDc2LDcg
KzQ3Nyw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgLy8gYSBwcm9wZXJ0eSBuYW1lZCAibG9jYXRpb24iIGluc3Rl
YWQgb2YgcGVyZm9ybWluZyBhIG5hdmlnYXRpb24gKDxyZGFyOi8vcHJvYmxlbS81Njg4MDM5Piku
CiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLmZy
YW1lKCkpIHsKICAgICAgICAgaWYgKGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygpLnVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2ZUZyYW1lLT50cmVlKCkucGFy
ZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coJnN0YXRlLCBpbXBsKCkpKQorICAgICAgICAgICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIHdyYXBwZWQoKSkp
CiAgICAgICAgICAgICAgICAgcHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC00ODcsNyArNDg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24g
PSBpbXBsKCkubG9jYXRpb24oKSkKKyAgICBpZiAoTG9jYXRpb24qIGxvY2F0aW9uID0gd3JhcHBl
ZCgpLmxvY2F0aW9uKCkpCiAgICAgICAgIGxvY2F0aW9uLT5zZXRIcmVmKGFjdGl2ZURPTVdpbmRv
dygmc3RhdGUpLCBmaXJzdERPTVdpbmRvdygmc3RhdGUpLCBsb2NhdGlvblN0cmluZyk7CiB9CiAK
QEAgLTUzMCw3ICs1MzEsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpvcGVuKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxET01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IGltcGwo
KS5vcGVuKHVybFN0cmluZywgZnJhbWVOYW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZl
RE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSkpOworICAgIFJlZlB0cjxE
T01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IHdyYXBwZWQoKS5vcGVuKHVybFN0cmluZywgZnJhbWVO
YW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93KCZzdGF0ZSksIGZpcnN0
RE9NV2luZG93KCZzdGF0ZSkpOwogICAgIGlmICghb3BlbmVkV2luZG93KQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdG9KUygmc3RhdGUsIG9wZW5lZFdpbmRvdy5n
ZXQoKSk7CkBAIC01ODUsNyArNTg2LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFs
RGlhbG9nKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBEaWFsb2dIYW5kbGVyIGhhbmRsZXIoc3Rh
dGUpOwogCi0gICAgaW1wbCgpLnNob3dNb2RhbERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1
cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRl
KSwgWyZoYW5kbGVyXShET01XaW5kb3cmIGRpYWxvZykgeworICAgIHdyYXBwZWQoKS5zaG93TW9k
YWxEaWFsb2codXJsU3RyaW5nLCBkaWFsb2dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93
KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSksIFsmaGFuZGxlcl0oRE9NV2luZG93JiBk
aWFsb2cpIHsKICAgICAgICAgaGFuZGxlci5kaWFsb2dDcmVhdGVkKGRpYWxvZyk7CiAgICAgfSk7
CiAKQEAgLTYzNSwxMiArNjM2LDEyIEBAIHN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdl
KERPTVdpbmRvdyYgaW1wbCwgRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9z
dE1lc3NhZ2UoaW1wbCgpLCBzdGF0ZSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHdy
YXBwZWQoKSwgc3RhdGUpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBpbXBsKCkuZG9jdW1lbnQoKSA/IGltcGwoKS5kb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/IHdyYXBwZWQo
KS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpj
cmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgY29udGVudFNlY3VyaXR5UG9s
aWN5KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNjUxLDcgKzY1Miw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRp
bWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpbnQgZGVsYXkgPSBzdGF0ZS5hcmd1bWVudCgx
KS50b0ludDMyKCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQg
cmVzdWx0ID0gaW1wbCgpLnNldFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5LCBlYyk7
CisgICAgaW50IHJlc3VsdCA9IHdyYXBwZWQoKS5zZXRUaW1lb3V0KFdURjo6bW92ZShhY3Rpb24p
LCBkZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJl
dHVybiBqc051bWJlcihyZXN1bHQpOwpAQCAtNjU5LDcgKzY2MCw3IEBAIEpTVmFsdWUgSlNET01X
aW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGltcGwoKS5kb2N1bWVudCgpID8gaW1wbCgp
LmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKKyAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1
bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDog
bnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBT
Y2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBj
b250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02NjksNyArNjcwLDcgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IGpzTnVtYmVyKDApOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3Vs
dCA9IGltcGwoKS5zZXRJbnRlcnZhbChXVEY6Om1vdmUoYWN0aW9uKSwgZGVsYXksIGVjKTsKKyAg
ICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBk
ZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVy
biBqc051bWJlcihyZXN1bHQpOwpAQCAtNjc3LDcgKzY3OCw3IEBAIEpTVmFsdWUgSlNET01XaW5k
b3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNET01XaW5kb3c6
OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBGcmFtZSogZnJhbWUg
PSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtNjg1
LDEzICs2ODYsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUmIHN0YXRlKQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2
ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9i
YWxPYmplY3QoKS0+d29ybGQoKSksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUp
KTsKKyAgICB3cmFwcGVkKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29y
bGQoKSksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC02OTksNyArNzAwLDcgQEAg
SlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBpbXBsKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgw
KS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVu
ZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3Qo
KS0+d29ybGQoKSkucHRyKCksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsK
KyAgICB3cmFwcGVkKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29y
bGQoKSkucHRyKCksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtNzA5LDkgKzcxMCw5IEBAIERPTVdpbmRvdyog
SlNET01XaW5kb3c6OnRvV3JhcHBlZChKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3Qt
PmluaGVyaXRzKEpTRE9NV2luZG93OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxK
U0RPTVdpbmRvdyo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNE
T01XaW5kb3cqPihvYmplY3QpLT53cmFwcGVkKCk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMo
SlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01X
aW5kb3dTaGVsbCo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNE
T01XaW5kb3dTaGVsbCo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRl
eCA1NGNiNWU1NDA0MjAxNTA1ZDVkYTdlYTQ3ZTc0ZmEwYzJlZjBlMDY0Li4xMTIwNjY4NTIyMjI5
ZjdkMTZkZWY4NjlkZjkxNzk2N2Y1MWNhNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEpTRE9N
V2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93KQog
ewogICAgIC8vIFJlcGxhY2luZyBKU0RPTVdpbmRvdyB2aWEgdGVsbGluZyBKU0RPTVdpbmRvd1No
ZWxsIHRvIHVzZSB0aGUgc2FtZSBET01XaW5kb3cgaXQgYWxyZWFkeSB1c2VzIG1ha2VzIG5vIHNl
bnNlLAogICAgIC8vIHNvIHdlJ2QgYmV0dGVyIG5ldmVyIHRyeSB0by4KLSAgICBBU1NFUlQoIXdp
bmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAhPSAmd2luZG93KCktPmltcGwoKSk7CisgICAgQVNT
RVJUKCF3aW5kb3coKSB8fCBkb21XaW5kb3cuZ2V0KCkgIT0gJndpbmRvdygpLT53cmFwcGVkKCkp
OwogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlw
ZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9i
YWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0
cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCkBAIC05NCw5ICs5NCw5IEBA
IHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBk
b21XaW5kb3cpCiAvLyBKU0RPTVdpbmRvdyBtZXRob2RzCiAvLyAtLS0tCiAKLURPTVdpbmRvdyYg
SlNET01XaW5kb3dTaGVsbDo6aW1wbCgpIGNvbnN0CitET01XaW5kb3cmIEpTRE9NV2luZG93U2hl
bGw6OndyYXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiB3aW5kb3coKS0+aW1wbCgpOworICAg
IHJldHVybiB3aW5kb3coKS0+d3JhcHBlZCgpOwogfQogCiAvLyAtLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggY2VkYjU5YzczNTJhY2Rm
MTBhMzE3NmEwN2IyMTgzYWU3NTJjNjhhOC4uMDFmMDQ4ZDY3YTRmNWI4ZDBmMWVlOTY5ZDVkMjc1
NDVmMTI3NDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
REVDTEFSRV9JTkZPOwogCi0gICAgICAgIERPTVdpbmRvdyYgaW1wbCgpIGNvbnN0OworICAgICAg
ICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNET01XaW5k
b3dTaGVsbCogY3JlYXRlKEpTQzo6Vk0mIHZtLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IGU0
OTQxNWUyYmM0MjQ1ODBjMmJjOTAwYmQzMjNmNjdiMDgwOTUyMzUuLjI2MjZmNThhZWVhOTAyNDUx
MDBiZDJkYjlhZTEwN2RlMGMzM2RlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oCkBAIC01MiwxNiArNTIsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW1wbGVt
ZW50YXRpb25DbGFzcz4gY2xhc3MgSlNET01XcmFwcGVyIDogcHVibGljIEpTRE9NT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NT2JqZWN0IEJhc2U7CiAKLSAgICBJbXBsZW1lbnRh
dGlvbkNsYXNzJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIH5KU0RPTVdy
YXBwZXIoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQorICAg
IEltcGxlbWVudGF0aW9uQ2xhc3MmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PEltcGxlbWVudGF0aW9uQ2xhc3MmPihtX3dyYXBwZWQuZ2V0KCkpOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8SW1wbGVtZW50YXRpb25DbGFzcz4mJiBpbXBsKQog
ICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgICAgICwgbV9pbXBs
KCZpbXBsLmxlYWtSZWYoKSkgeyB9CisgICAgICAgICwgbV93cmFwcGVkKFdURjo6bW92ZShpbXBs
KSkgeyB9CiAKIHByaXZhdGU6Ci0gICAgSW1wbGVtZW50YXRpb25DbGFzcyogbV9pbXBsOworICAg
IFJlZjxJbXBsZW1lbnRhdGlvbkNsYXNzPiBtX3dyYXBwZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFD
dWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9t
LmNwcAppbmRleCA3YWIzMjQ1ZDBiYmMyYmQ3ZGY1N2YyYjc1OWIzNGIwNDgwZjMzNWExLi5iZTUz
ZWJlZDk1MTQxYmY2ODU2MTk3NWM0MTY3YWU1MmMwMWUyZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiBKU1ZhbHVlIEpT
RGF0YUN1ZTo6dmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1w
bCgpLnZhbHVlKCZzdGF0ZSk7CisgICAgcmV0dXJuIHdyYXBwZWQoKS52YWx1ZSgmc3RhdGUpOwog
fQogCiB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBpbXBsKCkuc2V0VmFsdWUoJnN0YXRlLCB2YWx1ZSk7CisgICAgd3JhcHBl
ZCgpLnNldFZhbHVlKCZzdGF0ZSwgdmFsdWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAppbmRleCAwYjBm
YTkwNzYwMTY1NjcxMzFjYjhkNzAzM2M5Yzg2MThjMGExZGU4Li5kZmM4ZDQ0Y2Y2NmQ1ZGUyZWQ5
MmQyZWNkYmExZjM2NTY2MjhlNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0RhdGFUcmFuc2Zlcjo6dHlwZXMoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyA9IGltcGwoKS50eXBlcygp
OworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gd3JhcHBlZCgpLnR5cGVzKCk7CiAgICAgcmV0
dXJuIHR5cGVzLmlzRW1wdHkoKSA/IGpzTnVsbCgpIDoganNBcnJheSgmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCB0eXBlcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKaW5k
ZXggODM4OWQ2MWU1ODMxMzg1NGY1NTYzM2MyYzkzZDUxMTczMGMzZWEwZS4uMGU5Yjk3NjdmYzMy
OWNkOWVjNTYzYmQ5YmU0YzFmZWZmMTY4NTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1
c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpT
VmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmlt
cGwoKSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCA3ZDgwZjZm
MWI4ZmVhMWQwYTc3ZWRmODg4NmIzZWQzMzBmNjZiZjAwLi43Mzc2MmNhYTEzYzU0ZmU1Y2ZiOTYz
NzgwOTE5MGY0OGM2Njg5ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IHN0YXRpYyBKU09iamVjdCogY3JlYXRlUm90YXRpb25SYXRlT2JqZWN0KGNvbnN0IERldmljZU1v
dGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSoKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojph
Y2NlbGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBEZXZpY2VNb3Rpb25F
dmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVyYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmpl
Y3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+YWNjZWxlcmF0aW9uKCksIHN0YXRlKTsKQEAgLTE0
NCw3ICsxNDQsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbihF
eGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAg
ICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50
JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAg
ICByZXR1cm4gY3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCkt
PmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSwgc3RhdGUpOwpAQCAtMTUyLDcgKzE1Miw3
IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eShFeGVjU3RhdGUmIHN0YXRlKSBjb25zCiAKIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVu
dDo6cm90YXRpb25SYXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgRGV2aWNlTW90
aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gd3Jh
cHBlZCgpOwogICAgIGlmICghaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+cm90YXRpb25SYXRlKCkp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4gY3JlYXRlUm90YXRpb25SYXRl
T2JqZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCktPnJvdGF0aW9uUmF0ZSgpLCBzdGF0ZSk7CkBA
IC0xNjAsNyArMTYwLDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJh
dGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50
OjppbnRlcnZhbChFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERldmljZU1vdGlvbkV2ZW50JiBp
bXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAg
ICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmNhblByb3ZpZGVJbnRlcnZhbCgpKQogICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5kZXZpY2VNb3Rp
b25EYXRhKCktPmludGVydmFsKCkpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEpTVmFsdWUgSlNEZXZp
Y2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgYm9vbCBpbnRlcnZhbFByb3ZpZGVkID0gIXN0YXRlLmFyZ3VtZW50KDYpLmlzVW5kZWZpbmVk
T3JOdWxsKCk7CiAgICAgZG91YmxlIGludGVydmFsID0gc3RhdGUuYXJndW1lbnQoNikudG9OdW1i
ZXIoJnN0YXRlKTsKICAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gZGV2aWNlTW90aW9uRGF0
YSA9IERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24sIGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHksIHJvdGF0aW9uUmF0ZSwgaW50ZXJ2YWxQcm92aWRlZCwgaW50ZXJ2YWwp
OwotICAgIGltcGwoKS5pbml0RGV2aWNlTW90aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2Vs
YWJsZSwgZGV2aWNlTW90aW9uRGF0YS5nZXQoKSk7CisgICAgd3JhcHBlZCgpLmluaXREZXZpY2VN
b3Rpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdl
dCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAKaW5kZXggMTEyNzA1MmJjNjA1ZTdhY2RmNmQ1ZGE2NmRjNDI4ZjhhOGJmOGVjNi4uNTZh
YmQ5YjI0MTgwMjJlMTZlMzk4NGRjMzc1MGNiNTUyMjZmNzFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1
ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0g
ICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU9yaWVu
dGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigp
LT5jYW5Qcm92aWRlQWxwaGEoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVy
biBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+YWxwaGEoKSk7CkBAIC00OCw3ICs0OCw3IEBA
IEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphbHBoYShFeGVjU3RhdGUmKSBjb25z
dAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YShFeGVjU3RhdGUmKSBj
b25zdAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3Jp
ZW50YXRpb24oKS0+Y2FuUHJvdmlkZUJldGEoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwog
ICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+YmV0YSgpKTsKQEAgLTU2LDcg
KzU2LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmJldGEoRXhlY1N0YXRl
JikgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmdhbW1hKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlR2FtbWEoKSkKICAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Z2FtbWEoKSk7
CkBAIC02NSw3ICs2NSw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1t
YShFeGVjU3RhdGUmKSBjb25zdAogI2lmIFBMQVRGT1JNKElPUykKIEpTVmFsdWUgSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUmKSBjb25zdAog
ewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VP
cmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50YXRp
b24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9yaWVudGF0aW9uKCktPmNvbXBhc3NIZWFkaW5n
KCkpOwpAQCAtNzMsNyArNzMsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
d2Via2l0Q29tcGFzc0hlYWRpbmcoRXhlY1N0YXRlJikgY29uc3QKIAogSlNWYWx1ZSBKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NBY2N1cmFjeShFeGVjU3RhdGUmKSBjb25z
dAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50
YXRpb24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5jb21wYXNzQWNj
dXJhY3koKSk7CkBAIC04Myw3ICs4Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojp3ZWJraXRDb21wYXNzQWNjdXJhY3koRXhlY1N0YXRlJikgY29uc3QKICNpZiAhUExBVEZP
Uk0oSU9TKQogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFic29sdXRlKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQWJzb2x1dGUoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogICAgIHJldHVybiBqc0Jvb2xlYW4oaW1wLm9yaWVudGF0aW9uKCktPmFic29s
dXRlKCkpOwpAQCAtMTE0LDcgKzExNCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGJv
b2wgYWJzb2x1dGUgPSBzdGF0ZS5hcmd1bWVudCg2KS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBS
ZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBvcmllbnRhdGlvbiA9IERldmljZU9yaWVudGF0
aW9uRGF0YTo6Y3JlYXRlKGFscGhhUHJvdmlkZWQsIGFscGhhLCBiZXRhUHJvdmlkZWQsIGJldGEs
IGdhbW1hUHJvdmlkZWQsIGdhbW1hLCBhYnNvbHV0ZVByb3ZpZGVkLCBhYnNvbHV0ZSk7CiAjZW5k
aWYKLSAgICBpbXBsKCkuaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQodHlwZSwgYnViYmxlcywg
Y2FuY2VsYWJsZSwgb3JpZW50YXRpb24uZ2V0KCkpOworICAgIHdyYXBwZWQoKS5pbml0RGV2aWNl
T3JpZW50YXRpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5n
ZXQoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZWMwYjljMmJhMzBlODYw
ZjZlMmJhOTgwMTcwZDhmNzAyYjQ0NTJkNy4uMDk0Y2UzZTMyMmRiMGQ3MGIyMGE4ZGJhMzBlNGIx
MjM1OWM5ODQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1
bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRG9jdQog
SlNWYWx1ZSBKU0RvY3VtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNWYWx1ZSBKU0RvY3Vt
ZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVu
ZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBl
ZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0
b20uY3BwCmluZGV4IGMzNTJkNWRiOTdiYmNkZTBjNmNmYzk2MWRiYWVhNDgxY2I3MjE1YzUuLjdk
YTM4NDdjMTc2ZjA2NzBjN2NjZDU5MTJmMzY5MDJmZDljMDQ4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZhbHVlIEpTRG9jdW1lbnRG
cmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOworICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6
cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFw
cGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGltcGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3Jh
cHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNw
cAppbmRleCA4MzMzODcyMDFiYmY2MDJiNTU1MzYwOGJlYjU1MTA2MjljZWNiOTVhLi5hOTNkNjcx
NzNkOTQyNTU2YjBmMjI2MmNiNDA4MTkyMjBiM2ZlOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShF
eGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwo
KS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgp
LmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUp
CiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNEb2N1bWVu
dFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpy
ZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGltcGwoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKKyAgICB3cmFwcGVkKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCBmZWZkZTM1N2E3ZGNiNmViN2M1ZDZmNjYxZTdiNTdmNWMwMGU5NDMxLi4x
ZDY1MjQyZjE2MWE4YmU2NjJiZjczNmZmODJkNWY4YTY2ZTE5OGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKIEpTVmFsdWUgSlNFbGVtZW50OjpiZWZvcmUoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuYmVm
b3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5iZWZv
cmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC03OSw3ICs3OSw3
IEBAIEpTVmFsdWUgSlNFbGVtZW50OjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUg
SlNFbGVtZW50OjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CkBAIC04OCw3ICs4OCw3IEBAIEpTVmFsdWUgSlNFbGVtZW50OjphZnRlcihFeGVjU3Rh
dGUmIHN0YXRlKQogSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRo
KHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNl
V2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTk3LDcgKzk3
LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIEpTVmFsdWUgSlNFbGVtZW50
OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCku
YXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAppbmRleCA1MWU5ZjBkOTMwZjZj
OWY2OThmZDIwYWNhOWI4MDFhNjg3YWY4N2UwLi42MDk5NTQxNjk1NmZiZGUxNTE4YTU5YWRkYzBh
NWY0MDY2OTVmNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNFdmVudDo6Y2xpcGJvYXJkRGF0YShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJl
dHVybiBpbXBsKCkuaXNDbGlwYm9hcmRFdmVudCgpID8gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCgpLCBpbXBsKCkuY2xpcGJvYXJkRGF0YSgpKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJu
IHdyYXBwZWQoKS5pc0NsaXBib2FyZEV2ZW50KCkgPyB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5jbGlwYm9hcmREYXRhKCkpIDoganNVbmRlZmluZWQoKTsKIH0KIAogI2Rl
ZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCAyODBjYTEy
ZGViZDBmMDBmODVlYWIzMGM5OGNkYjM3OGVkZjM3MGNiLi44M2VjYTk0YTQwN2UzYTEyOTljYWJm
NzI5ODgyNjQ3Y2VmNjg1Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAogCiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewog
ICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgaWYgKCF3aW5kb3ctPmltcGwoKS5pc0N1cnJlbnRseURpc3BsYXll
ZEluRnJhbWUoKSkKKyAgICAgICAgaWYgKCF3aW5kb3ctPndyYXBwZWQoKS5pc0N1cnJlbnRseURp
c3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgLy8gRklYTUU6
IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBjb250ZXh0cz8KLSAgICAgICAgU2NyaXB0
Q29udHJvbGxlciYgc2NyaXB0ID0gd2luZG93LT5pbXBsKCkuZnJhbWUoKS0+c2NyaXB0KCk7Cisg
ICAgICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdCA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1l
KCktPnNjcmlwdCgpOwogICAgICAgICBpZiAoIXNjcmlwdC5jYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Q3VzdG9tLmNwcAppbmRleCBjN2M3NDUwNWE2YTFmYWVmMGNjN2RhOWIyYzY2NTMyNGUyZDRm
NzljLi5lOGVhZDFjMWQ0MmYwZGRmZmVlOTY2ZTE4MjBlZDAyNTA4ODJmNGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogCiAjZGVmaW5lIFRSWV9UT19V
TldSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkgXAogICAgIGlmICh2YWx1ZS5pbmhl
cml0cyhKUyMjaW50ZXJmYWNlTmFtZTo6aW5mbygpKSkgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXR1cm4gJmpzQ2FzdDxKUyMjaW50ZXJmYWNlTmFtZSo+KGFzT2JqZWN0KHZhbHVl
KSktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlMjI2ludGVyZmFjZU5hbWUqPihh
c09iamVjdCh2YWx1ZSkpLT53cmFwcGVkKCk7CiAKIEV2ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0
Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKaW5kZXggNTFmYmY0ZmExODJmNGMz
YmM0NmJhNThmYmRlMDdjNWVmNThmMTA2OS4uYTNjMDliMTgzMDQxMTlhOGVlOGRkNzdiNGQ3ZGZm
NTQ4MmQzYjA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
UmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVS
ZWFkZXJDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SlNWYWx1ZSBKU0ZpbGVSZWFkZXI6OnJlc3VsdChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewot
ICAgIEZpbGVSZWFkZXImIGltcCA9IGltcGwoKTsKKyAgICBGaWxlUmVhZGVyJiBpbXAgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKGltcC5yZWFkVHlwZSgpID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRB
c0FycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXAuYXJyYXlCdWZmZXJSZXN1bHQoKSkpOwogICAgIHJldHVybiBqc093
bmVkU3RyaW5nT3JOdWxsKCZzdGF0ZSwgaW1wLnN0cmluZ1Jlc3VsdCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggZWJj
NWJhN2FiNjMwY2ZhNTNkMDE1YjJjNmQzNDIzODk0NTI4MDkxNy4uYjAxYmU3ZGJkMGYwM2VjYTgw
YzZkMDk1ZjBhZWM4Yzc3NmU4NTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBKU1ZhbHVl
IEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsK
IAotICAgIGltcGwoKS5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNl
KCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxl
YXNlKCkpOworICAgIHdyYXBwZWQoKS5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFj
ay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0
aW9ucy5yZWxlYXNlKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0xMzYs
NyArMTM2LDcgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3Np
dGlvbk9wdGlvbnMpOwogCi0gICAgaW50IHdhdGNoSUQgPSBpbXBsKCkud2F0Y2hQb3NpdGlvbihw
b3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CisgICAgaW50IHdhdGNoSUQgPSB3cmFwcGVk
KCkud2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKHdhdGNoSUQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDI1OTJmNDY3
MmU4YTIxNzBlYmZmZWEyMmQ4MzM1NTgxMzM5ZjIxZjkuLjk0YmMzMjRhZWRlMzgwZjBhZDkyOWM4
NDM0YzViOWRhYTk5YjBjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUm
IHN0YXRlLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xs
ZWN0aW9uLT5pbXBsKCkubmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zID0gY29sbGVj
dGlvbi0+d3JhcHBlZCgpLm5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgLy8gRG8gbm90IHVzZSB0aGlzT2JqIGhlcmUuIEl0IGNhbiBiZSB0aGUgSlNIVE1MRG9j
dW1lbnQsIGluIHRoZSBkb2N1bWVudC5mb3JtcyhpKSBjYXNlLgogICAgIEpTSFRNTEFsbENvbGxl
Y3Rpb24qIGpzQ29sbGVjdGlvbiA9IGpzQ2FzdDxKU0hUTUxBbGxDb2xsZWN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpOwotICAgIEhUTUxBbGxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uID0ganNDb2xsZWN0
aW9uLT5pbXBsKCk7CisgICAgSFRNTEFsbENvbGxlY3Rpb24mIGNvbGxlY3Rpb24gPSBqc0NvbGxl
Y3Rpb24tPndyYXBwZWQoKTsKIAogICAgIC8vIEFsc28sIGRvIHdlIG5lZWQgdGhlIFR5cGVFcnJv
ciB0ZXN0IGhlcmUgPwogCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCpzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpLmltcGwoKSkpCi0gICAg
ICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5pdGVtKGluZGV4
LnZhbHVlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwg
d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgIHJldHVybiBuYW1lZEl0ZW1zKHN0
YXRlLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQo
MCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
CmluZGV4IGU2ZWM4ZGMzY2VhZjRmYWYxMzNlNDhlOTQ1OWI5OGE2Mjg4ZGM2ODEuLjE0YWQ5NWJi
MTc2MzUyODk3ODYwMzE3YzgyMDI4MWYwOGRmZDBiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGdldDNEQ29udGV4dEF0dHJpYnV0ZXMoRXhlY1N0YXRl
JiBzdGF0ZSwgUmVmUHRyPENhbnZhc0NvbnRleHRBdHRyaWJ1CiAKIEpTVmFsdWUgSlNIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52
YXNFbGVtZW50JiBjYW52YXMgPSBpbXBsKCk7CisgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZh
cyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgCiAgICAgUmVmUHRy
PENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzPiBhdHRyczsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1
ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpT
VmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gaW1wbCgpOwor
ICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0
ZS5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAg
IGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9T
dHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiAKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAg
ICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gd3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogCiAgICAgY29uc3QgU3RyaW5nJiB0eXBlID0gdmFsdWVUb1N0cmluZ1dpdGhV
bmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
aW5kZXggNzI3OWE5NDUwYTE3MTM0MDUzZjY4MzAyNWMzYzEwODdkYTUwNzkwYi4uODg5NzA1YWZl
MGQ4MzZmYzZlYjViOTE4MjlmOTgwMDgzMTJhNmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQyLDEwICs0
MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUmIHZhbHVlKQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW1wbCgpLnR5cGUoKSAhPSBG
b3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUgc3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKLSAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGltcGwoKS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNo
b3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0Uod3JhcHBlZCgpLnR5cGUoKSAhPSBGb3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUg
c3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHdyYXBwZWQo
KS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFt
ZUdldHRlciIpOwogCi0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwog
ICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNDMxNzQy
ODU0NjhhZWFmNzE4NzFlMDk2NGY0MjYxMTJlYzVhNjAwOS4uMTkxMmMwYjZiZTNiODk2MjQ0YzYy
YmUxNmZlMTUxOTk2NGZlMDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIEpTSFRN
TERvY3VtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZQogCiBib29sIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0g
ICAgYXV0byYgZG9jdW1lbnQgPSBpbXBsKCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSB3cmFwcGVk
KCk7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpOwogICAgIGlmICghYXRvbWljUHJvcGVydHlOYW1lIHx8ICFkb2N1
bWVudC5oYXNEb2N1bWVudE5hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKSkKQEAgLTExNSw3
ICsxMTUsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKICAgICBpZiAodikKICAgICAgICAgcmV0dXJuIHY7CiAKLSAgICByZXR1cm4gdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuYWxsKCkpOworICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5hbGwoKSk7CiB9CiAKIHZvaWQgSlNIVE1M
RG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMTMy
LDcgKzEzMiw3IEBAIHN0YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3Rh
dGUmIHN0YXRlKQogICAgIGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coZnVuY3Rvci5jYWxsZXJGcmFtZSgpLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCkuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdyhmdW5jdG9yLmNhbGxlckZyYW1lKCktPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndy
YXBwZWQoKS5kb2N1bWVudCgpOwogfQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCkBAIC0xNDEsNyAr
MTQxLDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgYnJvd3NlcnMsIHBhc3Mgb3Bl
biBjYWxscyB3aXRoIG1vcmUgdGhhbiAyIHBhcmFtZXRlcnMgdG8gdGhlIHdpbmRvdy4KICAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID4gMikgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gaW1wbCgpLmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQo
KS5mcmFtZSgpKSB7CiAgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9K
U0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50V29ybGQoJnN0YXRlKSk7CiAgICAgICAgICAg
ICBpZiAod3JhcHBlcikgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB3cmFw
cGVyLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm9wZW4iKSk7
CkBAIC0xNTcsMTAgKzE1NywxMCBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAKICAgICAvLyBkb2N1bWVudC5vcGVuIGNsb2JiZXJzIHRoZSBzZWN1cml0
eSBjb250ZXh0IG9mIHRoZSBkb2N1bWVudCBhbmQKICAgICAvLyBhbGlhc2VzIGl0IHdpdGggdGhl
IGFjdGl2ZSBzZWN1cml0eSBjb250ZXh0LgotICAgIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9
IGFzSlNET01XaW5kb3coc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gYXNKU0RPTVdpbmRvdyhzdGF0
ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCkuZG9jdW1lbnQoKTsKIAogICAgIC8v
IEluIHRoZSBjYXNlIG9mIHR3byBwYXJhbWV0ZXJzIG9yIGZld2VyLCBkbyBhIG5vcm1hbCBkb2N1
bWVudCBvcGVuLgotICAgIGltcGwoKS5vcGVuKGFjdGl2ZURvY3VtZW50KTsKKyAgICB3cmFwcGVk
KCkub3BlbihhY3RpdmVEb2N1bWVudCk7CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE2OCw3
ICsxNjgsNyBAQCBlbnVtIE5ld2xpbmVSZXF1aXJlbWVudCB7IERvTm90QWRkTmV3bGluZSwgRG9B
ZGROZXdsaW5lIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkb2N1bWVudFdyaXRlKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTSFRNTERvY3VtZW50KiB0aGlzRG9jdW1lbnQsIE5ld2xpbmVSZXF1aXJlbWVu
dCBhZGROZXdsaW5lKQogewotICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSAmdGhpc0RvY3Vt
ZW50LT5pbXBsKCk7CisgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9ICZ0aGlzRG9jdW1lbnQt
PndyYXBwZWQoKTsKICAgICAvLyBET00gb25seSBzcGVjaWZpZXMgc2luZ2xlIHN0cmluZyBhcmd1
bWVudCwgYnV0IGJyb3dzZXJzIGFsbG93IG11bHRpcGxlIG9yIG5vIGFyZ3VtZW50cy4KIAogICAg
IHNpemVfdCBzaXplID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzZDQ4ZGYwNDQ2
MDkzM2VjY2Y0NTUzNGJiN2NjYTE3YzNkNmM1NmY1Li41ODM2YTEwNzRiZTI5NTY3ZTE2Y2I4NmU1
NTQyZDNjYzIyMGQ4MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBKU1Njb3BlKiBKU0hUTUxFbGVtZW50OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCYg
ZWxlbWVudCA9IGltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IHdyYXBwZWQoKTsK
IAogICAgIC8vIFRoZSBkb2N1bWVudCBpcyBwdXQgb24gZmlyc3QsIGZhbGwgYmFjayB0byBzZWFy
Y2hpbmcgaXQgb25seSBhZnRlciB0aGUgZWxlbWVudCBhbmQgZm9ybS4KICAgICBzY29wZSA9IEpT
V2l0aFNjb3BlOjpjcmVhdGUoZXhlYywgYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3Qo
KSwgJmVsZW1lbnQuZG9jdW1lbnQoKSkpLCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwCmluZGV4IDhiNTVmYTdkZTM2ZTVjNjA3ODg5YzliMWU5YTUxYzNlYzhhNjhiNzYu
LjNhZmIzMjYwNzI2ZGRmNWYzNTgwZDJmNDJiNmY5YWJlZGYwNmY1YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJ
dGVtcyA9IGNvbGxlY3Rpb24tPmltcGwoKS5uYW1lZEl0ZW1zKG5hbWUpOworICAgIFZlY3RvcjxS
ZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xsZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVt
cyhuYW1lKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRl
bXNbMF0ucHRyKCkpOwogCi0gICAgQVNTRVJUKGNvbGxlY3Rpb24tPmltcGwoKS50eXBlKCkgPT0g
Rm9ybUNvbnRyb2xzKTsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChu
YW1lKS5nZXQoKSk7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24tPndyYXBwZWQoKS50eXBlKCkgPT0g
Rm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBjb2xsZWN0aW9uLT53cmFwcGVkKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlz
dChuYW1lKS5nZXQoKSk7CiB9CiAKIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCBlMzRjMDM1NDZkZGVhNmNhZGVkMWEzY2Fj
OWY3YmY3ZjMzODhiYmE0Li4zYWVkNzA1MmY0NjE1ZWYwYWM5MzU5ZTcxYTkxNTg3ODBiM2JkNTdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ym9vbCBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIFZlY3RvcjxSZWY8
RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBpbXBsKCkubmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBu
YW1lZEl0ZW1zID0gd3JhcHBlZCgpLm5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBhYjAwMGY3MTMwMTll
OWI4YTBiZjU4ZTIzNWQ3NDEzYTlhY2I5NTQyLi42ZmQ1YTk3YjI1N2M2MDg1OGY4OTI5YjJlOWEy
OTkxYjU3ZGYxZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGFsbG93U2V0dGluZ0phdmFzY3JpcHRVUkwoRXhlY1N0YXRlJiBzdGF0ZSwgSFRN
TEZyYW1lRWxlbWVudCoKIAogdm9pZCBKU0hUTUxGcmFtZUVsZW1lbnQ6OnNldExvY2F0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRNTEZyYW1lRWxlbWVudCYg
aW1wID0gaW1wbCgpOworICAgIEhUTUxGcmFtZUVsZW1lbnQmIGltcCA9IHdyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbG9jYXRpb25WYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKCZzdGF0
ZSwgdmFsdWUpOwogCiAgICAgaWYgKCFhbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKHN0YXRlLCAm
aW1wLCBsb2NhdGlvblZhbHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDcwODU2ZTU1M2M0
ZmQ2YzdkMDIwZmI5NzM1ODk4NmEyNjUyNTM1NmEuLjEyNWFlZjdlYzFkNzMxZjIyZTExNjQwZTgw
ZjMyYmI3MGFhZWVhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYg
dmFsdWUpCiB7Ci0gICAgYXV0byogZnJhbWVFbGVtZW50ID0gaW1wbCgpLmNoaWxkcmVuKCktPm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBh
dXRvKiBmcmFtZUVsZW1lbnQgPSB3cmFwcGVkKCkuY2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXM8SFRNTEZy
YW1lRWxlbWVudD4oZnJhbWVFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCA4ZjQyZGJlZjUyNGZkNmZkOGNlM2RhYTExMTlkZGZkYjNiOWIwMTU1Li4z
NzJmMzQyOTgxNGNhODUyZmEzNWE3MjhkYWRjZmUwYmEzNjQ1ZjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAg
ICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTQ0LDcgKzQ0LDcg
QEAgSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFy
dChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBl
ZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOwogCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25TdGFydChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
CiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5I
YXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwog
CkBAIC02Miw3ICs2Miw3IEBAIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25F
bmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNl
dFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhU
TUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlu
cHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNI
VE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlv
bihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0
ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKIApAQCAtODAsNyArODAsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIHZvaWQg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwo
KTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlu
cHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OwogICAgICAgICByZXR1cm47CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7Cisg
ICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5j
YW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA0NDAwOTc2MWQxMzlkMTMxODY0NmI1YzhlNTFlMjViYWQw
ZWIxNDAzLi4yZjQxY2ZlNWUyNGJmOTg4MWI2MDNlMDVmNWQyZTNhOTc5YTBlNTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgdm9pZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldENv
bnRyb2xsZXIoRXhlY1N0YXRlJiwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyA0LjguMTAuMTEu
MiBNZWRpYSBjb250cm9sbGVyczogY29udHJvbGxlciBhdHRyaWJ1dGUuCiAgICAgLy8gT24gc2V0
dGluZywgaXQgbXVzdCBmaXJzdCByZW1vdmUgdGhlIGVsZW1lbnQncyBtZWRpYWdyb3VwIGF0dHJp
YnV0ZSwgaWYgYW55LCAKLSAgICBpbXBsKCkuc2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAg
d3JhcHBlZCgpLnNldE1lZGlhR3JvdXAoU3RyaW5nKCkpOwogICAgIC8vIGFuZCB0aGVuIHNldCB0
aGUgY3VycmVudCBtZWRpYSBjb250cm9sbGVyIHRvIHRoZSBnaXZlbiB2YWx1ZS4KLSAgICBpbXBs
KCkuc2V0Q29udHJvbGxlcihKU01lZGlhQ29udHJvbGxlcjo6dG9XcmFwcGVkKHZhbHVlKSk7Cisg
ICAgd3JhcHBlZCgpLnNldENvbnRyb2xsZXIoSlNNZWRpYUNvbnRyb2xsZXI6OnRvV3JhcHBlZCh2
YWx1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggOTE1ZTAyODdjNzhj
ZGMwOTVkYjFhZGUzMzVkNzYwY2QzYjU4M2U3ZC4uOTIzNDVlNmI1N2ZjYzUwMzM4NmE5MGMzYTE3
Nzk0YzRjMTMxNjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTYxLDEzICs2MSwx
MyBAQCB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIG5ld0xlbmd0aCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsZW5ndGhWYWx1ZSk7CiAgICAgfQogICAgIGlmICghZWMpCi0gICAgICAgIGlt
cGwoKS5zZXRMZW5ndGgobmV3TGVuZ3RoLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZXRMZW5n
dGgobmV3TGVuZ3RoLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogfQog
CiB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHNlbGVjdEluZGV4U2V0
dGVyKCZpbXBsKCkuc2VsZWN0RWxlbWVudCgpLCBleGVjLCBpbmRleCwgdmFsdWUpOworICAgIHNl
bGVjdEluZGV4U2V0dGVyKCZ3cmFwcGVkKCkuc2VsZWN0RWxlbWVudCgpLCBleGVjLCBpbmRleCwg
dmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoRXhl
Y1N0YXRlJiBzdGF0ZSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbjo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgLy8gVGhlIGFyZ3VtZW50IGNh
biBiZSBhbiBIVE1MT3B0aW9uRWxlbWVudCBvciBhbiBpbmRleC4KICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYgKEhUTUxPcHRpb25FbGVtZW50KiBvcHRp
b24gPSBKU0hUTUxPcHRpb25FbGVtZW50Ojp0b1dyYXBwZWQoYXJndW1lbnQpKQotICAgICAgICBp
bXBsKCkucmVtb3ZlKG9wdGlvbik7CisgICAgICAgIHdyYXBwZWQoKS5yZW1vdmUob3B0aW9uKTsK
ICAgICBlbHNlCi0gICAgICAgIGltcGwoKS5yZW1vdmUoYXJndW1lbnQudG9JbnQzMigmc3RhdGUp
KTsKKyAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShhcmd1bWVudC50b0ludDMyKCZzdGF0ZSkpOwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGIzZGYx
M2Y3MmVhYThmYmFhMDc4NjA1ZjQ3NjMzOTI3ZWJlMDJjYzYuLjMwZTNlYmJiODlhNGVmMjNhNTk2
OTRjM2FiZWU1N2E4MGE2MjMxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNCw3ICszNCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEpTVmFsdWUgSlNIVE1MU2VsZWN0RWxlbWVu
dDo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNl
bGVjdCA9IGltcGwoKTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0ID0gd3JhcHBlZCgp
OwogCiAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgLy8gV2hlbiBj
YWxsZWQgd2l0aCBubyBhcmd1bWVudCwgd2Ugc2hvdWxkIGNhbGwgRWxlbWVudDo6cmVtb3ZlKCkg
dG8gZGV0YWNoLgpAQCAtNjksNyArNjksNyBAQCB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogCiB2
b2lkIEpTSFRNTFNlbGVjdEVsZW1lbnQ6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIHNlbGVjdEluZGV4
U2V0dGVyKCZpbXBsKCksIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CisgICAgc2VsZWN0SW5kZXhTZXR0
ZXIoJndyYXBwZWQoKSwgZXhlYywgaW5kZXgsIHZhbHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3Rv
bS5jcHAKaW5kZXggMWJiODZkZjg4YzlkZWVhYjA5YmEwNmYzMjVkZTdiZGY2NmQ0NDhhZi4uOTdh
YmU3N2MwYjAzYWIxNjVkYjZkNDc2ZDhlYTE5OGQxODdiYzBjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20u
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSlNIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250
ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soJnN0
YXRlKTsKIAotICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRlbnQgPSBpbXBsKCkuY29udGVudCgp
OworICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRlbnQgPSB3cmFwcGVkKCkuY29udGVudCgpOwog
CiAgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdCgp
LT53b3JsZCgpLCBjb250ZW50KTsKICAgICBpZiAod3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCmluZGV4IGEyYzY5ZWJlZTNkYTg4YTM5
Yjc0ZTg3MmRiZTRjOTJkNzVmNWE5ZDIuLjJiZDJmNmQ4ZTM4NDdiMzA0ZmU5NThjNDI4MmYyMDE5
N2EyMzliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9y
eUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogICAgIC8v
IE91ciBjdXN0b20gY29kZSBpcyBvbmx5IG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBj
cm9zcy1kb21haW4gc2NoZW1lLCBzbyBpZiBhY2Nlc3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1
cm4gZmFsc2Ugc28gdGhlIG5vcm1hbCBsb29rdXAgd2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmlu
ZyBtZXNzYWdlOwotICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgaW1wbCgp
LmZyYW1lKCksIG1lc3NhZ2UpKQorICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhl
Yywgd3JhcHBlZCgpLmZyYW1lKCksIG1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZlbiB3
aGVuIGNhbGxlZCBjcm9zcy1kb21haW4uCkBAIC02OSwxNCArNjksMTQgQEAgYm9vbCBKU0hpc3Rv
cnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcHJpbnRFcnJv
ck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkuZnJhbWUoKSwgbWVzc2FnZSk7CisgICAgcHJpbnRFcnJv
ck1lc3NhZ2VGb3JGcmFtZSh3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSk7CiAgICAgc2xvdC5z
ZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBKU0hpc3Rvcnk6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogewotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGlt
cGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB3
cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVMKIGJvb2wgSlNI
aXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hpc3RvcnkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNIaXN0b3J5Kj4oY2VsbCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtOTIsNyArOTIsNyBAQCBib29sIEpT
SGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZQogYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAg
ICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCku
ZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUpOwogfQpAQCAtMTAwLDE0ICsxMDAsMTQgQEAgYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHIK
IHZvaWQgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewogICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hp
c3RvcnkqPihvYmplY3QpOwotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNz
VG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6c3RhdGUoRXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIaXN0b3J5JiBoaXN0b3J5ID0gaW1wbCgpOworICAg
IEhpc3RvcnkmIGhpc3RvcnkgPSB3cmFwcGVkKCk7CiAKICAgICBKU1ZhbHVlIGNhY2hlZFZhbHVl
ID0gbV9zdGF0ZS5nZXQoKTsKICAgICBpZiAoIWNhY2hlZFZhbHVlLmlzRW1wdHkoKSAmJiAhaGlz
dG9yeS5zdGF0ZUNoYW5nZWQoKSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBKU1ZhbHVlIEpTSGlzdG9y
eTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1
c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKCZzdGF0ZSwgaW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKCZzdGF0ZSwgd3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlT
dGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1l
bnQoMCksIDAsIDApOwpAQCAtMTQwLDcgKzE0MCw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNo
U3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpbXBsKCkuc3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0
aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKKyAgICB3cmFw
cGVkKCkuc3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0aXRsZSwgdXJs
LCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBAIC0xNTAsNyArMTUwLDcg
QEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1Zh
bHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYg
KCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisgICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
JnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0xNjksNyArMTY5LDcgQEAgSlNW
YWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhp
c3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlw
ZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlT
dGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVw
bGFjZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3Rh
dGUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKaW5kZXggOWRkNDAxZGUzMzM2YzkwNzk4ZDBhNzliMjlhMTYwNjI3ZWQ3
ODhlNy4uYThjYmEwM2M1ZWI2YmY1OTc2NTY0ZTAwODdhNGNjZjIzYzdkZjVhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShF
eGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuY3Jl
YXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgZWMpLmdldCgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBl
ZCgpLmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIGVjKS5n
ZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0xMTMsNyArMTEzLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihFeGVjU3RhdGUmIGV4ZWMpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZleGVjLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgp
LnRyYW5zYWN0aW9uKHNjcmlwdENvbnRleHQsIHNjb3BlLCBtb2RlLCBlYykuZ2V0KCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmZXhlYywgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS50
cmFuc2FjdGlvbihzY3JpcHRDb250ZXh0LCBzY29wZSwgbW9kZSwgZWMpLmdldCgpKTsKICAgICBz
ZXRET01FeGNlcHRpb24oJmV4ZWMsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cAppbmRleCAyOWM1ZWU0MDg2NTUxMGVmNjQ0OGUwYzhiYjAzYTliNGM2NGNjZTcxLi44MzEwYzBl
YmMwNmI2MDU2ZTJkY2Q4MzI4NmE5MTkxY2YwZTlhOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIEpTVmFsdWUgSlNJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLmNyZWF0ZUluZGV4
KGNvbnRleHQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgZWMpLmdldCgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBl
ZCgpLmNyZWF0ZUluZGV4KGNvbnRleHQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRy
eSwgZWMpLmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCBlMjZiYmU3OGQ5ZmJi
YzQ5MjBjZTFlZmNiNGMzNTBmZDdhMTMyNGI4Li45ZTY5ZTFiZmQ2NjRiNjZhOGMzZGFkZjE3MjVm
YTQ4ODY5OTM4ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV4ZWNT
dGF0ZSYgc3RhdGUpCiAjZWxzZQogICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0ZW1zID0g
bWVudS5pdGVtcygpOwogI2VuZGlmCi0gICAgaW1wbCgpLnNob3dDb250ZXh0TWVudShldmVudCwg
aXRlbXMpOworICAgIHdyYXBwZWQoKS5zaG93Q29udGV4dE1lbnUoZXZlbnQsIGl0ZW1zKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxMzFlMjg3MGJkYjU5ZDYw
NTM2YTkxMGE3NzFkZDUwNzcyYzA2ZTQ5Li4wMDgzZTBjZjE1OWNjMWY4OTAwY2ZhMThkZDdiNDI1
NWUwOTM0MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wg
SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgRnJh
bWUqIGZyYW1lID0gaW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBKU0xvY2F0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXIKIAogYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
CiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2Vs
bCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3Jp
Z2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3Qt
PmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lKTsKIH0KQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIEpTTG9jYXRpb246OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcAog
ewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwp
OwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdp
bi4KLSAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCkuZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywg
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwogfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgSlNMb2NhdGlvbjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5CiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4o
b2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSBsb2NhdGlvbiBvYmplY3QgdG8gZW51bWVy
YXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dB
Y2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAo
IXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJh
bWUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtMTM0LDExICsxMzQs
MTEgQEAgYm9vbCBKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIAogSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0
cmluZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1w
bCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSB8fCAhc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKCZzdGF0ZSwgZnJhbWUpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZSgmc3RhdGUsIGltcGwoKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoJnN0YXRlLCB3cmFwcGVkKCkudG9TdHJpbmcoKSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlv
blByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAppbmRl
eCA4MDE4YjI2MzNiNzhlOWNlMWRlMjkxMzNkOWQ5NGU2NzAyZWEzNTFlLi43NWU5Y2FiYmMzODk3
ZTE2MDFlZDZjNjUzYzQ1ZjljYjVmMjUyNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcApAQCAtMzcsNTQg
KzM3LDU0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3Rh
dGVzOjp3aWR0aChFeGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmICghaW1wbCgpLmhhc1ZpZGVv
U291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLndpZHRo
KCkpOworICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkud2lkdGgoKSk7CiB9CiAKIEpTVmFs
dWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6aGVpZ2h0KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAg
aWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRl
b1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICByZXR1
cm4ganNOdW1iZXIoaW1wbCgpLmhlaWdodCgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBl
ZCgpLmhlaWdodCgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJh
dGUoRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgp
KQorICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuZnJhbWVSYXRl
KCkpOworICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkuZnJhbWVSYXRlKCkpOwogfQogCiBK
U1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmFzcGVjdFJhdGlvKEV4ZWNTdGF0ZSYpIGNvbnN0
CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQo
KS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAK
LSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLmFzcGVjdFJhdGlvKCkpOworICAgIHJldHVybiBq
c051bWJlcih3cmFwcGVkKCkuYXNwZWN0UmF0aW8oKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNv
dXJjZVN0YXRlczo6ZmFjaW5nTW9kZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIGlm
ICghaW1wbCgpLmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9T
b3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG1vZGUgPSBpbXBsKCkuZmFjaW5nTW9kZSgpOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbW9kZSA9IHdyYXBwZWQoKS5mYWNpbmdNb2RlKCk7CiAgICAgaWYgKG1vZGUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbXBsKCkuZmFjaW5nTW9kZSgpKTsKKyAgICByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB3cmFwcGVkKCkuZmFjaW5nTW9kZSgpKTsKIH0KIAog
SlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp2b2x1bWUoRXhlY1N0YXRlJikgY29uc3QKIHsK
LSAgICBpZiAoaW1wbCgpLmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYgKHdyYXBwZWQoKS5oYXNW
aWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICBy
ZXR1cm4ganNOdW1iZXIoaW1wbCgpLnZvbHVtZSgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3Jh
cHBlZCgpLnZvbHVtZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcApp
bmRleCAwMTk2NWU0YjQyNzI2NmZmZDI3ODljOGI5YjI4NDhhOWFlMmRhODdhLi4zNzVkZDRiNWYw
MzYzOTNmYWJlZmMzMzg4NzdhNjdiZWUyN2ZiYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcApAQCAtMzUsMTAgKzM1
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU01lc3NhZ2VDaGFubmVsOjp2aXNp
dEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlm
IChNZXNzYWdlUG9ydCogcG9ydCA9IGltcGwoKS5wb3J0MSgpKQorICAgIGlmIChNZXNzYWdlUG9y
dCogcG9ydCA9IHdyYXBwZWQoKS5wb3J0MSgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJv
b3QocG9ydCk7CiAKLSAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCkucG9ydDIoKSkK
KyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB3cmFwcGVkKCkucG9ydDIoKSkKICAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNDRkOTU0N2Y2NzZl
OTg1NmU5ZDVhNDFiNDc0MjUyM2Q0YzcyMTUzMy4uYjU1ZGM0ZWEyNTI0NDAyZTViZTRhODJkMjI1
NjYxMDBmNjIzMWM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCBKU1ZhbHVlIEpTTWVzc2Fn
ZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KIAotICAgIE1lc3NhZ2VFdmVudCYgZXZlbnQgPSBpbXBsKCk7Cisg
ICAgTWVzc2FnZUV2ZW50JiBldmVudCA9IHdyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdDsK
ICAgICBzd2l0Y2ggKGV2ZW50LmRhdGFUeXBlKCkpIHsKICAgICBjYXNlIE1lc3NhZ2VFdmVudDo6
RGF0YVR5cGVTY3JpcHRWYWx1ZTogewpAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVlIEpTTWVzc2Fn
ZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKICAgICBjYXNlIE1lc3NhZ2VF
dmVudDo6RGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWU6CiAgICAgICAgIGlmIChSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBldmVudC5kYXRhQXNTZXJp
YWxpemVkU2NyaXB0VmFsdWUoKSkgewotICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0
cyA9IGltcGwoKS5wb3J0cygpOworICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0cyA9
IHdyYXBwZWQoKS5wb3J0cygpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdoeSBkb2VzIHRoaXMg
c3VwcHJlc3MgZXhjZXB0aW9ucz8KICAgICAgICAgICAgIHJlc3VsdCA9IHNlcmlhbGl6ZWRWYWx1
ZS0+ZGVzZXJpYWxpemUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgJnBvcnRzLCBOb25UaHJvd2lu
Zyk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFs
dWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01lc3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpF
eGVjU3RhCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAotICAgIE1lc3NhZ2VFdmVudCYgZXZlbnQgPSBqc0V2ZW50LT5pbXBsKCk7
CisgICAgTWVzc2FnZUV2ZW50JiBldmVudCA9IGpzRXZlbnQtPndyYXBwZWQoKTsKICAgICBldmVu
dC5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywg
ZGF0YUFyZywgb3JpZ2luQXJnLCBsYXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCBXVEY6Om1vdmUo
bWVzc2FnZVBvcnRzKSk7CiAgICAganNFdmVudC0+bV9kYXRhLnNldChzdGF0ZS52bSgpLCBqc0V2
ZW50LCBkYXRhQXJnLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmlu
ZGV4IDIzOWY0N2FmZDZkYTVlYmU1MTkwZTdjYmI1OTNlMzNiZWJmOTFlMWYuLjZiMjEyNDQ5ODc1
ZTc4ZThjYmJkZDcyZmMyM2QwZjY5YjgzOTY5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00OCwxMyArNDgsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdEFkZGl0aW9uYWxD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgbG9j
YWxseSBlbnRhbmdsZWQgcG9ydCwgd2UgY2FuIGRpcmVjdGx5IG1hcmsgaXQgYXMgcmVhY2hhYmxl
LiBQb3J0cyB0aGF0IGFyZSByZW1vdGVseSBlbnRhbmdsZWQgYXJlIG1hcmtlZCBpbi11c2UgYnkg
bWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KCkuCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0
ID0gaW1wbCgpLmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkpCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBw
b3J0ID0gd3JhcHBlZCgpLmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkpCiAgICAgICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIAogSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBv
c3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9z
dE1lc3NhZ2Uoc3RhdGUsICZpbXBsKCkpOworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShz
dGF0ZSwgJndyYXBwZWQoKSk7CiB9CiAKIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBv
cnRBcnJheSwgQXJyYXlCdWZmZXJBcnJheSYgYXJyYXlCdWZmZXJzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0N1c3RvbS5jcHAKaW5kZXggYzQ2OGFhZDZhNjE0ZTQ5ZjJhN2ZjOTkyMmVjMmJhZDI0MjQy
ZWM1ZC4uZGVhYmM1NDFkYjA2ZjEwOWU0ZDBiZmM2YzcxOTQwOWI1MTg5YjlmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIERlY2lzaW9u
UG9pbnQgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OwogCiBKU1Zh
bHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb25Qb2ludChFeGVjU3RhdGUm
KSBjb25zdAogewotICAgIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCA9IGltcGwoKS5kZWNp
c2lvblBvaW50KCk7CisgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50ID0gd3JhcHBlZCgp
LmRlY2lzaW9uUG9pbnQoKTsKICAgICBzd2l0Y2ggKGRlY2lzaW9uUG9pbnQpIHsKICAgICBjYXNl
IERlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0OgogICAgIGNhc2UgRGVjaXNpb25Q
b2ludDo6QWZ0ZXJSZWRpcmVjdDoKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWwKICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YToKICAgICBjYXNlIERl
Y2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhOgogICAgIGNhc2UgRGVjaXNpb25Q
b2ludDo6TmV2ZXI6Ci0gICAgICAgIGltcGwoKS5zZXREZWNpc2lvblBvaW50KGRlY2lzaW9uUG9p
bnQpOworICAgICAgICB3cmFwcGVkKCkuc2V0RGVjaXNpb25Qb2ludChkZWNpc2lvblBvaW50KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBpbmxp
bmUgRGVjaXNpb24gdG9EZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
CiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb24oRXhlY1N0YXRl
JikgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KU1ZhbHVlKGltcGwoKS5kZWNpc2lvbigpKTsKKyAg
ICByZXR1cm4gdG9KU1ZhbHVlKHdyYXBwZWQoKS5kZWNpc2lvbigpKTsKIH0KIAogdm9pZCBKU01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCkBAIC0xMTYsMTIgKzExNiwxMiBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlt
cGwoKS5zZXREZWNpc2lvbihkZWNpc2lvbik7CisgICAgd3JhcHBlZCgpLnNldERlY2lzaW9uKGRl
Y2lzaW9uKTsKIH0KIAogSlNWYWx1ZSBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oRXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KU1Zh
bHVlKGltcGwoKS51bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkpOworICAgIHJldHVybiB0b0pTVmFs
dWUod3JhcHBlZCgpLnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSk7CiB9CiAKIHZvaWQgSlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRXhlY1N0YXRl
JiBzdGF0ZSwgSlMKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGltcGwoKS5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24pOworICAgIHdyYXBwZWQoKS5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24pOwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3Rv
bS5jcHAKaW5kZXggMzgwNTU3MjQ3MjAyNmIyYTQ4ZDQyMzM2YTZjYjA5ZDQ4YmRhNmI4NS4uYzZj
NTcyNDAzYWU2Yjc4MzI0NjJlMDYxYjZjMzI2MTMyNDQzMjdkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBA
IC02Myw3ICs2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNN
dXRhdGlvbk9ic2VydmVyKEV4ZWNTdGF0ZSogZXhlYykKIAogYm9vbCBKU011dGF0aW9uT2JzZXJ2
ZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBNdXRhdGlv
bk9ic2VydmVyJiBvYnNlcnZlciA9IGpzQ2FzdDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSktPmltcGwoKTsKKyAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZl
ciA9IGpzQ2FzdDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSkt
PndyYXBwZWQoKTsKICAgICBhdXRvIG9ic2VydmVkTm9kZXMgPSBvYnNlcnZlci5nZXRPYnNlcnZl
ZE5vZGVzKCk7CiAgICAgZm9yIChhdXRvIGl0ID0gb2JzZXJ2ZWROb2Rlcy5iZWdpbigpLCBlbmQg
PSBvYnNlcnZlZE5vZGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKHZp
c2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoKml0KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggODQ2Y2Y4ZmFh
OGM1MTFlZjgyMTUxNzAxYjRhMDA4YmFmYTFiZmNkMS4uYTMxZTQ2YTg0MzIxOGM5ODZhODQxMmE0
ODA3NmYwOTg5YmI4NDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGJvb2wgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRv
IGl0ZW0gPSBpbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5nZXROYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAzZDVmZTEyNDg2NDg2MzRhNjRhMWQ4OTc1YzRh
YzFiYzNkMWJkOWI4Li5mMjRjMDU1ZmM4OWI5ZGU3YjlhNTVjNGU2MGU0OTA3MmNhZDk1NmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3Bw
CkBAIC02OCwxMyArNjgsMTMgQEAgSlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1l
ZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IH0KIAotICAgIGlmICghaW1wbCgpLmZyYW1lKCkpIHsKKyAgICBpZiAoIXdyYXBwZWQoKS5mcmFt
ZSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJS
KTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgLy8gV2UgZG8g
bm90IG5lZWQgdG8gcHJvdGVjdCB0aGUgY29udGV4dCAoaS5lLiBkb2N1bWVudCkgaGVyZSBhcyBV
c2VyTWVkaWFSZXF1ZXN0IGlzIG9ic2VydmluZyBjb250ZXh0IGRlc3RydWN0aW9uIGFuZCB3aWxs
IGNoZWNrIHZhbGlkaXR5IGJlZm9yZSByZXNvbHZpbmcvcmVqZWN0aW5nIHByb21pc2UuCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gd3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAgICBS
ZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8gcmVz
b2x2ZUNhbGxiYWNrID0gW3N1Y2Nlc3NDYWxsYmFjaywgZG9jdW1lbnRdKGNvbnN0IFJlZlB0cjxN
ZWRpYVN0cmVhbT4mIHN0cmVhbSkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAyYzFhOWY4MzBlMzUyNzE1NWE2Y2YzN2Q2NzdkY2Iy
MDJkMTM2Y2U4Li4zMTIzYzk0NjA5NTRlYmRiMzVkMjI4Zjk4ZDk2MWNmNDdmYzNmMjY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTEwOCwxMyAr
MTA4LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21ET00oTm9kZSogbm9k
ZSwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiBib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTm9kZSoganNOb2RlID0ganNDYXN0PEpTTm9k
ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICByZXR1cm4gaXNSZWFjaGFibGVGcm9t
RE9NKCZqc05vZGUtPmltcGwoKSwgdmlzaXRvcik7CisgICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJv
bURPTSgmanNOb2RlLT53cmFwcGVkKCksIHZpc2l0b3IpOwogfQogCiBKU1ZhbHVlIEpTTm9kZTo6
aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgYm9vbCBvayA9IGltcGwoKS5pbnNlcnRCZWZvcmUoSlNOb2RlOjp0b1dyYXBwZWQo
c3RhdGUuYXJndW1lbnQoMCkpLCBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgxKSks
IGVjKTsKKyAgICBib29sIG9rID0gd3JhcHBlZCgpLmluc2VydEJlZm9yZShKU05vZGU6OnRvV3Jh
cHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50
KDEpKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICBpZiAob2sp
CiAgICAgICAgIHJldHVybiBzdGF0ZS5hcmd1bWVudCgwKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBK
U1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpT
Tm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgYm9vbCBvayA9IGltcGwoKS5yZXBsYWNlQ2hpbGQoSlNOb2RlOjp0b1dy
YXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVu
dCgxKSksIGVjKTsKKyAgICBib29sIG9rID0gd3JhcHBlZCgpLnJlcGxhY2VDaGlsZChKU05vZGU6
OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFy
Z3VtZW50KDEpKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICBp
ZiAob2spCiAgICAgICAgIHJldHVybiBzdGF0ZS5hcmd1bWVudCgxKTsKQEAgLTEzNCw3ICsxMzQs
NyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1Zh
bHVlIEpTTm9kZTo6cmVtb3ZlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLnJlbW92ZUNoaWxkKEpTTm9kZTo6
dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVk
KCkucmVtb3ZlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAg
cmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEpTVmFsdWUgSlNO
b2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU05vZGU6OmFwcGVu
ZENoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgYm9vbCBvayA9IGltcGwoKS5hcHBlbmRDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5h
cmd1bWVudCgwKSksIGVjKTsKKyAgICBib29sIG9rID0gd3JhcHBlZCgpLmFwcGVuZENoaWxkKEpT
Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKICAgICBpZiAob2spCiAgICAgICAgIHJldHVybiBzdGF0ZS5hcmd1
bWVudCgwKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1Njb3BlKiBKU05vZGU6OnB1c2hFdmVudEhh
bmRsZXJTY29wZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIG5vZGUpIGNvbnN0CiAKIHZvaWQg
SlNOb2RlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkpKTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBjcmVhdGVXcmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAppbmRleCAyYjQwNDBlM2Q5NmYx
NjdlODY1YjY2ODA1YWYzZDk5YTAzYjQzMDhmLi5iM2YwMzYxMzlmYTBmYjE4MDY0ODRhNjEwZDg0
YWM1YWM1N2NhNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlSXRlcmF0b3JDdXN0b20uY3BwCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gaW1w
bCgpLmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB3cmFwcGVkKCkuZmls
dGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCmluZGV4IGY3
ZDg2M2I4ZTM5NWRiZmNmMTEzY2M2ODZiMzVmNDY4NzRkNTAwYTIuLmJhMDYyYmVhMjliNDYwM2Q0
YjcxOWJjZDc3ZmI2ZjI3MWUzMWQwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgYm9vbCBKU05vZGVM
aXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGwKICAgICBKU05vZGVMaXN0KiBqc05vZGVMaXN0ID0ganNDYXN0PEpTTm9kZUxp
c3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgaWYgKCFqc05vZGVMaXN0LT5oYXND
dXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoanNOb2Rl
TGlzdC0+aW1wbCgpLmlzTGl2ZU5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNpdG9yLmNv
bnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxp
c3QtPmltcGwoKSkub3duZXJOb2RlKCkpKTsKLSAgICBpZiAoanNOb2RlTGlzdC0+aW1wbCgpLmlz
Q2hpbGROb2RlTGlzdCgpKQotICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJv
b3Qocm9vdChzdGF0aWNfY2FzdDxDaGlsZE5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5v
d25lck5vZGUoKSkpOwotICAgIGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNFbXB0eU5vZGVMaXN0
KCkpCi0gICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRp
Y19jYXN0PEVtcHR5Tm9kZUxpc3QmPihqc05vZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7
CisgICAgaWYgKGpzTm9kZUxpc3QtPndyYXBwZWQoKS5pc0xpdmVOb2RlTGlzdCgpKQorICAgICAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxMaXZl
Tm9kZUxpc3QmPihqc05vZGVMaXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CisgICAgaWYg
KGpzTm9kZUxpc3QtPndyYXBwZWQoKS5pc0NoaWxkTm9kZUxpc3QoKSkKKyAgICAgICAgcmV0dXJu
IHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8Q2hpbGROb2RlTGlz
dCY+KGpzTm9kZUxpc3QtPndyYXBwZWQoKSkub3duZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2Rl
TGlzdC0+d3JhcHBlZCgpLmlzRW1wdHlOb2RlTGlzdCgpKQorICAgICAgICByZXR1cm4gdmlzaXRv
ci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxFbXB0eU5vZGVMaXN0Jj4oanNO
b2RlTGlzdC0+d3JhcHBlZCgpKS5vd25lck5vZGUoKSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCmluZGV4
IDM0MzYxYWY0OTZhOGRjOTdlYzdiMzQ2YTVjMDQzZDk2ZmNkYmI5NWYuLjQ0N2M1ZDcwMGQ1NjUx
ZWFkZjE0MDRiZDNhN2IxZjQ4NjExMzMyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVPclN0cmluZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgVmVjdG9yPE5vZGVPclN0
cmluZz4gdG9Ob2RlT3JTdHJpbmdWZWN0b3IoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoaSk7CiAgICAgICAgIGlmIChhdXRvKiBub2Rl
ID0ganNEeW5hbWljQ2FzdDxKU05vZGUqPih2YWx1ZSkpCi0gICAgICAgICAgICByZXN1bHQudW5j
aGVja2VkQXBwZW5kKCZub2RlLT5pbXBsKCkpOworICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZCgmbm9kZS0+d3JhcHBlZCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBT
dHJpbmcgc3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICAgICAgICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKaW5kZXggOThjODgxNDlmMzllMmIwY2Jh
ODFkMzUyZTViOWJkYjI5MDVjYjI5Ny4uM2FkZjgwMjI1YzQzYmZiM2RkYjU2N2IxNjk1Y2FlN2Qw
MjZiZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxh
dG9yTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2Np
bGxhdG9yTm9kZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2b2lkIEpTT3NjaWxsYXRvck5vZGU6OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBPc2NpbGxhdG9yTm9kZSYgaW1wID0gaW1wbCgpOworICAgIE9z
Y2lsbGF0b3JOb2RlJiBpbXAgPSB3cmFwcGVkKCk7CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9B
VURJTykKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKaW5kZXggODZjMDNlZDNmYjg5MjU5
YWNmOThjZTMzMmE2OTI0Mjg3ZWUzYjAxZC4uNjc5MGY4NGE3Y2VlOWYxNjYxMjZjZjY0MTQ1MGMx
YjQzNDY4NDM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5u
ZXJOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5l
ck5vZGVDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIFBhbm5lck5vZGUmIGltcCA9IGltcGwoKTsKKyAgICBQYW5uZXJO
b2RlJiBpbXAgPSB3cmFwcGVkKCk7CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKICAg
ICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEpTUGFubmVy
Tm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAK
IHZvaWQgSlNQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgUGFubmVyTm9kZSYgaW1wID0gaW1wbCgpOworICAgIFBhbm5l
ck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQog
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCBjNmY2MWViYjU0
MzFiNzA0NjljNGQ3ZjBkYjY1YjRkYzg0ZGE5MGNhLi44MzBjMzA1NTg4NDFjMDIyMmJkZjJkODgx
M2VkZDdiMjE3OTA1ZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGlj
IEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoSFRNTFBsdWdJ
bkVsZW1lbnQmIHBsdWdpbkUKIAogc3RhdGljIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3RG
cm9tUGx1Z2luVmlld0Jhc2UoSlNIVE1MRWxlbWVudCoganNIVE1MRWxlbWVudCkKIHsKLSAgICBI
VE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRWxl
bWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1lbnQtPndyYXBwZWQoKTsKICAgICBpZiAoIWlzPEhU
TUxQbHVnSW5FbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTY3LDcgKzY3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1
Z2luVmlld0Jhc2UoSlNIVE1MRWxlbWVudCoganNIVE1MRWxlbWUKIAogSlNPYmplY3QqIHBsdWdp
blNjcmlwdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEVsZW1lbnQqIGpzSFRNTEVsZW1l
bnQpCiB7Ci0gICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBqc0hUTUxFbGVtZW50LT5pbXBsKCk7
CisgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBqc0hUTUxFbGVtZW50LT53cmFwcGVkKCk7CiAg
ICAgaWYgKCFpczxIVE1MUGx1Z0luRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC0xNjUsNyArMTY1LDcgQEAgQ2FsbFR5cGUgcGx1Z2luRWxlbWVudEdldENh
bGxEYXRhKEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICAg
ICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKICAgICB9CiAgICAgCi0gICAgSW5zdGFuY2UqIGluc3Rh
bmNlID0gcGx1Z2luSW5zdGFuY2UoZWxlbWVudC0+aW1wbCgpKTsKKyAgICBJbnN0YW5jZSogaW5z
dGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT53cmFwcGVkKCkpOwogICAgIGlmICghaW5z
dGFuY2UgfHwgIWluc3RhbmNlLT5zdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSkKICAgICAg
ICAgcmV0dXJuIENhbGxUeXBlTm9uZTsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
YWxsUGx1Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3Rh
dGVFdmVudEN1c3RvbS5jcHAKaW5kZXggNWY4NjlhOTEyZTA2NmU0OWI1MmVlOGEwZjE0YmY2NDc1
ZGEyYThhOC4uOTVhMGZiNzgyNWNiMzA2YjA0OGJjNzgzY2ZmMWM2YjlhMTE3YjIxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20u
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgSlNQb3BTdGF0ZUV2ZW50OjpzdGF0ZShFeGVj
U3RhdGUmIHN0YXRlKSBjb25zdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKLSAgICBQb3BTdGF0ZUV2ZW50JiBldmVudCA9IGltcGwoKTsKKyAgICBQb3BTdGF0ZUV2ZW50
JiBldmVudCA9IHdyYXBwZWQoKTsKIAogICAgIGlmICghZXZlbnQuc3RhdGUoKS5oYXNOb1ZhbHVl
KCkpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgYSBQb3BTdGF0ZUV2ZW50IGRv
ZXMgbm90IGxlYWsgb2JqZWN0cyBpbiBpdHMgc3RhdGUgcHJvcGVydHkgYWNyb3NzIGlzb2xhdGVk
IERPTSB3b3JsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JU
Q1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
VENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcAppbmRleCA5ZWY1ZTkzZWQxY2U1YWZhYmJkOWFkY2Iw
ZGNiNmEzOGI0ZjRhZDExLi40MGU1YjkwY2MyN2U4YzRlMTMzMDAyYjYyZDhhMTE4YTAxNzQ1N2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9u
c2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDU3RhdHNS
ZXNwb25zZUN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBib29sIEpTUlRDU3RhdHNSZXNwb25zZTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRl
bSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
UUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggYjMzNjRkMjY0NTE0NTI2YjU3
YmZlZTBlZDE4ZGY1ZDZkMDQwYzgyNC4uM2VhZWYyNjEyNWJmYWI4ZjdkNTJhNTIxMzYwMmRmMGYz
MWZlMjlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC00NywxNyArNDcsMTcgQEAgSlNWYWx1
ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9Ci0gICAgaWYgKGluZGV4IDwgMCB8fCAodW5zaWduZWQp
aW5kZXggPj0gaW1wbCgpLmxlbmd0aCgpKSB7CisgICAgaWYgKGluZGV4IDwgMCB8fCAodW5zaWdu
ZWQpaW5kZXggPj0gd3JhcHBlZCgpLmxlbmd0aCgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIElOREVYX1NJWkVfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgfQogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZz
dGF0ZSk7CiAKLSAgICB1bnNpZ25lZCBudW1Db2x1bW5zID0gaW1wbCgpLmNvbHVtbk5hbWVzKCku
c2l6ZSgpOworICAgIHVuc2lnbmVkIG51bUNvbHVtbnMgPSB3cmFwcGVkKCkuY29sdW1uTmFtZXMo
KS5zaXplKCk7CiAgICAgdW5zaWduZWQgdmFsdWVzSW5kZXggPSBpbmRleCAqIG51bUNvbHVtbnM7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNvbHVtbnM7IGkrKykgewotICAgICAg
ICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSBpbXBsKCkudmFsdWVzKClbdmFsdWVzSW5kZXggKyBp
XTsKKyAgICAgICAgY29uc3QgU1FMVmFsdWUmIHZhbHVlID0gd3JhcHBlZCgpLnZhbHVlcygpW3Zh
bHVlc0luZGV4ICsgaV07CiAgICAgICAgIEpTVmFsdWUganNWYWx1ZTsKIAogICAgICAgICBzd2l0
Y2ggKHZhbHVlLnR5cGUoKSkgewpAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0
U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0
ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgaW1wbCgpLmNvbHVtbk5hbWVz
KClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3Qt
PnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgd3Jh
cHBlZCgpLmNvbHVtbk5hbWVzKClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OwogICAgIH0KIAogICAgIHJldHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4IDk1YThkZmNlODVh
MzI2YmIzMTViMGRmMmJlZjFlODQ0MGJhMTUxZmYuLjc0MjEyNTZiMDQ2YThkNzI2OGUyMzY3ZGMy
ZTEzY2ZhYWMyMjQzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSlNWYWx1ZSBK
U1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmV4ZWN1dGVTUUwoc3FsU3RhdGVt
ZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNl
KCksIGVjKTsKKyAgICB3cmFwcGVkKCkuZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVl
cywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3Bw
CmluZGV4IGI2ZjBjZjgzNjE1ZjcxZTY1NTg4Y2UzZGUzZmNiYmFkZDE1YjZlZGUuLjY0ZTExMjg0
NmY4N2UyNmJhNDVmNDAzMTMwNjgzYzg0YjBiYWE3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAKQEAgLTMzLDkgKzMzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjp2YWx1ZShFeGVjU3RhdGUm
IHN0YXRlKSBjb25zdAogewotICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLnByb3BlcnR5
UmVmZXJlbmNlKCk7CisgICAgU1ZHTGVuZ3RoJiBwb2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlS
ZWZlcmVuY2UoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVkdMZW5ndGhDb250
ZXh0IGxlbmd0aENvbnRleHQoaW1wbCgpLmNvbnRleHRFbGVtZW50KCkpOworICAgIFNWR0xlbmd0
aENvbnRleHQgbGVuZ3RoQ29udGV4dCh3cmFwcGVkKCkuY29udGV4dEVsZW1lbnQoKSk7CiAgICAg
ZmxvYXQgdmFsdWUgPSBwb2RJbXAudmFsdWUobGVuZ3RoQ29udGV4dCwgZWMpOwogICAgIGlmIChl
YykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CkBAIC00Nyw3ICs0Nyw3
IEBAIEpTVmFsdWUgSlNTVkdMZW5ndGg6OnZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAK
IHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgaWYgKGltcGwoKS5pc1JlYWRPbmx5KCkpIHsKKyAgICBpZiAod3JhcHBlZCgp
LmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT19NT0RJ
RklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTcsMjcg
KzU3LDI3IEBAIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdMZW5ndGgmIHBv
ZEltcCA9IGltcGwoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOworICAgIFNWR0xlbmd0aCYgcG9kSW1w
ID0gd3JhcHBlZCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoaW1wbCgpLmNvbnRleHRF
bGVtZW50KCkpOworICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh3cmFwcGVkKCku
Y29udGV4dEVsZW1lbnQoKSk7CiAgICAgcG9kSW1wLnNldFZhbHVlKHZhbHVlLnRvRmxvYXQoJnN0
YXRlKSwgbGVuZ3RoQ29udGV4dCwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbXBs
KCkuY29tbWl0Q2hhbmdlKCk7CisgICAgd3JhcHBlZCgpLmNvbW1pdENoYW5nZSgpOwogfQogCiBK
U1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3RhdGUmIHN0
YXRlKQogewotICAgIGlmIChpbXBsKCkuaXNSZWFkT25seSgpKSB7CisgICAgaWYgKHdyYXBwZWQo
KS5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9fTU9E
SUZJQ0FUSU9OX0FMTE9XRURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogCi0gICAgU1ZHTGVuZ3RoJiBwb2RJbXAgPSBpbXBsKCkucHJvcGVydHlSZWZlcmVuY2Uo
KTsKKyAgICBTVkdMZW5ndGgmIHBvZEltcCA9IHdyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgp
OwogCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CkBAIC04NywxNCArODcsMTQgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6
Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVkdMZW5n
dGhDb250ZXh0IGxlbmd0aENvbnRleHQoaW1wbCgpLmNvbnRleHRFbGVtZW50KCkpOworICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh3cmFwcGVkKCkuY29udGV4dEVsZW1lbnQoKSk7
CiAgICAgcG9kSW1wLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCBsZW5ndGhDb250
ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaW1wbCgp
LmNvbW1pdENoYW5nZSgpOworICAgIHdyYXBwZWQoKS5jb21taXRDaGFuZ2UoKTsKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggNTg1ZDcyNDdiNjFiYTA5MGQ0MWQwODYxNmU1MmYyNTEw
ZTNmNGQzZi4uYjg0MjM0YjE3ZTViMWI0NjUxMGIwZWU1Y2UyMjU5YzIxMDlhYWEzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC00MSw3
ICs0MSw3IEBAIGJvb2wgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgU3RyaW5nIGl0ZW0gPSBpbXBsKCkuZ2V0
SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBlYyk7CisgICAgU3RyaW5n
IGl0ZW0gPSB3cmFwcGVkKCkuZ2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIGlmIChpdGVt
LmlzTnVsbCgpKQpAQCAtNjksNyArNjksNyBAQCBib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogICAg
ICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHRoaXNPYmplY3QtPmlt
cGwoKS5yZW1vdmVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsK
KyAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkucmVtb3ZlSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgzLDEyICs4MywxMiBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TgogewogICAgIEpTU3RvcmFnZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0b3JhZ2UqPihv
YmplY3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoZWMpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRo
aXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+aW1w
bCgpLmtleShpLCBlYykpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkua2V5KGksIGVjKSkpOwogICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBK
U1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGltcGwoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3Bl
cnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CisgICAgd3JhcHBlZCgpLnNldEl0ZW0ocHJvcGVy
dHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRleCAwYTY5YTJl
NmZkMjNjMjk4M2Y3OThmNGQwNWYyNjE3MTcxYWY2MzQwLi5jYjkzOTdlZjdkMzFkOTZlMDY1YzAy
ZjRmNDkwN2M2MTRjM2U4MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgm
aW1wbCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwog
fQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCmluZGV4IGQx
YzYwNjVhOTc1ODBmMjk3ZTZlYzI0N2JmZmY4MTc0Yjg5OTU2YzEuLmM0MjIyYTllMzRhZjI2NTU1
OGJlZWVlN2U4NTEyYzM1NjIxMTVmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJv
b2wgSlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTCiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvKiBpdGVtID0gaW1wbCgpLmdldE5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvKiBpdGVt
ID0gd3JhcHBlZCgpLmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4
IGY1YmE0ZDMwMjljZDY4OGY5MzVlZmUzMGI3OWQ3OWJlMjIzNDdmMjkuLmE1MGY4Mzk5YmE1ODY0
ZDAxYWIxMzBjOGZjZDUxZGU0ZWJkZWU2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBK
U1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhD
cnlwdG9LZXlVc2FnZUVuY3J5cHQpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVND
SUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdlbmNyeXB0JyIpKTsKKyAgICAg
ICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90
IGluY2x1ZGUgJ2VuY3J5cHQnIikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBO
T1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0K
QEAgLTIwNSw3ICsyMDUsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpkZWNyeXB0KEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAg
ICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZURlY3J5cHQpKSB7Ci0gICAgICAgIGlt
cGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRl
ICdkZWNyeXB0JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVy
YWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOwogICAgICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTI1Nyw3ICsyNTcsNyBAQCBKU1ZhbHVlIEpTU3VidGxl
Q3J5cHRvOjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVNpZ24p
KSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2Vz
IGRvIG5vdCBpbmNsdWRlICdzaWduJyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOwogICAg
ICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTMwOSw3ICszMDksNyBAQCBKU1ZhbHVl
IEpTU3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tl
eVVzYWdlVmVyaWZ5KSkgewotICAgICAgICBpbXBsKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKKyAgICAgICAgd3JhcHBl
ZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUg
J3ZlcmlmeSciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JU
RURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtNjQ2LDcg
KzY0Niw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0
ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIXdy
YXBwaW5nS2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VXcmFwS2V5KSkgewotICAgICAgICBpbXBs
KCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAn
d3JhcEtleSciKSk7CisgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFs
KCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICB9CkBAIC03MjgsNyArNzI4LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNy
eXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCF1bndyYXBwaW5nS2V5LT5hbGxvd3MoQ3J5cHRv
S2V5VXNhZ2VVbndyYXBLZXkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlM
aXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOworICAgICAg
ICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3Qg
aW5jbHVkZSAndW53cmFwS2V5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
Tk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3Rv
bS5jcHAKaW5kZXggNTdmODhiOTU1Y2Y1ODUxODhjMmE2YmVlNGRmNzc0ZjRmMjk1MWJlZi4uZGVi
NDQwYjNhYmVhYjdiOGZlNDIyMGI3YmFhZDEwMjIwYTQ5N2I4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBib29sIEpTVGV4dFRyYWNrQ3VlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNUZXh0VHJhY2tDdWUqIGpz
VGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3VlKj4oaGFuZGxlLnNsb3QoKS0+YXND
ZWxsKCkpOwotICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3VlID0ganNUZXh0VHJhY2tDdWUt
PmltcGwoKTsKKyAgICBUZXh0VHJhY2tDdWUmIHRleHRUcmFja0N1ZSA9IGpzVGV4dFRyYWNrQ3Vl
LT53cmFwcGVkKCk7CiAKICAgICAvLyBJZiB0aGUgY3VlIGlzIGZpcmluZyBldmVudCBsaXN0ZW5l
cnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCiAgICAgLy8gdGhlIHdyYXBwZXIg
aXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgpAQCAtODQs
NyArODQsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGV4dFRyYWNrQ3VlKiBjdWUpCiAKIHZvaWQgSlNUZXh0VHJhY2tDdWU6OnZp
c2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChU
ZXh0VHJhY2sqIHRleHRUcmFjayA9IGltcGwoKS50cmFjaygpKQorICAgIGlmIChUZXh0VHJhY2sq
IHRleHRUcmFjayA9IHdyYXBwZWQoKS50cmFjaygpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3Qocm9vdCh0ZXh0VHJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCmluZGV4IGViMTlmMjU3ODcxOTlmMWU3MGU5OWFm
N2FkMmZiMDQyN2NlOWY3NWQuLjdmY2U2YWQyYWU1ZDRmMWUxYjMxMjA3ODk1NWVhMGY2ODQwYWNl
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3Rv
bS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTVGV4
dFRyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiB2b2lkIEpTVGV4dFRyYWNrOjpz
ZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC00Nyw3ICs0Nyw3IEBA
IHZvaWQgSlNUZXh0VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3Rh
dGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGltcGwoKS5zZXRLaW5kKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldEtpbmQoc3RyaW5nKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUp
OwpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3Ry
aW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldExhbmd1YWdlKHN0cmluZyk7CisgICAg
d3JhcHBlZCgpLnNldExhbmd1YWdlKHN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCmluZGV4IGUxYjhjNjMwOTky
NjFkMWYyYjlmNWU3YTRmZjVkYjY1MmE5MGE4NTQuLjNmNDZmNDMzMWJiYmU2NjgxMjc3MTE0ZmIz
YjQyZjI0YmZlOWNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSlNUZXh0VHJhY2tMaXN0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChy
b290KGltcGwoKS5lbGVtZW50KCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3
cmFwcGVkKCkuZWxlbWVudCgpKSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCmluZGV4IDk3NTE0
NjcyNGRiMDI2OTA1NDQ0NTg5YWRkOTJmNDFiYjQ1MzA4YzUuLjlhOTQzNmFmODA5YWNmYWI2ZGM1
MDk4ODY4YzZlNTk2ZjgwZGY4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uY3BwCkBAIC00NCwxMSArNDQsMTEgQEAgVHJhY2tCYXNlKiB0b1RyYWNrKEpT
VmFsdWUgdmFsdWUpCiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwog
ICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTVGV4dFRyYWNrOjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gJmpzQ2FzdDxKU1RleHRUcmFjayo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0
dXJuICZqc0Nhc3Q8SlNUZXh0VHJhY2sqPihvYmplY3QpLT53cmFwcGVkKCk7CiAgICAgaWYgKG9i
amVjdC0+aW5oZXJpdHMoSlNBdWRpb1RyYWNrOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpz
Q2FzdDxKU0F1ZGlvVHJhY2sqPihvYmplY3QpLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmanND
YXN0PEpTQXVkaW9UcmFjayo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICBpZiAob2JqZWN0LT5p
bmhlcml0cyhKU1ZpZGVvVHJhY2s6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpT
VmlkZW9UcmFjayo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNW
aWRlb1RyYWNrKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcAppbmRl
eCBmNTFkM2I5NjNjODE4MDNjZmU3MWI5NDdiNDJjOWRiZDAyYmI4NWJlLi5lYWI2ZmYyMTM4YzUz
ZDdlM2ZlYjY0NDliMDZkNzFiM2RmMmU1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTVHJhY2tFdmVudDo6dHJhY2soRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKLSAgICBUcmFja0Jhc2UqIHRyYWNrID0gaW1wbCgpLnRyYWNrKCk7Cisg
ICAgVHJhY2tCYXNlKiB0cmFjayA9IHdyYXBwZWQoKS50cmFjaygpOwogICAgIGlmICghdHJhY2sp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKaW5kZXggYzFlNjgxZDQ5N2I0NGMwYjQ4ZTM3
YTdmZWEwODFiMTJkMGZjMzVkNy4uMmJlMDhhOTkxZjdkZDE0ZWY5YTJhNjJkMThmMzFkOWNmMTcx
NTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2Vy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJD
dXN0b20uY3BwCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBK
U1RyZWVXYWxrZXI6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRlciA9IGltcGwoKS5maWx0ZXIoKSkK
KyAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gd3JhcHBlZCgpLmZpbHRlcigpKQogICAgICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZUN1c3RvbS5jcHAKaW5kZXggOGZjNmVmOGZiMzBkMjBiMzliZDA5OGUyZjE5MzA1OTJm
ZjQyOGFmYi4uYWRmNDkzNjQ3M2I0MjNkYzEyZGVjN2FkODBkYmY3MjBhYjNlYTlkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6Omdl
dE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChVc2VyTWVzc2FnZUhh
bmRsZXIqIGhhbmRsZXIgPSBpbXBsKCkuaGFuZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSkpIHsKKyAgICBpZiAoVXNl
ck1lc3NhZ2VIYW5kbGVyKiBoYW5kbGVyID0gd3JhcHBlZCgpLmhhbmRsZXIocHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkpKSB7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9u
dEVudW0sIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGhhbmRsZXIpKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5jcHAKaW5kZXggNmYwYWY1YWY1YThlYTFlMWVhN2U1ZmUxOTFlMGM4MDdj
MjA0MWU5MC4uZDgyOGUxMmZhMGM2MmUwODNiMDM2YjljNzQzZjA0MGU0YzY3ZjhhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1ZpZGVvVHJhY2s6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIHZvaWQgSlNWaWRlb1RyYWNrOjpzZXRLaW5k
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQg
SlNWaWRlb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAg
ICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBs
KCkuc2V0S2luZChzdHJpbmcpOworICAgIHdyYXBwZWQoKS5zZXRLaW5kKHN0cmluZyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAg
LTU5LDcgKzU5LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmco
JnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKKyAgICB3cmFw
cGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAppbmRleCA2NmQ3YmVhM2UwMGUw
ZGUzYWYwMTgxNWRhNmI5MjFkZWRkYmMxMzE0Li5hMmEzNjE4NGE0ZWVkNDk1NTI5NWExZTU4Nzdi
OWRlNDAxZTY2MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qo
aW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBw
ZWQoKS5lbGVtZW50KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggOTlmZjcwM2M0NjQ5YTYzMDRlNjg4YmZkYTAxZTZmOGIxMGZj
ZjQ2Yi4uN2M0ZWMwODE4NzgxYzg3MjFlY2ZiZDc1NTBmZDYxNjgxYmYyYTExMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBX
ZWJHCiAKIHZvaWQgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
JmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZ3cmFwcGVkKCkpOwogfQogCiBK
U1ZhbHVlIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0
ZXIoRXhlY1N0YXRlKiBleGVjKQpAQCAtOTksNyArOTksNyBAQCBKU1ZhbHVlIEpTV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSAyKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVj
KSk7CiAKLSAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0ID0gaW1wbCgpOworICAg
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWdu
ZWQgcG5hbWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAppbmRleCA0ZTRlNWNhOThmYzE0OTAyYTJj
YzAwMGI2YWIwNjM4OTBhMjFiMTY1Li44MzFjZjU5MWVkN2QwOGU5YTA4ZTE2NDJhOTVhMzFjNDY2
MWZkYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKQEAgLTE3NCw3ICsxNzQs
NyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRPYmplY3RQYXJhbWV0ZXIoSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiBvYmosIEV4ZWNTdGF0ZSYgcwogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPmltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0ID0gb2JqLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0
ID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChz
dGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0y
NjUsNyArMjY1LDcgQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KIAogdm9pZCBKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3QoJndyYXBwZWQoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKQEAg
LTI3Myw3ICsyNzMsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9
IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBl
ZCgpOwogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBw
ZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CkBAIC0yOTYsNyArMjk2LDcgQEAgSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVuc2lvbihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gc3Rh
dGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogICAgIAotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdy
YXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcgbmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMxNSw3ICszMTUs
NyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKEV4ZWNTdGF0ZQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMzOSw3ICszMzks
NyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVyKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
ID0gd3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMCkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0zNTcsNyArMzU3LDcgQEAgSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFw
cGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3Jh
cHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTM4Myw3ICszODMsNyBAQCBKU1ZhbHVl
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3Jh
cHBlZCgpOwogICAgIGlmICghc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRP
ck51bGwoKSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaW5oZXJpdHMoSlNXZWJHTFNo
YWRlcjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAg
ICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IEpTV2ViR0xTaGFkZXI6OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC00MDAsNyArNDAwLDcgQEAgSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRl
KQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U3VwcG9ydGVkRXh0
ZW5zaW9ucyhFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAg
ICAgIHJldHVybiBqc051bGwoKTsKICAgICBWZWN0b3I8U3RyaW5nPiB2YWx1ZSA9IGNvbnRleHQu
Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIEpTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsK
KyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAg
IFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CkBAIC02OTEsNzcgKzY5MSw3NyBAQCBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGRhdGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rpb25NYXRyaXhUb0NhbGwgZiwgSlNDOjpF
eGVjU3RhdAogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtMWZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9u
ZihmX3VuaWZvcm0xdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYo
Zl91bmlmb3JtMXYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWl2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0xdiwgc3RhdGUsIGltcGwoKSk7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtMXYsIHN0YXRlLCB3cmFwcGVkKCkp
OwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MmZ2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihm
X3VuaWZvcm0ydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91
bmlmb3JtMnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0ydiwgc3RhdGUsIGltcGwoKSk7Cisg
ICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtMnYsIHN0YXRlLCB3cmFwcGVkKCkpOwog
fQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3Vu
aWZvcm0zdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlm
b3JtM3YsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwgc3RhdGUsIGltcGwoKSk7CisgICAg
cmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtM3YsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQog
CiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2KEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZv
cm00diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3Jt
NHYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm00diwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0
dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtNHYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBK
U0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4
KGZfdW5pZm9ybU1hdHJpeDJmdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5j
dGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXgyZnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBK
U0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4
KGZfdW5pZm9ybU1hdHJpeDNmdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5j
dGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXgzZnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBK
U0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4
KGZfdW5pZm9ybU1hdHJpeDRmdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5j
dGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXg0ZnYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBK
U0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVy
dGV4QXR0cmliMXYsIHN0YXRlLCBpbXBsKCkpOworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZf
dmVydGV4QXR0cmliMXYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIyZnYoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMnYsIHN0
YXRlLCBpbXBsKCkpOworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMnYs
IHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIzZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliM3YsIHN0YXRlLCBpbXBsKCkpOwor
ICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliM3YsIHN0YXRlLCB3cmFwcGVk
KCkpOwogfQogCiBKU0M6OkpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0
ZXhBdHRyaWI0ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVu
Y3Rpb25mKGZfdmVydGV4QXR0cmliNHYsIHN0YXRlLCBpbXBsKCkpOworICAgIHJldHVybiBkYXRh
RnVuY3Rpb25mKGZfdmVydGV4QXR0cmliNHYsIHN0YXRlLCB3cmFwcGVkKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYjZkMzlhYzA3
MGY1OTc3Mzc4OTg5MTI5OWRkZTAwMjM1NzI1ODBkMi4uZWRlNWJiOTdhODY4YTQyMWYzNTc5ZjQ4
N2Y3NTk5ZGM4NzRlNTg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
JndyYXBwZWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAppbmRleCAwNWE5ZTcwMmU3YzgxOWJm
N2I3NTFkOWJlNzdjMTEyYmUzNTk0ZmIzLi4wZWZiZDEyZjAzMzQ5NmVjM2NlMmNkMDZmMTkxN2I2
ZjFmZDNlYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0
b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNDOjpKU1Zh
bHVlIEpTV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmaW1wbCgpKTsKKyAgICByZXR1cm4gaGFu
ZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZ3cmFwcGVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTU3LDcg
KzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dvcmtlcihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKIAogICAgIC8vIFNlZSBzZWN0aW9uIDQuOC4yIHN0ZXAgMTQgb2YgV2ViV29ya2VycyBmb3Ig
d2h5IHRoaXMgaXMgdGhlIGxleGljYWxHbG9iYWxPYmplY3QuIAotICAgIERPTVdpbmRvdyYgd2lu
ZG93ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7
CisgICAgRE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPndyYXBwZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IEFTU0VSVCh3aW5kb3cuZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggYWNkNjE3ZTg2OTg5
MjkwNzUzNzZlNTgzMmFiMjgzZjJkMmZhNzkwMC4uNThkYTc1ZThlNzMyOTQ5NTlkZTFiYTYzNzY3
M2IzYzc4ODUyZjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBHbG9i
YWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZQogCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQ
dHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwg
c3RydWN0dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
LSAgICAsIG1faW1wbChpbXBsKQorICAgICwgbV93cmFwcGVkKGltcGwpCiB7CiB9CiAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbXBsLmdl
dCgpOworICAgIHJldHVybiBtX3dyYXBwZWQuZ2V0KCk7CiB9CiAKIGJvb2wgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggMDMxNTMwZWU1ODYxMzlmYzVhYjZmOGI4
ODUxNGI1ODQ4MTFjNzJkZS4uMmRlOGNjNGZhMDY4ZWQzNDQyMDZmMTAwOGI0Y2E2YTdlNmI3Njli
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBERUNMQVJFX0lORk87CiAKLSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIGltcGwoKSBj
b25zdCB7IHJldHVybiAqbV9pbXBsOyB9CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3cmFw
cGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQogICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTY1
LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTQzo6Vk0mKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxXb3JrZXJHbG9i
YWxTY29wZT4gbV9pbXBsOworICAgICAgICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fd3Jh
cHBlZDsKICAgICB9OwogCiAgICAgLy8gUmV0dXJucyBhIEpTV29ya2VyR2xvYmFsU2NvcGUgb3Ig
anNOdWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKaW5kZXggMTI4OThjYzk3NWJlZjUwMGIzYjEwZGJhZjFm
NjUwYTg2ZGMzYzMwMi4uYTk0NTc3MzJkMjI4Y2ZhOWFjYTgwMzU1ZmUzZjQyZDdkZmExNTlhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29w
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUN1c3RvbS5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSBp
bXBsKCkub3B0aW9uYWxMb2NhdGlvbigpKQorICAgIGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRp
b24gPSB3cmFwcGVkKCkub3B0aW9uYWxMb2NhdGlvbigpKQogICAgICAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3QobG9jYXRpb24pOwotICAgIGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvciA9
IGltcGwoKS5vcHRpb25hbE5hdmlnYXRvcigpKQorICAgIGlmIChXb3JrZXJOYXZpZ2F0b3IqIG5h
dmlnYXRvciA9IHdyYXBwZWQoKS5vcHRpb25hbE5hdmlnYXRvcigpKQogICAgICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QobmF2aWdhdG9yKTsKIH0KIApAQCAtODAsMzEgKzgwLDMxIEBAIEpTVmFs
dWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhFeGVjU3RhdGUmIHN0YXRlKQog
ICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAotICAgIGltcGwoKS5pbXBvcnRTY3Jp
cHRzKHVybHMsIGVjKTsKKyAgICB3cmFwcGVkKCkuaW1wb3J0U2NyaXB0cyh1cmxzLCBlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24g
PSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgp
LCBpbXBsKCkuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
Y2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwg
Z2xvYmFsT2JqZWN0KCktPndvcmxkKCksIHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICBpZiAoIWFjdGlvbikKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwog
ICAgIGludCBkZWxheSA9IHN0YXRlLmFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKLSAgICBy
ZXR1cm4ganNOdW1iZXIoaW1wbCgpLnNldFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5
KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5zZXRUaW1lb3V0KFdURjo6bW92ZShh
Y3Rpb24pLCBkZWxheSkpOwogfQogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldElu
dGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxl
ZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxP
YmplY3QoKS0+d29ybGQoKSwgaW1wbCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246
OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCB3cmFwcGVkKCkuY29udGVu
dFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKCFhY3Rpb24pCiAgICAgICAgIHJldHVy
biBqc051bWJlcigwKTsKICAgICBpbnQgZGVsYXkgPSBzdGF0ZS5hcmd1bWVudCgxKS50b0ludDMy
KCZzdGF0ZSk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS5zZXRJbnRlcnZhbChXVEY6Om1v
dmUoYWN0aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNldElu
dGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCmluZGV4IDkxNWIwNjI4NzQwZTc3ZWEwZGE3MGE3ZmJiZWNkYjcxODBj
YmE2YmQuLjg5YjNiY2ZiYjJjNjRiMmUzYjhlZjFiZjhmNjM3OTZkNmI4YjI0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwCkBAIC01OCwxNiArNTgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTWE1M
SHR0cFJlcXVlc3Q6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIGlmIChYTUxIdHRwUmVxdWVzdFVwbG9hZCogdXBsb2FkID0gaW1wbCgpLm9wdGlv
bmFsVXBsb2FkKCkpCisgICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB3cmFw
cGVkKCkub3B0aW9uYWxVcGxvYWQoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHVw
bG9hZCk7CiAKLSAgICBpZiAoRG9jdW1lbnQqIHJlc3BvbnNlRG9jdW1lbnQgPSBpbXBsKCkub3B0
aW9uYWxSZXNwb25zZVhNTCgpKQorICAgIGlmIChEb2N1bWVudCogcmVzcG9uc2VEb2N1bWVudCA9
IHdyYXBwZWQoKS5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyZXNwb25zZURvY3VtZW50KTsKIAotICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9u
c2VBcnJheUJ1ZmZlciA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKKyAg
ICBpZiAoQXJyYXlCdWZmZXIqIHJlc3BvbnNlQXJyYXlCdWZmZXIgPSB3cmFwcGVkKCkub3B0aW9u
YWxSZXNwb25zZUFycmF5QnVmZmVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChy
ZXNwb25zZUFycmF5QnVmZmVyKTsKIAotICAgIGlmIChCbG9iKiByZXNwb25zZUJsb2IgPSBpbXBs
KCkub3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKKyAgICBpZiAoQmxvYiogcmVzcG9uc2VCbG9iID0g
d3JhcHBlZCgpLm9wdGlvbmFsUmVzcG9uc2VCbG9iKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyZXNwb25zZUJsb2IpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEpTVmFsdWUgSlNY
TUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlv
bigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCi0gICAg
Y29uc3QgVVJMJiB1cmwgPSBpbXBsKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0
ZVVSTChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHdyYXBwZWQoKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbXBsZXRlVVJMKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOwogICAgIFN0cmluZyBtZXRob2QgPSBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC04OCwxMyArODgsMTMgQEAgSlNWYWx1ZSBKU1hNTEh0
dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgICAgIGlmICghc3Rh
dGUuYXJndW1lbnQoNCkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgICAgIFN0cmluZyBw
YXNzd29yZCA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKCZzdGF0ZSwgc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoNCkpOwotICAgICAgICAgICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJs
LCBhc3luYywgdXNlciwgcGFzc3dvcmQsIGVjKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVkKCku
b3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIHBhc3N3b3JkLCBlYyk7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBpbXBsKCkub3BlbihtZXRob2QsIHVybCwgYXN5bmMs
IHVzZXIsIGVjKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVkKCkub3BlbihtZXRob2QsIHVybCwg
YXN5bmMsIHVzZXIsIGVjKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpbXBsKCkub3Bl
bihtZXRob2QsIHVybCwgYXN5bmMsIGVjKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5vcGVuKG1l
dGhvZCwgdXJsLCBhc3luYywgZWMpOwogICAgIH0gZWxzZQotICAgICAgICBpbXBsKCkub3Blbiht
ZXRob2QsIHVybCwgZWMpOworICAgICAgICB3cmFwcGVkKCkub3BlbihtZXRob2QsIHVybCwgZWMp
OwogCiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpAQCAtMTM4LDMwICsxMzgsMzAgQEAgcHJpdmF0ZToKIAogSlNWYWx1ZSBKU1hNTEh0
dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGltcGwoKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGltcGwoKS51cmwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KHdyYXBwZWQoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHdyYXBwZWQoKS51cmwoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBKU1Zh
bHVlIHZhbCA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIGlmICh2YWwuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZChl
Yyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTRG9jdW1lbnQ6OmluZm8oKSkpCi0gICAg
ICAgIGltcGwoKS5zZW5kKEpTRG9jdW1lbnQ6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAg
IHdyYXBwZWQoKS5zZW5kKEpTRG9jdW1lbnQ6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CiAgICAgZWxz
ZSBpZiAodmFsLmluaGVyaXRzKEpTQmxvYjo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQo
SlNCbG9iOjp0b1dyYXBwZWQodmFsKSwgZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZChKU0Js
b2I6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTRE9N
Rm9ybURhdGE6OmluZm8oKSkpCi0gICAgICAgIGltcGwoKS5zZW5kKEpTRE9NRm9ybURhdGE6OnRv
V3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKEpTRE9NRm9ybURhdGE6
OnRvV3JhcHBlZCh2YWwpLCBlYyk7CiAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTQXJyYXlC
dWZmZXI6OmluZm8oKSkpCi0gICAgICAgIGltcGwoKS5zZW5kKHRvQXJyYXlCdWZmZXIodmFsKSwg
ZWMpOworICAgICAgICB3cmFwcGVkKCkuc2VuZCh0b0FycmF5QnVmZmVyKHZhbCksIGVjKTsKICAg
ICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNBcnJheUJ1ZmZlclZpZXc6OmluZm8oKSkpIHsKICAg
ICAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZh
bCk7Ci0gICAgICAgIGltcGwoKS5zZW5kKHZpZXcuZ2V0KCksIGVjKTsKKyAgICAgICAgd3JhcHBl
ZCgpLnNlbmQodmlldy5nZXQoKSwgZWMpOwogICAgIH0gZWxzZQotICAgICAgICBpbXBsKCkuc2Vu
ZCh2YWwudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSwgZWMpOworICAgICAgICB3cmFw
cGVkKCkuc2VuZCh2YWwudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSwgZWMpOwogCiAg
ICAgU2VuZEZ1bmN0b3IgZnVuY3RvcjsKICAgICBzdGF0ZS5pdGVyYXRlKGZ1bmN0b3IpOwotICAg
IGltcGwoKS5zZXRMYXN0U2VuZExpbmVBbmRDb2x1bW5OdW1iZXIoZnVuY3Rvci5saW5lKCksIGZ1
bmN0b3IuY29sdW1uKCkpOwotICAgIGltcGwoKS5zZXRMYXN0U2VuZFVSTChmdW5jdG9yLnVybCgp
KTsKKyAgICB3cmFwcGVkKCkuc2V0TGFzdFNlbmRMaW5lQW5kQ29sdW1uTnVtYmVyKGZ1bmN0b3Iu
bGluZSgpLCBmdW5jdG9yLmNvbHVtbigpKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFzdFNlbmRVUkwo
ZnVuY3Rvci51cmwoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU1hNTEh0dHBSZXF1
ZXN0OjpyZXNwb25zZVRleHQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgdGV4dCA9IGltcGwoKS5yZXNwb25zZVRleHQoZWMp
OworICAgIFN0cmluZyB0ZXh0ID0gd3JhcHBlZCgpLnJlc3BvbnNlVGV4dChlYyk7CiAgICAgaWYg
KGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xODAsMjUgKzE4MCwyNSBAQCBKU1ZhbHVlIEpTWE1MSHR0
cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogSlNWYWx1ZSBK
U1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBVc2UgQ2FjaGVkQXR0cmlidXRlIGZvciBvdGhlciB0eXBlcyB0aGFuIEpTT04g
YXMgd2VsbC4KLSAgICBpZiAobV9yZXNwb25zZSAmJiBpbXBsKCkucmVzcG9uc2VDYWNoZUlzVmFs
aWQoKSkKKyAgICBpZiAobV9yZXNwb25zZSAmJiB3cmFwcGVkKCkucmVzcG9uc2VDYWNoZUlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIG1fcmVzcG9uc2UuZ2V0KCk7CiAKLSAgICBpZiAoIWltcGwo
KS5kb25lV2l0aG91dEVycm9ycygpICYmIGltcGwoKS5yZXNwb25zZVR5cGVDb2RlKCkgPiBYTUxI
dHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlVGV4dCkKKyAgICBpZiAoIXdyYXBwZWQoKS5kb25lV2l0
aG91dEVycm9ycygpICYmIHdyYXBwZWQoKS5yZXNwb25zZVR5cGVDb2RlKCkgPiBYTUxIdHRwUmVx
dWVzdDo6UmVzcG9uc2VUeXBlVGV4dCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAg
c3dpdGNoIChpbXBsKCkucmVzcG9uc2VUeXBlQ29kZSgpKSB7CisgICAgc3dpdGNoICh3cmFwcGVk
KCkucmVzcG9uc2VUeXBlQ29kZSgpKSB7CiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9u
c2VUeXBlRGVmYXVsdDoKICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0
OgogICAgICAgICByZXR1cm4gcmVzcG9uc2VUZXh0KHN0YXRlKTsKIAogICAgIGNhc2UgWE1MSHR0
cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZUpTT046CiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBKU09OUGFyc2UoJnN0YXRlLCBpbXBsKCkucmVzcG9uc2VUZXh0SWdub3JpbmdS
ZXNwb25zZVR5cGUoKSk7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNPTlBhcnNlKCZz
dGF0ZSwgd3JhcHBlZCgpLnJlc3BvbnNlVGV4dElnbm9yaW5nUmVzcG9uc2VUeXBlKCkpOwogICAg
ICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVsbCgpOwog
ICAgICAgICAgICAgbV9yZXNwb25zZS5zZXQoc3RhdGUudm0oKSwgdGhpcywgdmFsdWUpOwogCi0g
ICAgICAgICAgICBpbXBsKCkuZGlkQ2FjaGVSZXNwb25zZUpTT04oKTsKKyAgICAgICAgICAgIHdy
YXBwZWQoKS5kaWRDYWNoZVJlc3BvbnNlSlNPTigpOwogCiAgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgICAgIH0KQEAgLTIwNiw3ICsyMDYsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVl
c3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgY2FzZSBYTUxIdHRwUmVx
dWVzdDo6UmVzcG9uc2VUeXBlRG9jdW1lbnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgp
LnJlc3BvbnNlWE1MKGVjKTsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdyYXBw
ZWQoKS5yZXNwb25zZVhNTChlYyk7CiAgICAgICAgICAgICBpZiAoZWMpIHsKICAgICAgICAgICAg
ICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CkBAIC0yMTUsMTAgKzIxNSwxMCBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIH0KIAogICAg
IGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZUJsb2I6Ci0gICAgICAgIHJldHVybiB0
b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5yZXNwb25zZUJsb2IoKSk7CisgICAg
ICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5yZXNwb25z
ZUJsb2IoKSk7CiAKICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVBcnJheUJ1
ZmZlcjoKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgp
LnJlc3BvbnNlQXJyYXlCdWZmZXIoKSk7CisgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCksIHdyYXBwZWQoKS5yZXNwb25zZUFycmF5QnVmZmVyKCkpOwogICAgIH0KIAog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAppbmRleCAyNDE2ZDY3OTA4MTM5MTNmMTNlYzBh
NTE5YzVmMTA4NmMyNjM1ODU2Li41ZDM0ODZlODU5YzY0MjU2Njc3Y2Q4N2JjYWJmYzdiNmExNjAz
NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0
Q3VzdG9tLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
SlNYUGF0aFJlc3VsdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBhdXRvJiB2YWx1ZSA9IGltcGwoKS52YWx1ZSgpOworICAgIGF1dG8m
IHZhbHVlID0gd3JhcHBlZCgpLnZhbHVlKCk7CiAgICAgaWYgKHZhbHVlLmlzTm9kZVNldCgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgbm9kZSA6IHZhbHVlLnRvTm9kZVNldCgpKQogICAgICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qobm9kZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXgg
MzMxYjlmMWIwYmJmNTc5YWM0NTJkMDdlZGMxYjlmNjU4ZmNmNjE1Zi4uMTUyYjg3MzcwMGI5YTBk
YzQ2OGNjMDNmYjA5ZTFhNDMyNGRjNzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBAIEpT
VmFsdWUgSlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJp
bmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBTdHJpbmcgbG9jYWxOYW1lID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAg
ICBTdHJpbmcgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKS50b1N0cmluZygmc3Rh
dGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIGltcGwoKS5zZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUsIHZhbHVlKTsKKyAgICB3cmFwcGVkKCkuc2V0UGFyYW1ldGVyKG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
QEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcihF
eGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBTdHJp
bmcgbmFtZXNwYWNlVVJJID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0
YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBTdHJpbmcgbG9jYWxOYW1lID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKLSAgICBTdHJp
bmcgdmFsdWUgPSBpbXBsKCkuZ2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsK
KyAgICBTdHJpbmcgdmFsdWUgPSB3cmFwcGVkKCkuZ2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwg
bG9jYWxOYW1lKTsKICAgICByZXR1cm4ganNTdHJpbmdPclVuZGVmaW5lZCgmc3RhdGUsIHZhbHVl
KTsKIH0KIApAQCAtNzMsNyArNzMsNyBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6cmVtb3Zl
UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2NhbE5hbWUgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
OwotICAgIGltcGwoKS5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwor
ICAgIHdyYXBwZWQoKS5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCAwNThjOTFjOTI0NGE1YzgwYWU5ZThmMGZi
NjRhZTBhODQ2YTNkNWQzLi5mZWJkMjkwMGU2MjVlN2NlMzZmYzcyOTMzN2E0OTJiODM5NmQ1ZDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAK
QEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxGcmFtZT4gZnJhbWUgPSB3aW5kb3ctPmltcGwoKS5mcmFtZSgpOworICAgIFJlZlB0cjxG
cmFtZT4gZnJhbWUgPSB3aW5kb3ctPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlw
dCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKaW5kZXggMDQzMGJhN2ZkNTNjYWMyYzU0MmU4
NjMyMDRkYWJhYzVmYTBiYWYxNS4uMWNjY2Y4YWYyMTAwZjA3ZjUwNWZlNjdiZmMwMGI1OTQ0ODk5
NDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNo
ZWRGcmFtZURhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhOjpyZXN0b3JlKEZyYW1lJiBmcmFtZSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRX
aW5kb3cod2luZG93LT52bSgpLCB3aW5kb3cpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IERPTVdpbmRvdyogZG9tV2luZG93ID0gZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7Ci0g
ICAgICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3coKS0+aW1wbCgpID09IGRvbVdpbmRv
dykKKyAgICAgICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT53cmFwcGVkKCkgPT0g
ZG9tV2luZG93KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICB3aW5k
b3dTaGVsbC0+c2V0V2luZG93KGRvbVdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIxNjFlNjZmOGQ5MmM4MGM0ZmM4YjJi
NzI2YmMyNDg2NTdkZDUyZDkuLjYyOWM0MjEzYWU4ZmExYjZlOWQyNmRlMDAzZmY0ZTEwYjY2ZTlh
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRv
d1NoZWxsKERPTVdpbmRvdyogbmV3RE9NV2luZG93LCBib29sIGdvaW5nSW50b1AKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdpbmRvd1NoZWxscy5zaXplKCk7ICsraSkgewogICAgICAgICBK
U0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCA9IHdpbmRvd1NoZWxsc1tpXS5nZXQoKTsKIAot
ICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3coKS0+aW1wbCgpID09IG5ld0RPTVdpbmRv
dykKKyAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2luZG93KCktPndyYXBwZWQoKSA9PSBuZXdE
T01XaW5kb3cpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBDbGVhciB0aGUg
ZGVidWdnZXIgYW5kIGNvbnNvbGUgZnJvbSB0aGUgY3VycmVudCB3aW5kb3cgYmVmb3JlIHNldHRp
bmcgdGhlIG5ldyB3aW5kb3cuCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPEpTQzo6RXhlY1N0
YXRlKiwKIHsKICAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVs
bHMuYmVnaW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKSB7CiAgICAg
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gaXRlci0+dmFsdWUtPndpbmRvdygpLT5nbG9iYWxF
eGVjKCk7Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBpdGVyLT52YWx1ZS0+d2lu
ZG93KCktPmltcGwoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBTZWN1
cml0eU9yaWdpbiogb3JpZ2luID0gaXRlci0+dmFsdWUtPndpbmRvdygpLT53cmFwcGVkKCkuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6OnBh
aXI8SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+KGV4ZWMsIG9yaWdpbikpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBh
ZTNjNzI5NzZmZjk3MGFhZTJjZDM1MTlhYjg2MWEwNThiOTRiY2RlLi4yNmNhYjNjNGEyNzFkY2Fi
NzBhMzc2YTAwOTAyZmFhZDM0ODA0YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U3RhdGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvdyogZG9tV2luZG93RnJv
bUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiAgICAgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHMoSlNET01XaW5kb3dCYXNlOjppbmZv
KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJkpTQzo6anNDYXN0PEpT
RE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCktPmltcGwoKTsKKyAgICByZXR1cm4gJkpTQzo6
anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCktPndyYXBwZWQoKTsKIH0KIAog
RnJhbWUqIGZyYW1lRnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IDYzZjZiNTUyZDA0Yjk1OTRiZjFlMzI5
NTNjZTUxZGJmZDk4OGM5ODguLjQzNTJlYjRlMGViOGE5ZGQzNDgyNGNiYTM4MzU5NGJiYmUyMjc4
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC01NzEsNyArNTcxLDcgQEAg
aWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0
KQogICAgIGlmICghb2JqZWN0LT5pbmhlcml0cyhKU05vZGU6OmluZm8oKSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICBXZWJDb3JlOjpOb2RlJiBub2RlID0ganNDYXN0PEpTTm9kZSo+KG9i
amVjdCktPmltcGwoKTsKKyAgICBXZWJDb3JlOjpOb2RlJiBub2RlID0ganNDYXN0PEpTTm9kZSo+
KG9iamVjdCktPndyYXBwZWQoKTsKICAgICByZXR1cm4ga2l0KCZub2RlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tCmluZGV4IGZiMTdmMGQzZDg2YjEw
ZGE1ODA4ZDE4OGNlYzkwNGMwOTg2Mjc5YTEuLjFjM2M3Y2ZlZTI1M2QwNzU4ZDU0YjM4NDljZmY0
YjNlNWNmNzMzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
VXRpbGl0eS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0aWxpdHku
bW0KQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGlubGluZSBpZCBjcmVhdGVET01XcmFwcGVyKEpT
Qzo6SlNPYmplY3QqIG9iamVjdCkKIHsKICAgICAjZGVmaW5lIFdSQVAoY2xhc3NOYW1lKSBcCiAg
ICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKFdlYkNvcmU6OkpTIyNjbGFzc05hbWU6OmluZm8o
KSkpIFwKLSAgICAgICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpTIyNj
bGFzc05hbWUqPihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICAgICAgcmV0dXJuIGtpdCgmc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SlMjI2NsYXNzTmFtZSo+KG9iamVjdCktPndyYXBwZWQoKSk7CiAK
ICAgICBXUkFQKENTU1J1bGUpCiAgICAgV1JBUChDU1NSdWxlTGlzdCkKQEAgLTEyMSwxMCArMTIx
LDEwIEBAIHN0YXRpYyBpbmxpbmUgaWQgY3JlYXRlRE9NV3JhcHBlcihKU0M6OkpTT2JqZWN0KiBv
YmplY3QpCiAgICAgI3VuZGVmIFdSQVAKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKFdlYkNv
cmU6OkpTRE9NV2luZG93U2hlbGw6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBraXQoJnN0YXRp
Y19jYXN0PFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpLT5pbXBsKCkpOworICAg
ICAgICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsKj4o
b2JqZWN0KS0+d3JhcHBlZCgpKTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKFdlYkNvcmU6
OkpTRE9NSW1wbGVtZW50YXRpb246OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBraXQoJnN0YXRp
Y19jYXN0PFdlYkNvcmU6OkpTRE9NSW1wbGVtZW50YXRpb24qPihvYmplY3QpLT5pbXBsKCkpOwor
ICAgICAgICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJDb3JlOjpKU0RPTUltcGxlbWVudGF0
aW9uKj4ob2JqZWN0KS0+d3JhcHBlZCgpKTsKIAogICAgIHJldHVybiBuaWw7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDU3ZjMy
MDJhOGMyZDYwMTRlZTFlMWFjOGZjZjdlNWJkMDYyYTc3YzguLmZiNmRmMjVhNGM3YmY0NzhmYTMz
MTEzOTcyMTJjNzFjNmYwNTc2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIHZvaWQgYWRk
RXhjZXB0aW9uVG9Db25zb2xlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBKU0RPTVdpbmRvd0Jh
c2UqIGlzbid0IHRoZSByaWdodCBvYmplY3QgdG8gcmVwcmVzZW50IHRoZSBjdXJyZW50bHkgZXhl
Y3V0aW5nCiAgICAgLy8gSmF2YVNjcmlwdC4gSW5zdGVhZCwgd2Ugc2hvdWxkIHVzZSBFeGVjU3Rh
dGUsIGxpa2Ugd2UgZG8gZWxzZXdoZXJlLgogICAgIEpTRE9NV2luZG93QmFzZSogdGFyZ2V0ID0g
anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHJvb3QtPmdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1
cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KF9wcml2YXRl
LT5vcmlnaW5Sb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB0YXJnZXQt
PmltcGwoKSk7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgdGFyZ2V0LT53cmFwcGVkKCkpOwogfQogCiAtIChKU0dsb2JhbENvbnRleHRS
ZWYpX2dsb2JhbENvbnRleHRSZWYKQEAgLTU0MSw3ICs1NDEsNyBAQCBzdGF0aWMgdm9pZCBnZXRM
aXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVj
dCogcm9vdAogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6Omlu
Zm8oKSkpIHsKICAgICAgICAgICAgIC8vIFBsdWdpbiBlbGVtZW50cyBjYWNoZSB0aGUgaW5zdGFu
Y2UgaW50ZXJuYWxseS4KLSAgICAgICAgICAgIGlmIChPYmpjSW5zdGFuY2UqIGluc3RhbmNlID0g
c3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4ocGx1Z2luSW5zdGFuY2UoanNDYXN0PEpTSFRNTEVs
ZW1lbnQqPihvYmplY3QpLT5pbXBsKCkpKSkKKyAgICAgICAgICAgIGlmIChPYmpjSW5zdGFuY2Uq
IGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4ocGx1Z2luSW5zdGFuY2UoanND
YXN0PEpTSFRNTEVsZW1lbnQqPihvYmplY3QpLT53cmFwcGVkKCkpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5zdGFuY2UtPmdldE9iamVjdCgpOwogICAgICAgICB9IGVsc2UgaWYgKG9iamVj
dC0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVPYmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIE9i
akNSdW50aW1lT2JqZWN0KiBydW50aW1lT2JqZWN0ID0gc3RhdGljX2Nhc3Q8T2JqQ1J1bnRpbWVP
YmplY3QqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA3NTZiNTlkNTMxMDA5MTJiYjBkYzMyMTMwMGUxZDRj
ZDg1MWJlZmU4Li5iYzU3MTFkM2FhOTQwYzYxNWVjYmZkODU5ZjA3Njc2MWFjMjllNTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtNDIxLDcgKzQyMSw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkK
ICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAi
RE9NU3RyaW5nIikgewogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwg
IiAgICBpZiAob3B0aW9uYWxJbmRleCkge1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4
ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKSkg
e1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlm
IChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPndy
YXBwZWQoKS5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAZ2V0T3du
UHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25hbEluZGV4
LnZhbHVlKCk7XG4iKTsKICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVy
LCB0aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQpAQCAtMTE4OCw5ICsxMTg4LDkgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAKICAgICBpZiAoTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZh
Y2UpKSB7CiAgICAgICAgIGlmICgkaGFzUGFyZW50KSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsKCkgY29uc3RcbiIpOworICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkaW50ZXJmYWNlTmFtZSYgd3JhcHBlZCgp
IGNvbnN0XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8JGludGVyZmFjZU5hbWUmPihCYXNlOjppbXBsKCkpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JGludGVyZmFj
ZU5hbWUmPihCYXNlOjp3cmFwcGVkKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc1OSw5ICsxNzU5LDkg
QEAgc3ViIEdldEluZGV4ZWRHZXR0ZXJFeHByZXNzaW9uCiB7CiAgICAgbXkgJGluZGV4ZWRHZXR0
ZXJGdW5jdGlvbiA9IHNoaWZ0OwogICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5zaWdu
YXR1cmUtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKLSAgICAgICAgcmV0dXJuICJqc1N0cmluZ09y
VW5kZWZpbmVkKHN0YXRlLCB0aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRleCkpIjsKKyAgICAg
ICAgcmV0dXJuICJqc1N0cmluZ09yVW5kZWZpbmVkKHN0YXRlLCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkuaXRlbShpbmRleCkpIjsKICAgICB9Ci0gICAgcmV0dXJuICJ0b0pTKHN0YXRlLCB0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+aW1wbCgpLml0ZW0oaW5kZXgpKSI7Cisg
ICAgcmV0dXJuICJ0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09i
amVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSI7CiB9CiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCkBAIC0yMjI4LDcgKzIyMjgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5
cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkge1xuIik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpKSB7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDwgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVyLCB0aGUgaW5kZXgg
d2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CkBAIC0yMzI4LDkgKzIzMjgs
OSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiU2V0dGluZ3MuaCIpOwogICAgICAgICAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1
bmN0aW9uID0gVG9NZXRob2ROYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkVuYWJsZWRCeVNldHRpbmcifSkgLiAiRW5hYmxlZCI7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+aW1wbCgpLmZy
YW1lKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSlcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKS0+
c2V0dGluZ3MoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKS0+
c2V0dGluZ3MoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNldHRpbmdzLiRlbmFibGVfZnVuY3Rpb24oKSlcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzNDMsNyArMjM0
Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAmJgogICAgICAgICAg
ICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05v
dENoZWNrU2VjdXJpdHkifSAmJgogICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciJ9KSB7
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmlt
cGwoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7
CiAgICAgICAgICAgICB9CiAKQEAgLTIzNjEsNyArMjM2MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJGV4Y2VwdGlvbkNvZGUgPSAkZ2V0dGVyRXhj
ZXB0aW9ucyA/ICJlYyIgOiAiMCI7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05h
bWUoXCIkaW50ZXJmYWNlTmFtZS4kbmFtZVwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChjdXJzb3IuaXNDYXB0dXJpbmcoKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgICRtZW1vaXplZFR5cGUgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRU
aGlzLT5pbXBsKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
LiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgY3Vyc29y
LmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PCRtZW1vaXplZFR5cGU+PihiaW5kaW5nTmFt
ZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsICRleGNlcHRpb25Db2RlKTtcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJm
YWNlTmFtZSwgIm1lbW9pemVkUmVzdWx0IiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBlYyk7XG4iKSBpZiAkZ2V0dGVyRXhjZXB0aW9uczsKQEAgLTIzODUsNyArMjM4NSw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4kaW1wbEdldHRl
ckZ1bmN0aW9uTmFtZSgqc3RhdGUpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eUZvck5v
ZGUifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0g
PSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC4iIC4gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lIC4gIigpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUo
KSIsICJjYXN0ZWRUaGlzIikgLiAiIDoganNOdWxsKCkpO1xuIik7CiAgICAgICAgICAgICB9IGVs
c2lmICgkdHlwZSBlcSAiRXZlbnRIYW5kbGVyIikgewogICAgICAgICAgICAgICAgIG15ICRnZXR0
ZXIgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJXaW5kb3dF
dmVudEhhbmRsZXIifSA/ICJ3aW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUiCkBAIC0yMzkzLDcg
KzIzOTMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAg
ICA6ICJldmVudEhhbmRsZXJBdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgIG15ICRldmVudE5h
bWUgPSBFdmVudEhhbmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUoJGF0dHJpYnV0ZSk7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoJGdldHRlcihjYXN0ZWRUaGlzLT5pbXBsKCksICRldmVudE5hbWUpKTtcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoJGdldHRlcihjYXN0ZWRUaGlzLT53cmFwcGVkKCksICRldmVudE5hbWUpKTtcbiIpOwog
ICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25z
dHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBl
ID1+IHMvQ29uc3RydWN0b3IkLy87CkBAIC0yNDIxLDkgKzI0MjEsOSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBHZW5lcmF0
ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
bGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSki
KTsKIAogICAgICAgICAgICAgICAgIGlmICgkc3ZnTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAi
IC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5h
bWUsICJjYXN0ZWRUaGlzLT5pbXBsKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2lu
ICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9
ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFj
ZU5hbWUsICJjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAu
IChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIp
OwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlw
ZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJv
cGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCkucHJvcGVy
dHlSZWZlcmVuY2UoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVj
aWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwiLCAiY2FzdGVkVGhp
cyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjQ0Niw3ICsy
NDQ2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgICAg
ICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOwogICAgICAgICAgICAgICAgICAg
ICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGludGVyZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50
cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKSBpZiAhJGF0
dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKSBpZiAhJGF0dHJp
YnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHR5cGU+IG9iaiA9ICRqc1R5cGU7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iai5nZXQoKSk7
XG4iKTsKQEAgLTI0NzIsMTAgKzI0NzIsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBp
bXBsQ29udGVudCwgIkpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSIpKTsKIAogICAgICAg
ICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJv
cGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlU
eXBlIGltcGwoKmNhc3RlZFRoaXMtPndyYXBwZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAi
Y2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBO
YXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwg
ImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0y
NTE3LDcgKzI1MTcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkg
ewogICAgICAgICAgICAgICAgIGRpZSBpZiAhQ29uc3RydWN0b3JTaG91bGRCZU9uSW5zdGFuY2Uo
JGludGVyZmFjZSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRv
bU9iamVjdC0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93
KHN0YXRlLCBkb21PYmplY3QtPndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTtcbiIpOwogICAgICAgICAgICAgfQogCkBAIC0yNTQ5LDkgKzI1NDksOSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhz
dGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSlcbiIpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT5p
bXBsKCkuZnJhbWUoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMt
PndyYXBwZWQoKS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAg
ICB9CkBAIC0yNjYxLDkgKzI2NjEsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDaGVja1NlY3VyaXR5In0gJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKVxuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVk
KCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3Rh
dGUsIGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShz
dGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47
XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTI2NzYsMTMgKzI2NzYsMTMgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAjIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRv
IHRoaXMgc3BlY2lhbCBjYXNlIHdpdGhvdXQgaGFyZGNvZGluZyB0aGUgY2xhc3MgYW5kIGF0dHJp
YnV0ZSBuYW1lcyBoZXJlLgogICAgICAgICAgICAgICAgIGlmICgoKCRpbnRlcmZhY2VOYW1lIGVx
ICJET01XaW5kb3ciKSBvciAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckdsb2JhbFNjb3BlIikp
IGFuZCAkbmFtZSBlcSAib25lcnJvciIpIHsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siSlNFcnJvckhhbmRsZXIuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+aW1wbCgpLnNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNFcnJvckhhbmRsZXIoc3RhdGUsIHZhbHVlLCBjYXN0
ZWRUaGlzKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoJGV2ZW50
TmFtZSwgY3JlYXRlSlNFcnJvckhhbmRsZXIoc3RhdGUsIHZhbHVlLCBjYXN0ZWRUaGlzKSk7XG4i
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgbXkg
JHNldHRlciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ildp
bmRvd0V2ZW50SGFuZGxlciJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIKICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRG9jdW1lbnRFdmVudEhhbmRsZXIifSA/ICJzZXREb2N1bWVudEV2ZW50SGFu
ZGxlckF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgIDogInNldEV2ZW50SGFuZGxl
ckF0dHJpYnV0ZSI7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRzZXR0ZXIoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+aW1wbCgpLCAkZXZlbnRO
YW1lLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHNldHRlcigqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCks
ICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykg
ewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGU7CkBAIC0yNzA1LDE4ICsyNzA1LDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9uTmFt
ZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSB8fCAkbmFtZSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmlzTnVsbGFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBSZWZQdHI8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHthdHRy
aWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS4ke2ltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWZvcndhcmRlZEltcGwpXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXR0cmlidXRlIGlzIG5v
dCBudWxsYWJsZSwgdGhlIGltcGxlbWVudGF0aW9uIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHJl
ZmVyZW5jZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBSZWY8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWY8JHthdHRyaWJ1dGVUeXBlfT4g
Zm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS4ke2ltcGxHZXR0ZXJGdW5jdGlv
bk5hbWV9KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvJiBpbXBsID0gZm9yd2FyZGVkSW1wbC5nZXQoKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZSA9
ICRjb2RlR2VuZXJhdG9yLT5HZXRBdHRyaWJ1dGVGcm9tSW50ZXJmYWNlKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSwgJHB1dEZvcndhcmRzKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDtcbiIpIGlmICRzZXR0ZXJSYWlzZXNFeGNlcHRpb247CkBAIC0yODIzLDEzICsy
ODIzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2Jq
ZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgaWYgKCRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgp
OyBpIDwgY291bnQ7ICsraSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVu
Z3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaSkp
O1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRuYW1lZEdldHRlckZ1bmN0aW9uKSB7CiAg
ICAgICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVlZCB0byBhZGQgYW4gSURMIGV4dGVuZGVkIGF0
dHJpYnV0ZSBhdCBzb21lIHBvaW50IGlmIGFuIGludGVyZmFjZSBuZWVkcyBlbnVtZXJhYmxlIG5h
bWVkIHByb3BlcnRpZXMuCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
bW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09i
amVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSlcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhp
c09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSlcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBwcm9wZXJ0eU5hbWUpKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgIH0KQEAgLTI5MzAs
MTQgKzI5MzAsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9
IGFuZAogICAgICAgICAgICAgICAgICAgICAhJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkaXNDdXN0b20pIHsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT4iIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIigqc3RhdGUp
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
JHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKGltcGwuaXNSZWFkT25seSgpKSB7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oc3Rh
dGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7XG4iKTsKQEAgLTI5OTEsMTEgKzI5OTEs
MTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7XG4iKTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8ICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2
ZW50VGFyZ2V0IikgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09i
amVjdC0+aW1wbCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKHZp
c2l0b3IpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9t
TWFya0Z1bmN0aW9uIn07CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlDb3N0In0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3Qt
PmltcGwoKS5tZW1vcnlDb3N0KCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT53cmFw
cGVkKCkubWVtb3J5Q29zdCgpKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkbnVtQ2Fj
aGVkQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgICAgIGZvcmVhY2ggKEB7JGludGVyZmFjZS0+
YXR0cmlidXRlc30pIHsKQEAgLTMwMzcsNyArMzAzNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0IikpIHsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7
aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAg
ICAgICRlbWl0dGVkSlNDYXN0ID0gMTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSlc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZh
Y2VOYW1lfS0+d3JhcHBlZCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKVxuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAg
fQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUo
JGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0IikpIHsKQEAgLTMwNDUsNyArMzA0NSw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1l
fSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICRlbWl0
dGVkSlNDYXN0ID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5pc0ZpcmluZ0V2ZW50TGlz
dGVuZXJzKCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChq
cyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpXG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtc
biIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRl
cmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewpAQCAtMzA2NCwzNCArMzA2NCwzNCBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkcm9vdFN0cmluZzsKICAg
ICAgICAgICAgIGlmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBs
IikgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgJHtpbXBsVHlwZX0qIHJv
b3QgPSAmanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCk7XG4iOworICAgICAgICAgICAgICAgICRy
b290U3RyaW5nICA9ICIgICAgJHtpbXBsVHlwZX0qIHJvb3QgPSAmanMke2ludGVyZmFjZU5hbWV9
LT53cmFwcGVkKCk7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNo
YWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIpIHsKLSAgICAg
ICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5jb250ZXh0KCkp
O1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBw
ZWQoKS5jb250ZXh0KCkpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVyYXRlSXNS
ZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxGcmFtZSIpIHsKLSAgICAgICAgICAgICAgICAk
cm9vdFN0cmluZyAgPSAiICAgIEZyYW1lKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFj
ZU5hbWV9LT5pbXBsKCkuZnJhbWUoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5n
ICA9ICIgICAgRnJhbWUqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndy
YXBwZWQoKS5mcmFtZSgpKTtcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAg
ICBpZiAoIXJvb3QpXG4iOwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgICAg
IHJldHVybiBmYWxzZTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVh
Y2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsRG9jdW1lbnQiKSB7Ci0gICAgICAgICAgICAgICAg
JHJvb3RTdHJpbmcgID0gIiAgICBEb2N1bWVudCogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRl
cmZhY2VOYW1lfS0+aW1wbCgpLmRvY3VtZW50KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9v
dFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFj
ZU5hbWV9LT53cmFwcGVkKCkuZG9jdW1lbnQoKSk7XG4iOwogICAgICAgICAgICAgICAgICRyb290
U3RyaW5nIC49ICIgICAgaWYgKCFyb290KVxuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmlu
ZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoR2V0
R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbEVsZW1lbnRSb290Iikgewog
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1lbnQuaCJ9ID0gMTsKICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20uaCJ9ID0gMTsKLSAgICAgICAgICAg
ICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBXVEY6OmdldFB0cihq
cyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5lbGVtZW50KCkpO1xuIjsKKyAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAgPSAiICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBXVEY6OmdldFB0cihqcyR7
aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5lbGVtZW50KCkpO1xuIjsKICAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAuPSAiICAgIGlmICghZWxlbWVudClcbiI7CiAgICAgICAgICAgICAgICAg
JHJvb3RTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAuPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGVsZW1lbnQp
O1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0IikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1lbnQu
aCJ9ID0gMTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20uaCJ9
ID0gMTsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBX
ZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmNhbnZhcygpKTtcbiI7Cisg
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6
cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5jYW52YXMoKSk7XG4iOwogICAgICAg
ICAgICAgfSBlbHNpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1w
bE93bmVyTm9kZVJvb3QiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRWxlbWVu
dC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZUN1c3RvbS5o
In0gPSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9
IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkub3duZXJOb2RlKCkpO1xu
IjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJD
b3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLm93bmVyTm9kZSgpKTtcbiI7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIg
ICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoJmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgp
KTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0g
V2ViQ29yZTo6cm9vdCgmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkpO1xuIjsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRyb290U3RyaW5nKTsK
QEAgLTMxMTEsNyArMzExMSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0q
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5jYWNoZVdyYXBw
ZXIod29ybGQsICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKSwganMke2ludGVyZmFjZU5hbWV9
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLCBqcyR7aW50ZXJmYWNlTmFtZX0p
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKQEAg
LTMyMDYsNyArMzIwNiw3IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRpbXBs
VHlwZSogJHtjbGFzc05hbWV9Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChhdXRvKiB3cmFwcGVyID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlz
T2JqZWN0KCRpbnRlcmZhY2UpIC4gIih2YWx1ZSkpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbnVsbHB0cjtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwogICAgIH0KQEAgLTQyNTUsNyArNDI1
NSw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgICAgIGlmICgkc2VsZklzVGVhck9m
ZlR5cGUpIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHTWF0cml4VGVh
ck9mZi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBCbGluazog
RG9uJ3QgY3JlYXRlIGEgbmV3IG9uZSBldmVyeXRpbWUgd2UgYWNjZXNzIHRoZSBtYXRyaXggcHJv
cGVydHkuIFRoaXMgbWVhbnMsIGUuZywgPT09IHdvbid0IHdvcmsuCi0gICAgICAgICAgICAgICAg
JHZhbHVlID0gIlNWR01hdHJpeFRlYXJPZmY6OmNyZWF0ZShjYXN0ZWRUaGlzLT5pbXBsKCksICR2
YWx1ZSkiOworICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJTVkdNYXRyaXhUZWFyT2ZmOjpjcmVh
dGUoY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCAkdmFsdWUpIjsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1N0YXRpY1Byb3BlcnR5VGVh
ck9mZi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4g
cy9TVkdQcm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjwkaW50ZXJmYWNl
TmFtZSwgLzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggOTllMTIyZDNk
NzU0MWEyZjU2YTAxOWUwMGQ5OTRhYmNlY2Q0MzJhZC4uYjBkMTJjMzg5M2FmZTI3YjQ0YjcyNTg4
MDIyMWU3ODM5Y2ZhNzI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAg
LTE0OSw5ICsxNDksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNp
dGluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsbwogICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihzbG90QmFzZSk7Ci0gICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUs
IGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5leGNpdGluZ0F0dHIo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTYyLDcgKzE2
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiwgRW5jCiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBkb21PYmplY3QtPmltcGwoKSkpCisg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3Rh
dGUsIGRvbU9iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEFjdGl2
ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KQEAgLTE3OSw5ICsxNzksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5j
dAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0
aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RB
Y3RpdmVET01PYmplY3Q6OmluZm8oKSk7Ci0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwoKSkpCisgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUs
IGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgTm9kZSog
bmV4dENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTE5
OCw3ICsxOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURP
TU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoRQogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEFjdGl2ZURPTU9iamVjdCIsICJwb3N0TWVzc2FnZSIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmluZyBtZXNzYWdlID0gc3RhdGUt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtMjE5LDcgKzIx
OSw3IEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkCiB7CiAgICAgYXV0byoganNUZXN0QWN0aXZl
RE9NT2JqZWN0ID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29y
bGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEFjdGl2ZURP
TU9iamVjdC0+aW1wbCgpLCBqc1Rlc3RBY3RpdmVET01PYmplY3QpOworICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNUZXN0QWN0aXZlRE9NT2JqZWN0LT53cmFwcGVkKCksIGpzVGVzdEFjdGl2
ZURPTU9iamVjdCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjks
NyArMjY5LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE8KIFRlc3RBY3RpdmVET01PYmplY3Qq
IEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDA5ZDZhYWI4MjRlMTFkN2NlNGM5ZDcxOWQ3ZmY5Yjlj
ZGRiZDkyZTAuLmNhYWRiYzFmMGI1N2RkNTEwZWJiYWUwNmM4YTBkMzExZTk1MDU0ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDCiB7CiAgICAgYXV0byoganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC0+aW1w
bCgpLCBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC0+d3JhcHBlZCgpLCBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0xODQs
NyArMTg0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tQ28KIFRlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwo
KTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDM3YzFl
NTgxMmY0MWE1NTI1NTQ5ZjM0MDMzMWU1ZjhlNzY5YjUwNjkuLjk5NGYzNjZlZjQ0YzFlODQwOTk2
OWFhODAzMGE0OTgyNDRiOTZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJGdW5jCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhlckZ1bmN0aW9uIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlcjo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBTdHJp
bmcgc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUp
OwpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvCiB7CiAgICAgYXV0
byoganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3RDdXN0b21OYW1lZEdldHRlci0+aW1wbCgpLCBqc1Rlc3RDdXN0b21OYW1lZEdl
dHRlcik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21OYW1lZEdldHRl
ci0+d3JhcHBlZCgpLCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlcik7CiB9CiAKICNpZiBFTkFCTEUo
QklORElOR19JTlRFR1JJVFkpCkBAIC0yNTQsNyArMjU0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3Vz
dG9tTmEKIFRlc3RDdXN0b21OYW1lZEdldHRlciogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4odmFsdWUpKQotICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcAppbmRleCAxYTlmZWE3YzExN2M3MDRmYTNiYzY2M2I0ZjM1MGMyM2E4Njk4MzhkLi44
ZGY5MmQ5ZmQxODczNTNjMjdmZjYwMzlkYWE4Y2I4NDIwOWQwMWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0
dHIxIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHIxKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAi
YXR0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IGpzQ2Fz
dDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRDb25zdHJ1Y3Rvci0+aW1wbCgp
LCBqc1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpz
VGVzdEV2ZW50Q29uc3RydWN0b3ItPndyYXBwZWQoKSwganNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7
CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjQsNyArMjY0LDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0RXZlbnRDb24KIFRlc3RFdmVudENvbnN0cnVjdG9yKiBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4odmFs
dWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCmluZGV4IDk3OGQ5MmE2NDVkMmM0ODIxMWEyMDY4ZjhiZmI5ZjNlMTVjYmJi
NTcuLjRlZGVhYzg2OTNkNmEyN2UyZTI3YzA5ZTlmMjU1Njc2OTM5OTMxMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcApAQCAtMTQ1LDEwICsxNDUsMTAgQEAgYm9vbCBKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3Rh
dGUsIFAKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSk7Ci0gICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1
ZSgpIDwgdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpKSB7CisgICAgaWYgKG9wdGlvbmFsSW5k
ZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0
aCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOwog
ICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gRG9udERlbGV0ZSB8IFJlYWRPbmx5OwotICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRo
aXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRleCkp
KTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0
YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0
ZW0oaW5kZXgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoZ2V0U3Rh
dGljVmFsdWVTbG90PEpTVGVzdEV2ZW50VGFyZ2V0LCBCYXNlPihzdGF0ZSwgSlNUZXN0RXZlbnRU
YXJnZXRUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTE3MSw5ICsx
NzEsOSBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogcwogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBpZiAoaW5kZXggPCB0aGlzT2Jq
ZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IERvbnREZWxl
dGUgfCBSZWFkT25seTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1
dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+
aW1wbCgpLml0ZW0oaW5kZXgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
YXR0cmlidXRlcywgdG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVj
dCwgc3RhdGUsIGluZGV4LCBzbG90KTsKQEAgLTE5MSwxMCArMTkxLDEwIEBAIHZvaWQgSlNUZXN0
RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBzdGF0ZSwKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50
VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0
LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKQorICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIGNvdW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsr
aSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaSkp
OwogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewotICAgICAgICBm
b3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPmltcGwoKS5zdXBwb3J0ZWRQcm9w
ZXJ0eU5hbWVzKCkpCisgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVj
dC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIHByb3BlcnR5TmFtZSkp
OwogICAgIH0KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIHN0YXRl
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4
ZWNTdGF0ZSogcwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIml0ZW0iKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFy
Z2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIHVuc2lnbmVk
IGluZGV4ID0gdG9VSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVy
c2lvbik7CkBAIC0yMjksNyArMjI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcigKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0
YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMjQ0
LDcgKzI0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJn
ZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0RXZlbnRUYXJnZXQiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1l
bnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI1OSw3ICsyNTksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBl
RnVuY3Rpb25EaXNwYXRjaEV2ZW50KEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFy
Z2V0IiwgImRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjc3LDEzICsyNzcsMTMg
QEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
RXZlbnRUYXJnZXQqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKLSAgICB0aGlzT2JqZWN0LT5pbXBsKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0
b3IpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7CiB9CiAKIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiBqc1Rlc3RFdmVudFRhcmdldCA9IGpzQ2Fz
dDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAo
anNUZXN0RXZlbnRUYXJnZXQtPmltcGwoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAg
aWYgKGpzVGVzdEV2ZW50VGFyZ2V0LT53cmFwcGVkKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXRP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNv
CiB7CiAgICAgYXV0byoganNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJn
ZXQqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLCBqc1Rlc3RFdmVudFRhcmdldCk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVudFRhcmdldC0+d3JhcHBlZCgpLCBqc1Rl
c3RFdmVudFRhcmdldCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0z
NDMsNyArMzQzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRUYXIKIFRlc3RFdmVudFRhcmdldCog
SlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odmFs
dWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHAKaW5kZXggMzVkYTBlNzU5ZTQ4MzliMTIzZjllNTIzY2RkMjYxNTlmMTkyYTFlNS4u
Y2FkNmU5OWRlNGM1MDEzMDg3OWUxMzUwMDI2MmRiMDkwOWFhMDAyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRp
b25OYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihzbG90QmFzZSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBKU1Rlc3RFeGNlcHRpb25Pd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnQKIHsK
ICAgICBhdXRvKiBqc1Rlc3RFeGNlcHRpb24gPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0RXhjZXB0aW9uLT5pbXBsKCksIGpzVGVzdEV4Y2VwdGlvbik7CisgICAgdW5jYWNoZVdyYXBw
ZXIod29ybGQsICZqc1Rlc3RFeGNlcHRpb24tPndyYXBwZWQoKSwganNUZXN0RXhjZXB0aW9uKTsK
IH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTIxOSw3ICsyMTksNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RFeGNlcHRpbwogVGVzdEV4Y2VwdGlvbiogSlNUZXN0RXhjZXB0aW9uOjp0
b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuY3BwCmluZGV4IDU3M2EwOTBhY2Y3YTg3MGUwYmI3MTliZmY3ZjE1YzE5Y2UxZTYzNTguLmM3
NDA2YWMxOTU0ZTkwOTJiYTU1ZjMyNGFmMWJjZTFkNWNkY2NkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBKU1ZhbHVlIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogYm9vbCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byoganNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwotICAgIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiByb290ID0gJmpz
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKTsKKyAgICBUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZSogcm9vdCA9ICZqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLT53cmFwcGVkKCk7CiAgICAg
cmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QpOwogfQogCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLAogewogICAgIGF1dG8qIGpzVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUgPSBqc0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKSwganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLT53
cmFwcGVkKCksIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOwogfQogCiAjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQpAQCAtMTgxLDcgKzE4MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEdlbmVy
YXRlCiBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IGQyZDdiODAxMzQ4ZmQ2Y2M0YzYxYTkxOWU3YjEyMDMwYzY2YjYxMjkuLmZkOGNlYTM1ZGMy
ZWZmZjBkNTRhZWUzMTM2NjE0MjJlMzVjMGJjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBA
IC00NjIsNyArNDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIs
ICJpbXBsZW1lbnRzU3RyMSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC00ODEsNyArNDgxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMigpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01MTIsNyArNTEyLDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJp
bXBsZW1lbnRzTm9kZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC5pbXBsZW1lbnRzTm9kZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxT
dHIxIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxT
dHIxKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
NTc0LDcgKzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsU3RyMiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKCZpbXBsKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNjA1LDcgKzYwNSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxOb2RlKCZpbXBs
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTY2Niw3ICs2
NjYsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzAy
LDcgKzcwMiw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIE5vZGUq
IG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03MzcsNyArNzM3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRp
dmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03NzMs
NyArNzczLDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIE5vZGUq
IG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03OTUsNyArNzk1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaW1wbC5pbXBsZW1lbnRzTWV0aG9kMSgpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC04MTAsNyArODEwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxl
bWVudHNNZXRob2QyKEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVt
ZW50c01ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg2MSw3ICs4NjEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxl
bWVudGFsTWV0aG9kMQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVt
ZW50YWxNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoJmltcGwpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC04NzYsNyArODc2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blN1cHBsZW1lbnRhbE1ldGhvZDIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtOTIyLDcgKzkyMiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5j
dGlvblN1cHBsZW1lbnRhbE1ldGhvCiBib29sIEpTVGVzdEludGVyZmFjZU93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIGpzVGVzdEludGVyZmFjZSA9
IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAg
aWYgKGpzVGVzdEludGVyZmFjZS0+aW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQorICAgIGlm
IChqc1Rlc3RJbnRlcmZhY2UtPndyYXBwZWQoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBm
YWxzZTsKQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEpTVGVzdEludGVyZmFjZU93bmVyOjpmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udAogewogICAg
IGF1dG8qIGpzVGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RJ
bnRlcmZhY2UtPmltcGwoKSwganNUZXN0SW50ZXJmYWNlKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdEludGVyZmFjZS0+d3JhcHBlZCgpLCBqc1Rlc3RJbnRlcmZhY2UpOwogfQog
CiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZhY2UqIGltcGwpCkBAIC05NjEsNyAr
OTYxLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50ZXJmYWMKIFRlc3RJbnRlcmZhY2UqIEpTVGVzdElu
dGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odmFsdWUpKQotICAgICAg
ICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFw
cGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAxZjQwY2NkZTVkMmFjY2RhNTM1YTE4MGE2ZmY1
ZDEyM2FlMmZmNzY1Li5kMDYxMWU1ZWVjYTU3NmU4NzkyN2M5NjRhMjIwZTk3YTVhZTY3MDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoIXN0YXRlLT5hcmd1
bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGwKIHsKICAgICBhdXRvKiBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyID0ganND
YXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLT5pbXBsKCksIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOworICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci0+d3JhcHBlZCgp
LCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RNZWRpYVF1ZQog
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPih2YWx1ZSkpCi0g
ICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXIt
PndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
Q29uc3RydWN0b3IuY3BwCmluZGV4IDYxZGUzOTI0YWI5YzI0NzE5MTBiYmEzZGI0MjQzMDgzM2Nj
MDU3ZTAuLmM4YTYxNjQ2YjgyZGQ5MWE1YzYzNzkyNmFkNTQzZjlhMWIyODAzZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBKU1ZhbHVl
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5hbWVkQ29uc3RydWN0b3IoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYgogYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byoganNUZXN0TmFtZWRDb25z
dHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFuZGxlLnNsb3QoKS0+
YXNDZWxsKCkpOwotICAgIGlmIChqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT5pbXBsKCkuaGFzUGVu
ZGluZ0FjdGl2aXR5KCkpCisgICAgaWYgKGpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPndyYXBwZWQo
KS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VE
X1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2
b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaQogewogICAgIGF1dG8qIGpzVGVzdE5hbWVkQ29uc3RydWN0
b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCktPmFzQ2Vs
bCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkQ29uc3RydWN0
b3ItPmltcGwoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7CisgICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53cmFwcGVkKCksIGpzVGVzdE5hbWVkQ29u
c3RydWN0b3IpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjIzLDcg
KzIyMyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkQ29uCiBUZXN0TmFtZWRDb25zdHJ1Y3Rvciog
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAKaW5kZXggNzljZDUxYjQ5N2JmODk3YzAxOTk3ZDA1YjJlMmY2NDkyZDEwZDdlZi4u
ZDBlYWEzMTc4OGY3MDEyOTZkZjAxZjBkYzAyNTA2MzA5ZDc0ZDFjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApA
QCAtMTI2LDcgKzEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5h
bWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RO
b2RlIiwgIm5hbWUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBz
ZXRKU1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGgKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3Rh
dGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpTVGVzdE5vZGU6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5vZGUqPihjZWxsKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5pbXBsKCkudmlz
aXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS52
aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKaW5kZXggOGZkMGQz
ZDIyY2Q0NWQ3OWNjYTdjY2FhM2FkYmExMzdkODA2NzkwNS4uMGM3MmEzMWJkYjZiY2JmOWIxN2E3
ZDZiYzExOWU1YjM0ODQ2MDAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBK
U0M6OlNsb3RWaXNpdG9yJik7CiAKLSAgICBUZXN0Tm9kZSYgaW1wbCgpIGNvbnN0CisgICAgVGVz
dE5vZGUmIHdyYXBwZWQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFRlc3ROb2RlJj4oQmFzZTo6aW1wbCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRl
c3ROb2RlJj4oQmFzZTo6d3JhcHBlZCgpKTsKICAgICB9CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0
Tm9kZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROb2RlPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCA1YzBhNTdhN2MxZTM2
N2UyZTAxMWZiZmU2NTljMjk5YjhmMWI5OTlkLi4xOTJhZTA4YWJjYjQ0NGNlNWYzMGMyNjYxOTQy
N2Q5MzQ4NzQxYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCkBAIC0x
NTIsNyArMTUyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNSZWFkb25seUF0dHIoRXhlY1N0YXRlKiBzdGEKICAgICBJbnB1dEN1cnNvciYg
Y3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5p
c3RpYy5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7Ci0gICAgICAg
IGludCBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS5ub25kZXRlcm1pbmlzdGlj
UmVhZG9ubHlBdHRyKCk7CisgICAgICAgIGludCBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKCk7CiAgICAgICAgIGN1cnNv
ci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxpbnQ+PihiaW5kaW5nTmFtZS5nZXQoKS5z
dHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKG1lbW9pemVkUmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0ZSogc3RhCiAgICAg
ICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTg5LDcgKzE4OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3Jp
dGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2Jh
bE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJt
aW5pc3RpY1dyaXRlYWJsZUF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9p
emVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVB
dHRyKCk7CisgICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKS5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cigpOwogICAgICAgICBjdXJzb3IuYXBw
ZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0KCkuc3Ry
aW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNT
dGF0ZSogc3QKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5vbmRl
dGVybWluaXN0aWNXcml0ZWFibGVBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdAog
ICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUo
IlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1
cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmlt
cGwoKS5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigpOworICAgICAgICBTdHJpbmcgbWVt
b2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY0V4Y2Vw
dGlvbkF0dHIoKTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0
PFN0cmluZz4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgMCk7
CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG1lbW9p
emVkUmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MjQxLDcgKzI0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25k
ZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgICAgIH0KICAgICB9
CiAjZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yNjQsNyArMjY0
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0g
Z2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25k
ZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAgICAgICBT
dHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJtaW5pc3Rp
Y0dldHRlckV4Y2VwdGlvbkF0dHIoZWMpOworICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0
dHIoZWMpOwogICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3Ry
aW5nPj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCBlYyk7CiAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG1lbW9pemVk
UmVzdWx0KTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC0yODEsNyAr
MjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWlu
aXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICAgICAgfQogICAgIH0KICNlbmRp
ZgotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKGVj
KSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVj
U3RhCiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3Io
KTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5kaW5n
TmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlv
bkF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoY3Vy
c29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gY2Fz
dGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCk7Cisg
ICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5ub25k
ZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cigpOwogICAgICAgICBjdXJzb3IuYXBwZW5k
SW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5n
KCksIG1lbW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMTksNyArMzE5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4
ZWNTdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5vbmRldGVy
bWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
UwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVy
bWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NSw3ICszNjUs
NyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0
aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKUwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0V4
Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YQog
ICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWlu
aXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTQwNSw3ICs0
MDUsNyBAQCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0
dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00MjcsNyArNDI3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlRnVu
Y3Rpb25Ob25kZXRlcm1pbmkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGlj
IiwgIm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0OwogI2lmIEVOQUJMRShX
RUJfUkVQTEFZKQogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5pbnB1dEN1cnNvcigpOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyA9IGpzQ2Fz
dDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy0+aW1wbCgp
LCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpz
VGVzdE5vbmRldGVybWluaXN0aWMtPndyYXBwZWQoKSwganNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyk7
CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC01MTIsNyArNTEyLDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0Tm9uZGV0ZXIKIFRlc3ROb25kZXRlcm1pbmlzdGljKiBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4odmFs
dWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5k
ZXggNjkzNWM3M2M5YjE2NzRlMmQ0NDYxMDcyOTg4OTFmNWNiZmM1MjEyMy4uNzdiYTRlZDhjODY5
ZmQ1OGFiZjUzZjBiNzUyNzM3OTUyZDQzZTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTc0MSw3ICs3NDEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5TG9uZ0F0dHIi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVhZE9ubHlMb25nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNzU4LDcgKzc1OCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
YWRPbmx5U3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5yZWFkT25seVN0cmlu
Z0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNzc1
LDcgKzc3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlU
ZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnJlYWRPbmx5VGVzdE9iakF0dHIoKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTgxNyw5ICs4MTcsOSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBpZiAoIWNhc3RlZFRoaXMtPmltcGwoKS5mcmFt
ZSgpKQorICAgIGlmICghY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgU2V0dGluZ3MmIHNldHRp
bmdzID0gY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCktPnNldHRpbmdzKCk7CisgICAgU2V0dGlu
Z3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdzKCk7
CiAgICAgaWYgKCFzZXR0aW5ncy50ZXN0U2V0dGluZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpKSk7CkBAIC04MzcsNyArODM3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgaW1wbC5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC04NTQsNyArODU0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJieXRlQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVBdHRyKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTg3MSw3ICs4NzEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC5vY3RldEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtODg4LDcgKzg4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
c2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnNob3J0QXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05MDUsNyArOTA1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVk
U2hvcnRBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRTaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTIyLDcgKzkyMiw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5s
b25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05
MzksNyArOTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9u
Z0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0xvbmdBdHRyKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTk1Niw3ICs5NTYsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVu
c2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTczLDcgKzk3Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdB
dHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTkwLDcgKzk5MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwudGVzdE9i
akF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEw
MDcsNyArMTAwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2Jq
QXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLnhtbE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTEwMjQsNyArMTAyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5pc0NyZWF0ZSgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDQxLDcgKzEwNDEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN5bWJvbEF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5U3ltYm9sQXR0
ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWFkT25seVN5bWJvbEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gU3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksICooaW1wbC5y
ZWFkT25seVN5bWJvbEF0dHIoKSkudWlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTEwNjgsNyArMTA2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTEwODUsNyArMTA4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFs
QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTExMDIsNyArMTEwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5z
aWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJbnRlZ3JhbEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0
cikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTE5LDcg
KzExMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJv
b2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmZhc3RIYXNBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTM2LDcgKzExMzYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkVVJMQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTExNTMsNyArMTE1Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmZhc3RHZXRBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTcwLDcgKzExNzAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmdldEludGVn
cmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0
ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMTg3
LDcgKzExODcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29s
ZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogcwogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihp
bXBsLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50Qm9v
bGVhbkF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtMTIwNCw3ICsxMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudFVSTEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTIyMSw3ICsxMjIxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVHlw
ZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmMKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50eXBlZEFycmF5QXR0cigpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTIzOSw3ICsxMjM5
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdldHRlckV4Y2VwdGlv
bihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjc1LDcgKzEyNzUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIp
OwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0
ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyOTMsNyAr
MTI5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTMxMCw3ICsxMzEwLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0
dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuc3RyaWN0VHlwZUNoZWNraW5nQXR0
cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0x
MzM4LDcgKzEzMzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbAogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvbmZvbyIpOwogICAgIH0K
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXZl
bnRIYW5kbGVyQXR0cmlidXRlKGNhc3RlZFRoaXMtPmltcGwoKSwgZXZlbnROYW1lcygpLmZvb0V2
ZW50KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShldmVudEhhbmRsZXJBdHRyaWJ1dGUo
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQpKTsKIH0KIAogCkBA
IC0xMzUzLDcgKzEzNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsbwogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTM3MCw3ICsxMzcwLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJp
YnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKCpzdGF0ZSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEzOTAsNyArMTM5MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
KHNjcmlwdENvbnRleHQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQpAQCAtMTQwOCw3ICsxNDA4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWMKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihz
dGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0MzAs
NyArMTQzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhCiAgICAgYXV0byogc2NyaXB0Q29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzKHNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTE0NTEsNyArMTQ1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiAgICAgYXV0byog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCBzY3JpcHRDb250
ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE0NzIs
NyArMTQ3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoCiAgICAgYXV0byogc2NyaXB0Q29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCBzY3JpcHRDb250ZXh0
LCBlYykpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc0F0dHJpYgogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUxMCw3ICsxNTEwLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0
cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUyOCw3ICsxNTI4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KQEAgLTE1NDcsNyArMTU0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwuY29uZGl0aW9uYWxBdHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0xNTY2LDcgKzE1NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQog
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LmNvbmRpdGlvbmFsQXR0cjMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtMTYyMiw3ICsxNjIyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVk
QXR0cmlidXRlMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICB9
CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJp
YnV0ZTEuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBsLmNhY2hl
ZEF0dHJpYnV0ZTEoKS5oYXNOb1ZhbHVlKCkgPyBqc051bGwoKSA6IGltcGwuY2FjaGVkQXR0cmli
dXRlMSgpLmpzVmFsdWUoKSk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLnNl
dChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjQyLDcgKzE2NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1f
Y2FjaGVkQXR0cmlidXRlMi5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
KGltcGwuY2FjaGVkQXR0cmlidXRlMigpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDogaW1wbC5j
YWNoZWRBdHRyaWJ1dGUyKCkuanNWYWx1ZSgpKTsKICAgICBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0
dHJpYnV0ZTIuc2V0KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2NjAsNyArMTY2MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFueUF0dHJpYnV0ZSIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1w
bC5hbnlBdHRyaWJ1dGUoKS5oYXNOb1ZhbHVlKCkgPyBqc051bGwoKSA6IGltcGwuYW55QXR0cmli
dXRlKCkuanNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9j
dW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hvdWxkQWxsb3dBY2Nlc3NU
b05vZGUoc3RhdGUsIGltcGwuY29udGVudERvY3VtZW50KCkpID8gdG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuY29udGVudERvY3VtZW50KCkp
KSA6IGpzTnVsbCgpKTsKIH0KIApAQCAtMTY4OCw3ICsxNjg4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0
eVRlYXJPZmY8VGVzdE9iaiwgU1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbCwgaW1wbC5tdXRhYmxlUG9p
bnQoKSwgJlRlc3RPYmo6OnVwZGF0ZU11dGFibGVQb2ludCkpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzA1LDcgKzE3MDUsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuYwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludCgpKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3MjIsNyArMTcyMiw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJhd2Jl
cnJ5Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTE3MzksNyArMTczOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5zdHJpY3RG
bG9hdCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzU2
LDcgKzE3NTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImRlc2NyaXB0
aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImRlc2NyaXB0aW9uIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZGVzY3JpcHRpb24oKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTc3Myw3ICsxNzczLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuaWQoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTc5MCw3ICsxNzkwLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJoYXNoIik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImhhc2giKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuaGFzaCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC0xODA3LDcgKzE4MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJh
cwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRl
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwucmVwbGFjZWFibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTgyNSw3ICsxODI1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsb3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051
bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLm51bGxhYmxlRG91YmxlQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlmIChp
c051bGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTg0
NSw3ICsxODQ1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmEKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nQXR0cmli
dXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdBdHRy
aWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CkBAIC0xODY1LDcgKzE4NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsbwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051
bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4oaW1wbC5udWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYg
KGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0x
ODg1LDcgKzE4ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ0F0
dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlmIChpc051bGwpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTkwNSw3ICsxOTA1
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKGlzTnVsbCkpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYm9v
bCBpc051bGwgPSBmYWxzZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYykpOwogICAg
IHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIGlmIChpc051bGwpCkBAIC0xOTQ2LDcg
KzE5NDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJhdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cmlidXRlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE5NjMsNyArMTk2Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVk
RW51bVR5cGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTk4MCw3ICsxOTgwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRG
b3J3YXJkc0F0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1
dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKGltcGwucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjA0Nyw3ICsyMDQ3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNjksNyArMjA2OSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJh
c2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludDhfdCBuYXRpdmVWYWx1ZSA9IHRvSW50OChz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMDg5LDcgKzIwODksNyBAQCB2
b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWludDhfdCBuYXRpdmVWYWx1ZSA9IHRvVUludDgo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEwOSw3ICsyMTA5LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJh
c2VPYmplY3QsIEVuY29kZWRKU1ZhbHUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludDE2X3QgbmF0aXZlVmFsdWUgPSB0b0ludDE2
KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMjksNyArMjEyOSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuY29kCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHVpbnQxNl90IG5hdGl2ZVZhbHVl
ID0gdG9VSW50MTYoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE0OSw3
ICsyMTQ5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMTY5LDcgKzIx
NjksNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgbG9uZyBsb25nIG5hdGl2ZVZh
bHVlID0gdG9JbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMTg5
LDcgKzIxODksNyBAQCB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMjA5LDcgKzIyMDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0
cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRK
U1ZhbAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJzdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFs
dWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMjI5LDcgKzIyMjksNyBAQCB2b2lkIHNldEpTVGVzdE9ialRlc3RP
YmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNW
YQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0
ZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjI0OSw3ICsyMjQ5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjI2OSw3ICsyMjY5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHQKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGJvb2wgbmF0aXZlVmFs
dWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjg5LDcgKzIyODksNyBAQCB2b2lk
IHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZh
bHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMDksNyArMjMw
OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZl
VmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIz
MjksNyArMjMyOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIHVuc2lnbmVkIG5hdGl2ZVZhbHVlID0gdG9VSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjM0OSw3ICsyMzQ5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVj
dCwgRW4KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIzNjksNyArMjM2OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
VVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZFVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2so
c3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjM4OSw3ICsyMzg5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0
aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNDA5LDcgKzI0MDksNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iagogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNDI5LDcgKzI0
MjksNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29s
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0OSw3ICsyNDQ5
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRp
dmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI0NjksNyArMjQ2OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0
cjxGbG9hdDMyQXJyYXk+IG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBA
IC0yNDg5LDcgKzI0ODksNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4
Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI1MDksNyArMjUwOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCBuYXRpdmVWYWx1
ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTI1MzEsNyArMjUzMSw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNTUxLDcg
KzI1NTEsNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50
b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTI1NzMsNyArMjU3Myw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3Ry
aWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkgJiYgIXZhbHVlLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkpIHsKICAgICAg
ICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RUeXBl
Q2hlY2tpbmdBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm47CkBAIC0yNjA5
LDcgKzI2MDksNyBAQCB2b2lkIHNldEpTVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aAogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvbmZvbyIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUsICpjYXN0ZWRU
aGlzLCBjYXN0ZWRUaGlzLT5pbXBsKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCwgdmFsdWUpOwor
ICAgIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRU
aGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCwgdmFsdWUpOwogfQogCiAKQEAg
LTI2MjUsNyArMjYyNSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0CiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI2NDUsNyArMjY0NSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhD
YWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY2NSw3ICsyNjY1LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVz
dE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2
ODgsNyArMjY4OCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlCiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjcwOCw3ICsyNzA4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBKU08KICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rl
c3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3MzEsNyArMjczMSw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTI3NTQsNyArMjc1NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NzcsNyArMjc3Nyw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0
b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CkBAIC0yODAwLDcgKzI4MDAsNyBAQCB2b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2
ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yODIxLDcgKzI4MjEs
NyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9
IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg0Myw3ICsy
ODQzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFs
dWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4NjUs
NyArMjg2NSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2
ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0y
OTMxLDcgKzI5MzEsNyBAQCB2b2lkIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVgogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgbmF0aXZlVmFsdWUgPSB7IHN0YXRlLT52bSgpLCB2YWx1ZSB9OwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBA
IC0yOTUxLDcgKzI5NTEsNyBAQCB2b2lkIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVgogICAgICAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yOTcxLDcgKzI5NzEsNyBAQCB2b2lkIHNldEpTVGVzdE9iakltbXV0
YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVk
SgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJp
bW11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpT
U1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5OTEsNyArMjk5MSw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
amVjdCwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDExLDcgKzMwMTEsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBFbmNvZGVkSlNWYQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBmbG9hdCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvRmxvYXQo
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm47CkBAIC0zMDMxLDcgKzMwMzEsNyBAQCB2b2lkIHNldEpTVGVzdE9iaklkKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgog
ICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpZCIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQg
bmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTMwNjgsNyArMzA2OCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1Nl
dHRhYmxlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzA4OCw3ICszMDg4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpO
dWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1
ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMDgsNyArMzEwOCw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMTMwLDcgKzMxMzAs
NyBAQCB2b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIFJlZjxUZXN0Tm9kZT4gZm9yd2FyZGVkSW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKS5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpOworICAgIFJlZjxUZXN0Tm9kZT4g
Zm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wdXRGb3J3YXJkc0F0dHJpYnV0
ZSgpOwogICAgIGF1dG8mIGltcGwgPSBmb3J3YXJkZWRJbXBsLmdldCgpOwogICAgIFN0cmluZyBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMzE1MSw3ICszMTUxLDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIFJlZlB0cjxUZXN0Tm9kZT4gZm9yd2FyZGVkSW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKS5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKCk7CisgICAg
UmVmUHRyPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1
dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKTsKICAgICBpZiAoIWZvcndhcmRlZEltcGwpCiAg
ICAgICAgIHJldHVybjsKICAgICBhdXRvJiBpbXBsID0gKmZvcndhcmRlZEltcGw7CkBAIC0zMTc0
LDcgKzMxNzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIHN0YQogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ2b2lkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGltcGwudm9pZE1ldGhvZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC0zMTg2LDcgKzMxODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbG9uZ0FyZyA9IHRvSW50MzIo
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMjA5LDcg
KzMyMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YQogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJieXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlTWV0aG9kKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMyMjEsNyArMzIyMSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9k
V2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVNZXRob2RX
aXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludDhf
dCBieXRlQXJnID0gdG9JbnQ4KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZl
cnNpb24pOwpAQCAtMzI0NCw3ICszMjQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3QKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0
aG9kKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMyNTYs
NyArMzI1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICB1aW50OF90IG9jdGV0QXJnID0gdG9VSW50OChzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMyNzksNyArMzI3OSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25n
TWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdN
ZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLmxvbmdNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMzI5MSw3ICszMjkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhFeGVj
U3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ01ldGhvZFdpdGhBcmdzIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdBcmcgPSB0b0lu
dDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzMx
NCw3ICszMzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0YXQKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib2JqTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFdURjo6Z2V0UHRyKGltcGwub2JqTWV0aG9kKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0zMzI2LDcgKzMzMjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhl
Y1N0YQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvYmpNZXRob2RXaXRoQXJncyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9J
bnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMz
NDksNyArMzM0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4+IHNlcXVl
bmNlQXJnID0gKHRvUmVmUHRyTmF0aXZlQXJyYXk8U2NyaXB0UHJvZmlsZSwgSlNTY3JpcHRQcm9m
aWxlPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNTY3JpcHRQcm9maWxlOjp0b1dyYXBw
ZWQpKTsKQEAgLTMzNjYsNyArMzM2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShFCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFJldHVybmluZ1NlcXVlbmNlIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdBcmcgPSB0b0ludDMy
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzM4Myw3
ICszMzgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICAvLyBLZWVwIHBvaW50ZXIgdG8gdGhlIEpTU3RyaW5nIGluIGEgbG9jYWwg
c28gd2UgZG9uJ3QgbmVlZCB0byByZWYgdGhlIFN0cmluZy4KQEAgLTM0MDQsNyArMzQwNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1l
dGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291
bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM0MzMsNyArMzQzMyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RUaGF0UmVxdWlyZXNBbGxBcmdzCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhv
ZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM0NTYsNyArMzQ1Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25TZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InNlcmlhbGl6ZWRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRBcmcgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAwLCAwKTsK
QEAgLTM0NzMsNyArMzQ3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSoKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAib3B0aW9uc09iamVjdCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIERpY3Rpb25hcnkgb28gPSB7IHN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkgfTsKQEAgLTM0OTMsNyArMzQ5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW1w
bC5tZXRob2RXaXRoRXhjZXB0aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVj
KTsKQEAgLTM1MjcsNyArMzUyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSoKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicHJpdmF0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmluZyBhcmd1bWVudCA9IHN0YXRlLT5hcmd1bWVudCgw
KS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKQEAgLTM1NDQsNyArMzU0NCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRF
dmVudExpc3RlbmVyKEV4ZWNTdGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFkZEV2
ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBs
aXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVy
LmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtMzU1OSw3ICszNTU5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50
KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTc0LDcgKzM1NzQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0U3RhdGVWb2lkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlt
cGwud2l0aFNjcmlwdFN0YXRlVm9pZCgqc3RhdGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0zNTg2LDcgKzM1ODYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
T2JqKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVP
YmoiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53
aXRoU2NyaXB0U3RhdGVPYmooKnN0YXRlKSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtMzYwMCw3ICszNjAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHQKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oKnN0YXRlLCBlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC0zNjE0LDcgKzM2MTQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0
YXRlT2JqRXhjZXB0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24oKnN0YXRlLCBlYykpKTsKIApAQCAtMzYzMSw3ICszNjMxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMzY0Niw3ICszNjQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBzY3JpcHRDb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjYx
LDcgKzM2NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhj
ZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKQEAgLTM2ODEsNyArMzY4MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2OTgsNyArMzY5OCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoSW5z
cGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoc3RhdGUsIDApKTsKICAgICBpbXBsLndpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soc2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM3MTEsNyArMzcx
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
IAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlm
IChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzczMyw3ICszNzMzLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZ0FuZEQKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFs
QXJnQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAg
c2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3ND
b3VudCA8PSAwKSB7CkBAIC0zNzU1LDcgKzM3NTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdB
bmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGludCBub25PcHQgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtMzc4Miw3ICszNzgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5k
VHdvT3B0aW9uYWxBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgaW50IG5vbk9wdCA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFs
Q29udmVyc2lvbik7CkBAIC0zODE3LDcgKzM4MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmci
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0g
c3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM4
MzksNyArMzgzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0
ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzg2MSw3
ICszODYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS50
b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTM4NzYsNyArMzg3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0
cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgc3RyID0gc3Rh
dGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM4OTEsNyArMzg5MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tBcmcoRXhlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFj
a0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmICghc3Rh
dGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCkBAIC0zOTA4LDcgKzM5MDgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGludCBub25DYWxsYmFjayA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zOTI4LDcgKzM5MjgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrQW5kT3B0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIXN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCkBAIC0zOTQ2LDcgKzM5NDYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENhbGxiYWNrRnVuY3RpbwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
Q2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKQEAgLTM5NjMsNyAr
Mzk2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9uQ2FsbGJhY2sg
PSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMzk4Myw3ICszOTgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW8KICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
ZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNr
RnVuY3Rpb24+IGNhbGxiYWNrOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
aXNGdW5jdGlvbigpKQpAQCAtNDAyNSw3ICs0MDI1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShFeGVj
U3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QxIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQwNDAsNyArNDA0MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDIoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFs
TWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmNvbmRpdGlv
bmFsTWV0aG9kMigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CkBAIC00MDU1LDcgKzQwNTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEV4ZWNTdAogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDA2OSw3ICs0MDY5LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgwKSk7CkBAIC00MDg5LDcgKzQwODksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKAogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQxMTYsNyArNDExNiw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDMoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBT
dHJpbmcgc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwpAQCAtNDEzMyw3ICs0MTMzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNCgKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBsb25nQXJnID0gdG9JbnQzMihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTQxNTAsNyArNDE1
MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQpAQCAtNDE2Nyw3ICs0
MTY3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0QXJnID0gdG9ET01TdHJpbmdMaXN0
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDE4NCw3ICs0MTg0LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNygKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRl
ZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCkpOwpAQCAtNDIwMSw3ICs0MjAxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
OCgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjE4LDcgKzQyMTgs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjM1LDcgKzQyMzUsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxMAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVu
c2lnbmVkPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCkpOwpAQCAtNDI1Miw3ICs0MjUyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MTEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFN0cmluZyBzdHJBcmcgPSBzdGF0
ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00MjY5LDcg
KzQyNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMgogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291
bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBp
ZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKS5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkp
CkBAIC00MzIxLDcgKzQzMjEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaQogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVy
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2Jq
QXJnMSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MzQ4
LDcgKzQzNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaQogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ0NjUsNyArNDQ2NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhDbGFtcChFeGVjCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgdW5zaWduZWQgc2hvcnQgb2JqQXJnc1Nob3J0ID0gMDsKQEAgLTQ0OTUsNyArNDQ5
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gdW5zaWduZWRMb25nU2VxdWVu
Y2UgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsK
QEAgLTQ1MTIsNyArNDUxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ1MzIs
NyArNDUzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDU1Miw3ICs0NTUy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhcnJheUFyZyA9IHRv
TmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDU3
Miw3ICs0NTcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gYXJy
YXlBcmcgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDAp
KTsKQEAgLTQ1OTIsNyArNDU5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImdldFNWR0RvY3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb05vZGUoc3RhdGUsIGltcGwuZ2V0U1ZHRG9jdW1lbnQoZWMpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC00NjA5LDcgKzQ2MDksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
dmVydDEoRXhlY1N0YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb252
ZXJ0MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3ROb2Rl
KiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAt
NDYyNiw3ICs0NjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEV4ZWNTdGF0ZSogc3RhdGUKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29udmVydDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUt
PmFyZ3VtZW50KDApKTsKQEAgLTQ2NDMsNyArNDY0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIHN0
YXRlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQ0Iik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9k
ZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00NjYwLDcgKzQ2NjAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
dmVydDUoRXhlY1N0YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb252
ZXJ0NSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3ROb2Rl
KiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAt
NDY3Nyw3ICs0Njc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWMKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6
Y3JlYXRlKGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00Njg5LDcgKzQ2ODksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRG
dW5jdGlvbihFeAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludEZ1
bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNW
R1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVu
Y3Rpb24oKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00
NzAxLDcgKzQ3MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bXBsLmJhbmFuYSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CkBAIC00NzEzLDcgKzQ3MTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oRXhlY1N0YXRlKgogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDczOSw3
ICs0NzM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmMKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ3NjQsNyAr
NDc2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhBcnJheShFCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFycmF5Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00Nzg5LDcgKzQ3ODks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIFN0cmluZyBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRl
KS0+dmFsdWUoc3RhdGUpOwpAQCAtNDgwOSw3ICs0ODA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9k
KEV4ZWMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNEb3VibGVNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBkb3VibGUgaGVhZCA9
IHN0YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7CkBAIC00ODI5LDcgKzQ4MjksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2
YXJpYWRpY05vZGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBOb2RlKiBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsK
QEAgLTQ4NTIsNyArNDg1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiYW55Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgZmxvYXQgYSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Zsb2F0KHN0YXRlKTsKQEAgLTQ4
NzgsNyArNDg3OCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uKERlZmVycmVkV3JhcHBlcihzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC00ODk2LDcgKzQ4OTYs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBmbG9hdCBhID0gc3RhdGUtPmFyZ3VtZW50KDApLnRv
RmxvYXQoc3RhdGUpOwpAQCAtNDkyMyw3ICs0OTIzLDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
RXgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhF
eGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihEZWZl
cnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVm
ZXJyZWQpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC00OTQzLDcg
KzQ5NDMsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUt
PmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTQ5NzgsNyAr
NDk3OCw3IEBAIHZvaWQgSlNUZXN0T2JqT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIGF1dG8qIGpzVGVzdE9iaiA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYg
d29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5j
YWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPYmotPmltcGwoKSwganNUZXN0T2JqKTsKKyAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE9iai0+d3JhcHBlZCgpLCBqc1Rlc3RPYmopOwog
fQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtNTAyOCw3ICs1MDI4LDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0T2JqKiBpbXAKIFRlc3RPYmoqIEpTVGVzdE9iajo6dG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRl
eCBkZDUwYmEyNmUxZWMyZDI4OTM4ZDA2YjA3MmY5NzFiNTk0Y2JiMzkzLi5kZTRhYmZhY2Y4NGFh
ZjcxMDU4ZjNiYmVhMDkxMjkxOGYyZWQzZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGwKIHsKICAgICBhdXRvKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0ganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLT5pbXBsKCksIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOworICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+d3JhcHBlZCgp
LCBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZAog
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPih2YWx1ZSkpCi0g
ICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXIt
PndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwCmluZGV4IDNkOTdiMTNjYWJiMDczZDE0MWI2NGE1OTc0NzMyN2YxZjhl
ZTg2YTQuLjQxZjNmMjQ5MjIxMWI0NGRhYmNmZjk3MmFkMmI0MjVjN2MwNjc2ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3Zl
cnJpZGVCdWlsdGlucyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPmlt
cGwoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCisgICAgICAgIGZvciAoYXV0byYgcHJvcGVy
dHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkK
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsIHByb3BlcnR5TmFtZSkpOwogICAgIH0KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKQEAgLTE5Miw3ICsxOTIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE92ZXJy
aWRlQnVpbHRpbnMiLCAibmFtZWRJdGVtIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmFtZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaQogewogICAgIGF1dG8q
IGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdE92ZXJyaWRlQnVpbHRpbnMtPmltcGwoKSwganNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zLT53cmFw
cGVkKCksIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdf
SU5URUdSSVRZKQpAQCAtMjYxLDcgKzI2MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlCiBU
ZXN0T3ZlcnJpZGVCdWlsdGlucyogSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6dG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGJjNzVkMmVhNWNlZmZjZGM0ZWE3ZGI4NmFm
MjliOTQ4NWM3MjE0ZjguLjNhMzI3MjFlYjFlOTJiYzE5MGEzZDBhZmVlNTI0ZDE1NTYzMWM4NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmoKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBpbXBsLnZhbHVlKCkgPyBpbXBsLnZhbHVlKCktPmRlc2VyaWFsaXpl
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlW
YWx1ZShFeGVjU3RhdGUqIHN0YXQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIs
ICJyZWFkb25seVZhbHVlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFs
dWUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
aW1wbC5yZWFkb25seVZhbHVlKCkgPyBpbXBsLnJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJpYWxpemUo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlLAogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9
IGNhc3RlZFRoaXMtPm1fY2FjaGVkVmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FjaGVkVmFsdWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGltcGwuY2FjaGVkVmFsdWUoKSA/IGltcGwuY2FjaGVkVmFsdWUoKS0+ZGVzZXJp
YWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwog
ICAgIGNhc3RlZFRoaXMtPm1fY2FjaGVkVmFsdWUuc2V0KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlz
LCByZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE5MSw3
ICsxOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQb3J0cyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iagogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlIiwgInBvcnRzIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInBvcnRz
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
QXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnBvcnRzKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIxMCw3ICsyMTAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNo
ZWRSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRW
YWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkUmVhZG9ubHlWYWx1ZS5nZXQoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5jYWNoZWRSZWFkb25seVZhbHVlKCkgPyBpbXBs
LmNhY2hlZFJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIGNhc3RlZFRoaXMtPm1fY2FjaGVkUmVh
ZG9ubHlWYWx1ZS5zZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgc2V0
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgc2V0SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93CiB7CiAgICAgYXV0byoganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS0+aW1wbCgpLCBqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAm
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLT53cmFwcGVkKCksIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCkBAIC0zNDAsNyArMzQwLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2VyaWFsaXoKIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAg
ICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGMyM2RmZTJkYzk3OGE0YmE0MjYzMjhkMzQ1MzY0
NzIzMDA5MzFiN2YuLjRlNGNmZTg1YTIwN2VlMWE3NmYyM2JjY2FmODAyYzI3OWYxZTgwODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpz
dGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjM3LDcgKzIzNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5pbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA/IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNj
cmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0yNjUsNyArMjY1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBl
Yyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjgzLDcgKzI4Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPCiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
ZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMTksNyArMzE5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBKU08KICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMi
LCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGlt
cGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlw
ZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFz
ZU9iamVjCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlw
ZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG5hdGl2ZVZhbHVl
ID0gdG9VSW50NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY1LDcg
KzM2NSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0
VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNj
cmlwdFZhbHVlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzg1LDcg
KzM4NSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBzZXRK
U1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC00NDcsNyAr
NDQ3LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVl
LnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRlKiBz
dGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5h
cmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC00OTEsNyArNDkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSoKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBl
ZGVmcyIsICJzZXRTaGFkb3ciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGZsb2F0IHdpZHRoID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvRmxvYXQoc3RhdGUp
OwpAQCAtNTMyLDcgKzUzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8UmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4+IHNlcXVlbmNlQXJnID0gKHRvUmVmUHRyTmF0aXZlQXJyYXk8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBKU1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSwgJkpTU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1dyYXBwZWQpKTsKQEAg
LTU0OSw3ICs1NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKEV4ZQogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgIm51bGxhYmxlQXJyYXlBcmciKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5QXJnID0gdG9O
YXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNTY2LDcg
KzU2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAiZnVuY1dpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZzEgPSAwOwpAQCAtNjAzLDcg
KzYwMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3RpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2lu
dD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC02MTUsNyArNjE1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
QXJyYXlGdW5jdGlvbigKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdB
cnJheUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTYzNSw3ICs2MzUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdB
cnJheUZ1bmN0aW9uMgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0Fy
cmF5RnVuY3Rpb24yIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTY1NSw3ICs2NTUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0
aFNlcXVlbmNlVGhhdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImNhbGxXaXRo
U2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8UmVmUHRyPFRlc3RFdmVudFRhcmdldD4+IHNlcXVl
bmNlQXJnID0gKHRvUmVmUHRyTmF0aXZlQXJyYXk8VGVzdEV2ZW50VGFyZ2V0LCBKU1Rlc3RFdmVu
dFRhcmdldD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgJkpTVGVzdEV2ZW50VGFyZ2V0Ojp0
b1dyYXBwZWQpKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZz
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpOwpAQCAtNjkwLDcgKzY5MCw3IEBAIHZvaWQgSlNUZXN0VHlwZWRlZnNPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRl
CiB7CiAgICAgYXV0byoganNUZXN0VHlwZWRlZnMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c1Rlc3RUeXBlZGVmcy0+aW1wbCgpLCBqc1Rlc3RUeXBlZGVmcyk7CisgICAgdW5jYWNoZVdyYXBw
ZXIod29ybGQsICZqc1Rlc3RUeXBlZGVmcy0+d3JhcHBlZCgpLCBqc1Rlc3RUeXBlZGVmcyk7CiB9
CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC03NDAsNyArNzQwLDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0VHlwZWRlZnMKIFRlc3RUeXBlZGVmcyogSlNUZXN0VHlwZWRlZnM6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBw
ZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCmluZGV4IDY0YWYzMTg0YWJlYjYzOWY2NGU4
M2NmNzI1YmU4NmMxMzUwMDFiMjYuLmUyZmNiYWZiMjBlM2E0YWNlNmM4MWRmZDFiYTRkZjE5YTZm
ZGMxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzYXR0cmlidXRlUmVhZG9ubHkoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpzdGF0ZSwgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBpbXBsLnJlYWRvbmx5KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEpTYXR0cmlidXRlT3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQog
ewogICAgIGF1dG8qIGpzYXR0cmlidXRlID0ganNDYXN0PEpTYXR0cmlidXRlKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNhdHRyaWJ1
dGUtPmltcGwoKSwganNhdHRyaWJ1dGUpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNh
dHRyaWJ1dGUtPndyYXBwZWQoKSwganNhdHRyaWJ1dGUpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYXR0cmlidXRlKiBp
CiBhdHRyaWJ1dGUqIEpTYXR0cmlidXRlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZSo+KHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAK
aW5kZXggNTRmY2E4Yzc3OTBiNzhkYmUxNjM4YWQ5NmQ5Yzg0NTEzYWU3NWQ2NS4uY2VlODI1Mjc2
NjU3ZjU2YzM3ZWM4ZDIzY2VlYmM4OWEyMmY0MTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIHZvaWQgSlNyZWFkb25seU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBhdXRvKiBqc3JlYWRvbmx5
ID0ganNDYXN0PEpTcmVhZG9ubHkqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0
byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqc3JlYWRvbmx5LT5pbXBsKCksIGpzcmVhZG9ubHkpOwor
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNyZWFkb25seS0+d3JhcHBlZCgpLCBqc3JlYWRv
bmx5KTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCByZWFkb25seSogaW1wbCkKQEAgLTE2
MCw3ICsxNjAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5KiBpbQogcmVhZG9ubHkqIEpTcmVhZG9u
bHk6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBqc0R5bmFtaWNDYXN0PEpTcmVhZG9ubHkqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAKaW5kZXggMzkxNDA4NTFjMjdhZDljMzg2ZTM4MTg0ODk0ODU0ZTM5OWQwOTM5NC4uYjEy
NjEyN2VkMmY0NDdiNDQ2YzhhYTE1ZmEwZDBmNjY5YzNjOTJhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYWxsaW5nIGEgcnVudGltZSBvYmplY3Qgb2YgYSBw
bHVnaW4gZWxlbWVudD8KICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0hUTUxFbGVt
ZW50OjppbmZvKCkpKQotICAgICAgICAgICAgaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShqc0Nh
c3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpLT5pbXBsKCkpOworICAgICAg
ICAgICAgaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpLT53cmFwcGVkKCkpOwogICAgICAgICBpZiAoIWluc3RhbmNlKQog
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGEz
NzU1ZDlmM2Y4NDdkOWIzZmJiMDhlYWJmZGVlNjU5MDU2NzhjNTkuLjg1ZTZkMGE5NDJkMDY4NDIx
YzE4NjA4ODFhY2Q2ZDk3MjdhNWE2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdAogICAgIGlmICghaW5zcGVjdGVkV2luZG93KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
RE9NV2luZG93KHNjcmlwdFN0YXRlLCBpbnNwZWN0ZWRXaW5kb3ctPmltcGwoKSwgRG9Ob3RSZXBv
cnRTZWN1cml0eUVycm9yKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRE9NV2luZG93KHNjcmlwdFN0YXRlLCBpbnNwZWN0ZWRXaW5kb3ctPndyYXBwZWQo
KSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKTsKIH0KIAogSW5zcGVjdG9yRnVuY3Rpb25DYWxs
SGFuZGxlciBJbnNwZWN0b3JDb250cm9sbGVyOjpmdW5jdGlvbkNhbGxIYW5kbGVyKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDgzN2I2YmNiNDU5ZGRhZjBl
MzE5ODUwMTlhYjJkNThjNDViMjdmOGIuLmQxMTUxOGY1ZTcxNDc3MTk4NjY3NDliOGE2ZTE3MGVh
NDUzZjIxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjA4MSw3
ICsyMDgxLDcgQEAgc3RhdGljIFdlYkZyYW1lTG9hZFR5cGUgdG9XZWJGcmFtZUxvYWRUeXBlKEZy
YW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKICAgICAgICAgYW55V29ybGRHbG9iYWxPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oZ2xvYmFsT2JqZWN0T2JqKS0+d2luZG93
KCk7CiAKICAgICAvLyBHZXQgdGhlIGZyYW1lIGZyb21lIHRoZSBnbG9iYWwgb2JqZWN0IHdlJ3Zl
IHNldHRsZWQgb24uCi0gICAgRnJhbWUqIGZyYW1lID0gYW55V29ybGRHbG9iYWxPYmplY3QtPmlt
cGwoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT53
cmFwcGVkKCkuZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJl
dGFpblB0cjxXZWJGcmFtZT4gd2ViRnJhbWUoa2l0KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRy
YXJ5IEphdmFTY3JpcHQgY2FuIGRlc3Ryb3kgdGhlIGZyYW1lLgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQppbmRleCBmZWZjM2FiOTVmNTA1ZGY5
YmU2Y2ViY2ZjNDc2ZGI0YzBlNDM3NTQxLi43YjVjNDg0MzdmMjYwOGQ4MWNiN2I5M2U1ZDAxYzFj
OWE0MzExMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlw
dERlYnVnZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIE5TVVJMICp0b05TVVJMKGNvbnN0IFN0
cmluZyYgcykKIHN0YXRpYyBXZWJGcmFtZSAqdG9XZWJGcmFtZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBzdGF0aWNfY2FzdDxKU0RP
TVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIGtpdCh3aW5kb3ctPmltcGwoKS5m
cmFtZSgpKTsKKyAgICByZXR1cm4ga2l0KHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCkpOwogfQog
CiBXZWJTY3JpcHREZWJ1Z2dlcjo6V2ViU2NyaXB0RGVidWdnZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBmNjlmMWUxMTc1ZmNkMjFiN2Y2
MjY1NTI4MjE3NmM4ZWE2ZjQ5ZDQ5Li5jZWIxOGRjMzAzNDE1OWQ3ODE5ZmZjNTkyNmY2MDA5ZGQx
NGZiMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBIUkVT
VUxUIFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZChJ
V2ViU2NyaXB0V29ybGQqIGlXbwogICAgICAgICBhbnlXb3JsZEdsb2JhbE9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxPYmplY3RPYmopLT53aW5kb3coKTsKIAog
ICAgIC8vIEdldCB0aGUgZnJhbWUgZnJvbWUgdGhlIGdsb2JhbCBvYmplY3Qgd2UndmUgc2V0dGxl
ZCBvbi4KLSAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+aW1wbCgpLmZy
YW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gYW55V29ybGRHbG9iYWxPYmplY3QtPndyYXBwZWQo
KS5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxk
KCksIHN0cmluZywgdHJ1ZSkuanNWYWx1ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBmODAwYzIyZmNmNTJjN2IzNjY2ODE0ZGRh
MjZiNzQ0MmExYzY0MGI3Li5mOWMyNjA2ODFlYWQ4NjY3YzYwZjkzZDc4Yjg0MzU3ZjZjNDZjN2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
QEAgLTY4Myw3ICs2ODMsNyBAQCBXZWJGcmFtZSogV2ViRnJhbWU6OmZyYW1lRm9yQ29udGV4dChK
U0NvbnRleHRSZWYgY29udGV4dCkKICAgICBpZiAoc3RyY21wKGdsb2JhbE9iamVjdE9iai0+Y2xh
c3NJbmZvKCktPmNsYXNzTmFtZSwgIkpTRE9NV2luZG93U2hlbGwiKSAhPSAwKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hl
bGwqPihnbG9iYWxPYmplY3RPYmopLT53aW5kb3coKS0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJh
bWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9i
aiktPndpbmRvdygpLT53cmFwcGVkKCkuZnJhbWUoKTsKICAgICByZXR1cm4gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoKmZyYW1lKTsKIH0KIApAQCAtNzI4LDcgKzcyOCw3IEBAIFN0cmluZyBXZWJG
cmFtZTo6Y291bnRlclZhbHVlKEpTT2JqZWN0UmVmIGVsZW1lbnQpCiAgICAgaWYgKCF0b0pTKGVs
ZW1lbnQpLT5pbmhlcml0cyhKU0VsZW1lbnQ6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAotICAgIHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50KCZqc0Nhc3Q8SlNFbGVt
ZW50Kj4odG9KUyhlbGVtZW50KSktPmltcGwoKSk7CisgICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZv
ckVsZW1lbnQoJmpzQ2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+d3JhcHBlZCgpKTsK
IH0KIAogU3RyaW5nIFdlYkZyYW1lOjpwcm92aXNpb25hbFVSTCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264571</attachid>
            <date>2015-11-02 02:15:48 -0800</date>
            <delta_ts>2015-11-02 02:53:51 -0800</delta_ts>
            <desc>Fixing IDBObjectStore</desc>
            <filename>bug-150613-20151102111431.patch</filename>
            <type>text/plain</type>
            <size>425454</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3MTA0YmUyYWYzOTAy
YmY4ZDFlMjA3NzE4MWNkZWY1NDQxODE3Yy4uMTczNDRlYTdkNWQxOTU0NTlhZDJiMDQ0YjgzYTlk
ZmIzNDM1MTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4MyBAQAorMjAxNS0xMS0wMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFwcGVk
IGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6OnRpbWVkTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVycm9yTG9nKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRLaW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNB
dWRpb1RyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0JpcXVhZEZpbHRlck5vZGU6OnNldFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NT
UnVsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3BlcnR5
VmFsdWVGYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUdldHRlclBpeGVs
T3JQb3NQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndlYmtpdExpbmVE
YXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRX
ZWJraXRMaW5lRGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q2hhcmFjdGVyRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NoYXJhY3RlckRh
dGE6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OmFmdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjpzdG9yYWdlSWQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvOjpn
ZXRSYW5kb21WYWx1ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5OjphbGdvcml0aG0pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NyeXB0b0tleVBhaXI6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tRXZlbnQ6OmRldGFpbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjphY3RpdmVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RET01X
aW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MRm9ybUVsZW1lbnRPck51bGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01Gb3JtRGF0YTo6YXBwZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01NaW1lVHlw
ZUFycmF5OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxv
d0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01OYW1lZEZsb3dD
b2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBsdWdp
bkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5h
bWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01TdHJpbmdMaXN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6
OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkQWxsb3dBY2Nlc3NGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFz
ZTo6SlNET01XaW5kb3dCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
cHJpbnRFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpz
dXBwb3J0c1Byb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnN1
cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRGcmFtZUdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNET01XaW5kb3dXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dJbmRl
eGVkREIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRFbnVtZXJhYmxlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
Z2V0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRU
aW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRJbnRlcnZhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6
OnNldFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp3cmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBw
ZXI6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjpKU0RPTVdyYXBw
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RhdGFDdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGF0YUN1
ZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGF0YVRyYW5zZmVyOjp0eXBlcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVk
aW5nR3Jhdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50Ojpyb3Rh
dGlvblJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJ2
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1v
dGlvbkV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZl
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjphbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmJl
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBh
c3NIZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
d2Via2l0Q29tcGFzc0FjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50
YXRpb25FdmVudDo6YWJzb2x1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50
OjpwcmVwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
b2N1bWVudFR5cGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50VHlwZTo6YWZ0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVt
ZW50OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphZnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OmFwcGVu
ZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V2ZW50OjpjbGlwYm9hcmREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRmlsZVJlYWRlcjo6cmVzdWx0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9u
Ojp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVkSXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEhUTUxBbGxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEFsbENvbGxlY3Rpb246Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNFbGVtZW50Ojpw
cm9iYWJseVN1cHBvcnRzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNF
bGVtZW50Ojp0b0RhdGFVUkwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rp
b25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmFsbCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQ2Fs
bGluZ0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50V3JpdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRWxlbWVu
dDo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVk
SXRlbXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVFbGVtZW50OjpzZXRMb2NhdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTZWxl
Y3RFbGVtZW50OjppbmRleFNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MVGVt
cGxhdGVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTFRlbXBsYXRl
RWxlbWVudDo6Y29udGVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0hp
c3Rvcnk6OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHVzaFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0luc3BlY3RvckZyb250
ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNNZWRpYVNvdXJjZVN0YXRlczo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNv
dXJjZVN0YXRlczo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0
ZXM6OmZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjph
c3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjpmYWNp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFubmVsOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlSW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6ZGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uT2JzZXJ2ZXJPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWRO
b2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjpuYW1l
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6cmVwbGFj
ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05v
ZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVJdGVyYXRvcjo6
dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlTGlzdE93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JTdHJp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9Ob2RlT3JTdHJpbmdWZWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQYW5uZXJOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFubmVyTm9kZTo6
c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFubmVyTm9kZTo6c2V0RGlz
dGFuY2VNb2RlbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5W
aWV3QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEdldENhbGxEYXRhKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQb3BT
dGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSVENTdGF0c1Jlc3Bv
bnNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUlRDU3RhdHNSZXNwb25zZTo6bmFt
ZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NW
R0xlbmd0aDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnNldFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTU3RvcmFnZTo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1N0
b3JhZ2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N1
YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6
ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6c2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5
cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrQ3VlT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrQ3VlOjp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJh
Y2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjpzZXRLaW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGV4dFRyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UcmFjayk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVHJhY2tFdmVudDo6dHJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
VHJlZVdhbGtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZp
c2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlk
ZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFj
a0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrTGlzdDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRT
aGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTRmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIyZnYp
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXI6OnBvc3RNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29ya2VyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
QWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFt
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0
b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRvbVdpbmRvd0Zyb21FeGVjU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1t
OgorICAgICAgICAoK1tET01Ob2RlIF9ub2RlRnJvbUpTV3JhcHBlcjpdKToKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW06CisgICAgICAgIChKU0M6OmNyZWF0ZURPTVdyYXBw
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgX2lzU2FmZVNjcmlwdF0pOgorICAgICAgICAoK1tXZWJTY3Jp
cHRPYmplY3QgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOm9yaWdpblJvb3RPYmplY3Q6cm9vdE9i
amVjdDpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbik6CisgICAg
ICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rp
b25FeGNpdGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25Bbm90aGVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZl
bnRDb25zdHJ1Y3RvckF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3Ry
dWN0b3JBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3du
ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZl
bnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbkRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRUYXJnZXRPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRUYXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFeGNlcHRpb25O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5hbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50
YWxTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0
cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZU93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6Zmlu
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFw
cGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpS
ZWFkT25seVRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQnl0ZUF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNpZ25lZFNo
b3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0T2JqQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEludGVncmFs
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aENhbGxXaXRoQW5k
U2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11dGFibGVQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmljdEZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5dGVBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28pOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
U3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVu
Y2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RSZXR1cm5pbmdTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRo
YXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRTdGF0ZVZvaWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2Jq
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc051bGxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFj
a0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdM
aXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
R2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0NSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlv
bldpdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21p
c2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iak93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPYmo6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0
aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnNP
d25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
czo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2Fj
aGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTnVsbGFibGVBcnJheUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzT3duZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc2F0dHJpYnV0ZVJlYWRvbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
YXR0cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRl
Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRv
bmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHlPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1ldGhvZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3Rh
dGUpOgorCiAyMDE1LTEwLTI5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIG1pbi1jb250ZW50IHJvdyBkb2VzIG5v
dCBhbHdheXMgc2hyaW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMjI3NzQ0NDc1OTRhZWJlN2Q2MThl
ZDc5NjFkYmM1YjlkMzNkZTU1Mi4uMDMwYWUzMDVkYzk3YmFiMzlmY2FiYzZlM2NkOGM1NjdlMDcw
NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTExLTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVuYW1l
IEpTRE9NV3JhcHBlci5pbXBsIHRvIEpTRE9NV3JhcHBlci53cmFwcGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmlu
Zzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29ybGQ6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKHRvV2ViRnJhbWUpOgorCiAyMDE1LTExLTAx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZd
IFN1cHBvcnQgR2VuZXJhdG9yIFN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDVjOGEwMTg5ZjVl
Y2M4MzhlZTEwOWFmNDE1ODZlNGZmMGRkZTJlMDcuLmViOWYzYTM2NTk4NzMzOWRiNjMxODYxMDQ3
ODhiYzA5ZjAwMjNlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0x
MS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIFJlbmFtZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0
V29ybGQpOgorCiAyMDE1LTEwLTIyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgTW92ZSBtZW51IGNyZWF0aW9uIHRvIFdlYlZpZXcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA1OTE0ZTNhMDY4NDIxYzk2NTQ3OWNmNzFjYTQzMTA2NDUyM2E1Njg0Li42ZTk2MDVmNzQ5MmJm
MzY4YTI0YzBiMGQwZTA5NmVkNGRjMjdmOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTUtMTEtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4K
KworICAgICAgICBSZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8gSlNET01XcmFwcGVyLndyYXBw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDYx
MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmZy
YW1lRm9yQ29udGV4dCk6IFJlbmFtaW5nIGltcGwoKSB0byB3cmFwcGVkKCkuCisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpjb3VudGVyVmFsdWUpOiBEaXR0by4KKwogMjAxNS0xMS0wMSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
VXNlIFJ1bkxvb3AgaW4gV29ya1F1ZXVlIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KaW5kZXggMTZiYjE4YmE1YjI2ZTE2OWZiY2VmYWM1ZTQ2YWM2ZTEyMzg5NTVkYi4uZTQ1
MzJjOGExNWZkNTYyOWQyYTE4NTg4Zjk3YjE1NGEyMDhmMGRiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbQpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqaXRlbSwgSlNDCiBKU0M6
OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEhUTUxW
aWRlb0VsZW1lbnQqIHBhcmVudCA9IGltcGwoKS5wYXJlbnRFbGVtZW50KCk7CisgICAgSFRNTFZp
ZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAo
IXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiBKU0M6OkpT
VmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9nKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgSFRNTFZpZGVvRWxl
bWVudCogcGFyZW50ID0gaW1wbCgpLnBhcmVudEVsZW1lbnQoKTsKKyAgICBIVE1MVmlkZW9FbGVt
ZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIApA
QCAtNDE2LDcgKzQxNiw3IEBAIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50OjphY2Nlc3NMb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zCiBKU0M6OkpTVmFsdWUg
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZXJyb3JMb2coSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBIVE1MVmlkZW9FbGVtZW50KiBw
YXJlbnQgPSBpbXBsKCkucGFyZW50RWxlbWVudCgpOworICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBh
cmVudCA9IHdyYXBwZWQoKS5wYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBh
cmVudC0+cGxheWVyKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0MmYxMmYwZWQyZDEz
YzRlNzVlMDY0YTMzNmJiNzNjMGFkNTM1ZDM1Li5kNDVjZjZkMmM4YThlZTJhZDdjMzdhZGJkZTcw
OGY0ZGRlNGE1YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0
dHJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3Rv
bS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXR0
cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS5vd25lckVsZW1lbnQoKSkKKyAgICBp
ZiAoRWxlbWVudCogZWxlbWVudCA9IHdyYXBwZWQoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1
c3RvbS5jcHAKaW5kZXggMWM5YzMyOGIxMjEyNWQ5YmJlMzkyY2UzMWUyNjM4MTZlMmYxMzRlZC4u
MzNmNzY4ZTNjODM0NTNkYWU5NzUwMmY1MzQ4M2NkM2RkMjliZTg3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Q3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWltcGwoKS5zZXRCdWZmZXIoYnVmZmVyKSkKKyAg
ICBpZiAoIXdyYXBwZWQoKS5zZXRCdWZmZXIoYnVmZmVyKSkKICAgICAgICAgc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsICJBdWRpb0J1ZmZl
ciB1bnN1cHBvcnRlZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCmluZGV4IDM2ZjMxZDlk
NjJlY2Q3OGZkMWFhZjE5MWMyMmI5YTU1MDAyMjc3M2QuLjE1MzE4MTVhYzYzNzVkOTYwZmViMjM3
NWY1ZmMzZTE1N2M2YTliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNBdWRpb1RyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgp
KSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiB2
b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVk
KCkuc2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgSlNBdWRpb1RyYWNr
OjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8m
IHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldExh
bmd1YWdlKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldExhbmd1YWdlKHN0cmluZyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3Rv
bS5jcHAKaW5kZXggODMxZTQyNWM4NjVkNGI4NTdkM2FjNDBhOGVlOTdhZmJhYWQyNWMzYS4uNmZk
MWE1MDQwMjUwZTdkNDc3NmM2ZTk4ZjU0NjJlOTgzYjE1OGYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXVkaW9UcmFja0xpc3Q6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS5lbGVtZW50KCkpKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuZWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCmluZGV4IGY2ZmE4NmY1YzM3NGZlYmJjMGI4MWJm
ZmNhZmM1ZWVkY2E0MWIzMWUuLjkyMWJhZWYzYmRlMjkzZDhhMTdjMjM2ZjI2NGUyMTFiOThiYzYw
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVy
Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRG
aWx0ZXJOb2RlQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEpTQmlxdWFkRmlsdGVy
Tm9kZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogI2lmIEVOQUJM
RShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAg
IHVpbnQzMl90IHR5cGUgPSB2YWx1ZS50b1VJbnQzMigmc3RhdGUpOwotICAgICAgICBpZiAoIWlt
cGwoKS5zZXRUeXBlKHR5cGUpKQorICAgICAgICBpZiAoIXdyYXBwZWQoKS5zZXRUeXBlKHR5cGUp
KQogICAgICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5
cGVFcnJvcigmc3RhdGUsICJJbGxlZ2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBKU0JpcXVhZEZpbHRlck5v
ZGU6OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgewogICAgICAgICBTdHJpbmcgdHlwZSA9IHZhbHVlLnRvU3RyaW5nKCZz
dGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgICAgIGlmICh0eXBlID09ICJsb3dwYXNzIiB8fCB0
eXBlID09ICJoaWdocGFzcyIgfHwgdHlwZSA9PSAiYmFuZHBhc3MiIHx8IHR5cGUgPT0gImxvd3No
ZWxmIiB8fCB0eXBlID09ICJoaWdoc2hlbGYiIHx8IHR5cGUgPT0gInBlYWtpbmciIHx8IHR5cGUg
PT0gIm5vdGNoIiB8fCB0eXBlID09ICJhbGxwYXNzIikgewotICAgICAgICAgICAgaW1wbCgpLnNl
dFR5cGUodHlwZSk7CisgICAgICAgICAgICB3cmFwcGVkKCkuc2V0VHlwZSh0eXBlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCmluZGV4IGZmMjYzMDc4ODMxZjNjOTcxMTljN2Ew
OTlhNDRkMDIyY2YzYjlhZTIuLjBkMzM3Nzc5NjkzMTEwZmNhOTdiY2ExY2MzMWU2OTgyMWQ4MWQ2
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNDU1NSdWxl
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSogcnVsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKaW5kZXgg
ODllOTkyMTUwNmZmNTBlODFlMGM4YjhiODM5ZjJlOTg2YmRhOTNiNC4uMDI4NDQ0ZmUzZGQ5MThi
YzBkMDgwNTBlOWRiYzI4NjI5MjdhNWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgYm9vbCBK
U0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGEKICAgICBKU0NTU1J1bGVMaXN0KiBqc0NTU1J1bGVMaXN0ID0ganND
YXN0PEpTQ1NTUnVsZUxpc3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgaWYgKCFq
c0NTU1J1bGVMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPmlt
cGwoKS5zdHlsZVNoZWV0KCkpCisgICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBq
c0NTU1J1bGVMaXN0LT53cmFwcGVkKCkuc3R5bGVTaGVldCgpKQogICAgICAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdHlsZVNoZWV0KSk7Ci0gICAgaWYgKENTU1J1
bGUqIGNzc1J1bGUgPSBqc0NTU1J1bGVMaXN0LT5pbXBsKCkuaXRlbSgwKSkKKyAgICBpZiAoQ1NT
UnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QtPndyYXBwZWQoKS5pdGVtKDApKQogICAgICAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChjc3NSdWxlKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggZGUyZjkwNzM0NWE3Njhm
NWNlZjM2ODg0OTYyN2NiNDJkNWU0NTFlYy4uOTFiYTMxMjI5OTA5ZDY0OGZjOTBhN2RmNDJmM2E1
ZTY5MjNjZTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgm
d3JhcHBlZCgpKSk7CiB9CiAKIGNsYXNzIENTU1Byb3BlcnR5SW5mbyB7CkBAIC0yNzgsNyArMjc4
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGdldFByb3BlcnR5VmFsdWVGYWxsYmFjayhFeGVj
U3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXIKIHsKICAgICAvLyBJZiB0aGUgcHJvcGVydHkg
aXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwKICAgICAvLyBpdCBj
YW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT5pbXBsKCkuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUgY3NzUHJvcGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KEV4ZWNT
dGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNpZ25lZCBwcm9w
ZXJ0eUlEKQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9w
ZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0CiAgICAg
Ly8gcG9zVG9wIHJldHVybnMgIkNTUyB0b3AiIGFzIG51bWJlciB2YWx1ZSBpbiB1bml0IHBpeGVs
cyBfaWZfIGl0cyBhCiAgICAgLy8gcG9zaXRpb25lZCBlbGVtZW50LiBpZiBpdCBpcyBub3QgYSBw
b3NpdGlvbmVkIGVsZW1lbnQsIHJldHVybiAwCiAgICAgLy8gZnJvbSBNU0lFIGRvY3VtZW50YXRp
b24gRklYTUU6IElNUExFTUVOVCBUSEFUIChEaXJrKQotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9
IHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRo
aXNPYmotPndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwogICAgIGlmICh2KSB7CiAgICAgICAgIGlmICh2
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGlj
X3BvaW50ZXJfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odiktPmdldEZsb2F0VmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVj
LCBKU0NTU1N0CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5zaWduZWQgcHJv
cGVydHlJRCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlzT2JqLT5pbXBsKCkuZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3Bl
cnR5SUQpKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3Bl
cnR5SUQpKTsKICAgICBpZiAodikKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMs
IHYtPmNzc1RleHQoKSk7CiAKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJbmZvLnByb3BlcnR5
SUQpOwotICAgIGltcGwoKS5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1
ZSwgaW1wb3J0YW50LCBlYyk7CisgICAgd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJv
cGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTMsMTEgKzM1MywxMSBAQCBKU1Zh
bHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUm
IHN0YXRlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gaW1wbCgpLmdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNz
c1ZhbHVlID0gd3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoIWNzc1ZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBnbG9iYWxP
YmplY3QoKS0+d29ybGQoKS5tX2Nzc1ZhbHVlUm9vdHMuYWRkKGNzc1ZhbHVlLmdldCgpLCByb290
KCZpbXBsKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgor
ICAgIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5hZGQoY3NzVmFsdWUu
Z2V0KCksIHJvb3QoJndyYXBwZWQoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6
OmZpbmFsaXplKCkuCiAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoY3NzVmFsdWUpKTsKIH0KIApAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlCiAgICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1ZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVD
dXN0b20uY3BwCmluZGV4IGVkNTEyNTMzZWQzM2EzOTIyNTJiZjY0NTJjMjFlYmM5YWVhOWExNzYu
LmQ4ZjQ3MDVhZWJkMmFjNGY3MmFjYjA5YjAyOGJkNTM3MzIxMDJlYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw3
IEBAIGJvb2wgSlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiAgICAgaWYgKCFqc0NTU1ZhbHVlLT5oYXNDdXN0
b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAg
dm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nzc1ZhbHVlUm9vdHMuZ2V0KCZqc0NTU1ZhbHVlLT5pbXBs
KCkpOworICAgIHZvaWQqIHJvb3QgPSB3b3JsZC0+bV9jc3NWYWx1ZVJvb3RzLmdldCgmanNDU1NW
YWx1ZS0+d3JhcHBlZCgpKTsKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7CkBAIC02MCw4ICs2
MCw4IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU0NTU1ZhbHVlKiBqc0NTU1Zh
bHVlID0ganNDYXN0PEpTQ1NTVmFsdWUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKLSAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLT5p
bXBsKCkpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+aW1wbCgpLCBq
c0NTU1ZhbHVlKTsKKyAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVl
LT53cmFwcGVkKCkpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+d3Jh
cHBlZCgpLCBqc0NTU1ZhbHVlKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1ZhbHVlKiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAppbmRleCBiOTkzYmRjMjQyYjQyYzc5M2MyMWU5ZDA0NzIxOTQ2YjM5
MGNlN2I3Li5kYTc1ODAyZWRmZmExNjcwMjhlZDhlMGIxMjRhY2ExYzQ4NDMyM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC01Myw5ICs1Myw5IEBAIHN0YXRpYyBDYW52YXNT
dHlsZSB0b0hUTUxDYW52YXNTdHlsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlKQogICAgICAg
ICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
dmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTQ2FudmFzR3JhZGllbnQ6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzR3JhZGllbnQq
PihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoJmpzQ2FzdDxK
U0NhbnZhc0dyYWRpZW50Kj4ob2JqZWN0KS0+d3JhcHBlZCgpKTsKICAgICBpZiAob2JqZWN0LT5p
bmhlcml0cyhKU0NhbnZhc1BhdHRlcm46OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBDYW52YXNT
dHlsZSgmanNDYXN0PEpTQ2FudmFzUGF0dGVybio+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAg
IHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzUGF0dGVybio+KG9iamVjdCktPndy
YXBwZWQoKSk7CiAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiB9CiAKQEAgLTY3LDEyICs2Nywx
MiBAQCBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21taXQoRXhlY1N0YXRl
JikKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCBpbXBsKCkuc3Ryb2tlU3R5bGUoKSk7CisgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnN0cm9rZVN0eWxlKCkpOwogfQogCiB2b2lkIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9
IGltcGwoKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcihhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZzdGF0ZSkpOwogICAgICAgICByZXR1cm47
CkBAIC04MiwxMiArODIsMTIgQEAgdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U3Ryb2tlU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLmZp
bGxTdHlsZSgpKTsKKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFw
cGVkKCkuZmlsbFN0eWxlKCkpOwogfQogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmICh2YWx1ZS5pc1N0
cmluZygpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGFzU3RyaW5nKHZhbHVlKS0+
dmFsdWUoJnN0YXRlKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Ondl
YmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgZGFzaCA9IGltcGwoKS5nZXRMaW5lRGFzaCgpOworICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIGRhc2ggPSB3cmFwcGVkKCkuZ2V0TGluZURhc2goKTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGxpc3Q7CiAgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
ZGFzaC5lbmQoKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAog
ICAgICAgICBkYXNoLmFwcGVuZChlbGVtKTsKICAgICB9CiAKLSAgICBpbXBsKCkuc2V0V2Via2l0
TGluZURhc2goZGFzaCk7CisgICAgd3JhcHBlZCgpLnNldFdlYmtpdExpbmVEYXNoKGRhc2gpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRl
eCBlNWRkNmU4ODEyNzZjODU2MGFmYmQ1ZDk1MTNiMjA3ZjIyMmRkZGZkLi43ZjUwNDM1ZjVhNjNk
MjU4ZDJjMDNmY2NhMGYzNzg1ZDZiOWY0YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmNhbnZhcygpKSk7
CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qod3JhcHBlZCgpLmNhbnZhcygpKSk7CiB9
CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKaW5k
ZXggY2I4MzFkMDRjZmI4ZWY4NTY4NDc2YmQ4ZmRlM2Y4ZjgyZTlhN2M5MS4uNjAxN2YxZjYwOWZj
NmRmM2ViZDk1M2U0ODUwMzM4YWJkM2Q5MWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCku
YmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5i
ZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00NSw3ICs0
NSw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkK
IEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0
ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6
OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAppbmRleCBiMDY1ZDVjZmYxY2YxYjUwNjQ3
NDU5NjJiZGNkOGQ2MWRmNzY3ZjUyLi41NWM3OTIxMmExMjQwZjJmYmJiODBmYjZmZTBmNTRjY2Rk
ZTJiN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRM
aW5lQVBJSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdCogb2JqZWN0ID0gaW1wbCgpLmluc3BlY3RlZE9iamVjdCgpOworICAgIENvbW1hbmRM
aW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3QqIG9iamVjdCA9IHdyYXBwZWQoKS5pbnNwZWN0
ZWRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0Ojpn
ZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAogICAgIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4gbGlzdGVuZXJzQXJyYXk7
Ci0gICAgaW1wbCgpLmdldEV2ZW50TGlzdGVuZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJheSk7
CisgICAgd3JhcHBlZCgpLmdldEV2ZW50TGlzdGVuZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJh
eSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRl
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc0FycmF5LnNpemUoKTsgKytp
KSB7CkBAIC0xMjksNyArMTI5LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5z
cGVjdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPj0g
MikgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBvYmplY3Qoc3RhdGUudm0oKSwg
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBoaW50cyhzdGF0ZS52bSgpLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0gICAg
ICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpLCBo
aW50cy50b0luc3BlY3RvclZhbHVlKCZzdGF0ZSkpOworICAgICAgICB3cmFwcGVkKCkuaW5zcGVj
dEltcGwob2JqZWN0LnRvSW5zcGVjdG9yVmFsdWUoJnN0YXRlKSwgaGludHMudG9JbnNwZWN0b3JW
YWx1ZSgmc3RhdGUpKTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE0
Miw3ICsxNDIsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBKU0RhdGFiYXNlOjp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChkYXRhYmFzZSkK
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLmRhdGFiYXNl
SWRJbXBsKGRhdGFiYXNlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3Rh
dGUsIHdyYXBwZWQoKS5kYXRhYmFzZUlkSW1wbChkYXRhYmFzZSkpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5l
QVBJSG9zdDo6c3RvcmFnZUlkKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBTdG9yYWdlKiBzdG9y
YWdlID0gSlNTdG9yYWdlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIGlmIChzdG9yYWdlKQotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRl
LCBpbXBsKCkuc3RvcmFnZUlkSW1wbChzdG9yYWdlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKIAog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwCmluZGV4IGQwN2JlYWNhMTVhNTQ3MmI0NjkwYWFjNDVjMWFk
NzU0Y2Y1ZDlhMzkuLjY4N2VjZDFiNWI1NzNmYmJiMmI1MDk5ZGM3ZWIxZjQ1ODc4OTZhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgSlNWYWx1ZSBKU0NyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmdldFJhbmRvbVZhbHVlcyhhcnJheUJ1ZmZl
clZpZXcuZ2V0KCksIGVjKTsKKyAgICB3cmFwcGVkKCkuZ2V0UmFuZG9tVmFsdWVzKGFycmF5QnVm
ZmVyVmlldy5nZXQoKSwgZWMpOwogCiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvS2V5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvS2V5Q3VzdG9tLmNwcAppbmRleCBhZDgxZTRkNDViMWU2MWVhZTE4NzBhYWVjNzNkZTNhZTVk
YmM4OWY1Li41ODU5NGJlZjJkYjI5YTJmMDk3NWVjOTlmZmNhZjg0MDUxZGI5ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNDcnlwdG9LZXk6OmFs
Z29yaXRobShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgSlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyIGJ1aWxkZXIoJnN0YXRlKTsKLSAgICBpbXBsKCkuYnVpbGRBbGdvcml0aG1E
ZXNjcmlwdGlvbihidWlsZGVyKTsKKyAgICB3cmFwcGVkKCkuYnVpbGRBbGdvcml0aG1EZXNjcmlw
dGlvbihidWlsZGVyKTsKICAgICByZXR1cm4gYnVpbGRlci5yZXN1bHQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAK
aW5kZXggOWZkYjg5YmMyN2Y2OGEyMmEzMmQ5Yzk5NGJlZjI4ZGMxMjMyOTc5Zi4uYjRhZDA0NjIy
Y2ZmZGYyODgyNTAzZDU2Mjg5NTMwY2ExOTNjNWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwCkBAIC0zNCw4ICszNCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NyeXB0b0tleVBhaXI6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KGltcGwoKS5wdWJsaWNLZXkoKSk7Ci0gICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KGltcGwoKS5wcml2YXRlS2V5KCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh3
cmFwcGVkKCkucHVibGljS2V5KCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh3cmFwcGVk
KCkucHJpdmF0ZUtleSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FdmVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcAppbmRleCBh
ZjE0OWRhYWYwNTQyNTEyM2ZlODg2OTQ5OWQ1YjdiZWY1ODAzZTVhLi5jNTU2YzllMmU1MDBhNTc1
N2I3MmMzMGJkYWY1YzYwYjUxYjBlMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBKU1ZhbHVlIEpTQ3VzdG9tRXZlbnQ6OmRldGFpbChFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogewotICAgIEN1c3RvbUV2ZW50JiBldmVudCA9IGltcGwoKTsKKyAg
ICBDdXN0b21FdmVudCYgZXZlbnQgPSB3cmFwcGVkKCk7CiAgICAgCiAgICAgaWYgKGV2ZW50LmRl
dGFpbCgpLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
CmluZGV4IGIyODdjNmI4OTk2MjdiNDE4MDg5OThiMjY3NmE5MWU1Yjc4MTI1MmEuLjYwYzU3Zjhk
M2ExOTNkODJkYzNjNjExNDUxZDQ4ZTYyNzIzM2JkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgICAgIGNhbGxUeXBlID0gbV9jdXN0b21SZXNv
bHZlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEobV9jdXN0b21SZXNvbHZlci5nZXQoKSwg
Y2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE0MzEyPiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJIENvbnNvbGUgTWVzc2FnZSBzaG91bGQg
aW5jbHVkZSBMaW5lLCBDb2x1bW4sIGFuZCBTb3VyY2VVUkwKLSAgICAgICAgICAgIGlmIChQYWdl
Q29uc29sZUNsaWVudCogY29uc29sZSA9IG1fZ2xvYmFsT2JqZWN0LT5pbXBsKCkuY29uc29sZSgp
KQorICAgICAgICAgICAgaWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxP
YmplY3QtPndyYXBwZWQoKS5jb25zb2xlKCkpCiAgICAgICAgICAgICAgICAgY29uc29sZS0+YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRl
cmFsKCJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBt
ZXRob2QuIikpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAzMDJjN2E5YTA2
NzRhMGY4ZTBkYTFjMWNlYzAzN2E1NGQ2MjQ5MzgwLi4yMGVmNjA5MTMxOTA2ZTM4ZjNkMjM3ZTcy
ZWM5YTI3ZjQzNWQzMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uLCBDYWNoZWRTY3JpcHQqIGNhY2hlZAogCiAg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKEpTRE9NV2luZG93
KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KSkgewot
ICAgICAgICBpZiAoIXdpbmRvdy0+aW1wbCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQorICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE1LDEyICs1MTUsMTIg
QEAgdWludDY0X3QgdG9VSW50NjQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRl
Z2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3co
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCk7CiB9CiAKIERPTVdpbmRvdyYgZmly
c3RET01XaW5kb3coRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBhc0pTRE9NV2luZG93
KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdyhleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24gcmVwb3J0
aW5nT3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggMTNmZGI1MmQ2YzI1MzE5
YzE5MzhhNzQyOTIyNDIyMDZhY2ZlYzY3OC4uYjA0OGFmOTEzZDJmYjk2NzE2ZDUxNWFmMzA1ZWJi
OTQ2YjY2NzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01G
b3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01G
b3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgSFRNTEZvcm1FbGVtZW50KiB0b0hUTUxGb3JtRWxlbWVudE9yTnVsbChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKEpTSFRNTEZvcm1FbGVt
ZW50OjppbmZvKCkpID8gJmpzQ2FzdDxKU0hUTUxGb3JtRWxlbWVudCo+KGFzT2JqZWN0KHZhbHVl
KSktPmltcGwoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKEpTSFRNTEZv
cm1FbGVtZW50OjppbmZvKCkpID8gJmpzQ2FzdDxKU0hUTUxGb3JtRWxlbWVudCo+KGFzT2JqZWN0
KHZhbHVlKSktPndyYXBwZWQoKSA6IG51bGxwdHI7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNET01Gb3JtRGF0YShFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NCw5
ICs2NCw5IEBAIEpTVmFsdWUgSlNET01Gb3JtRGF0YTo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgICAgICAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpID49IDMgJiYgIXN0YXRlLmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdGF0ZS5hcmd1bWVudCgyKS50b1N0cmlu
Zygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgICAgICAgICAgaW1wbCgpLmFwcGVuZChuYW1l
LCBKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHdyYXBw
ZWQoKS5hcHBlbmQobmFtZSwgSlNCbG9iOjp0b1dyYXBwZWQodmFsdWUpLCBmaWxlbmFtZSk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW1wbCgpLmFwcGVuZChuYW1lLCB2YWx1ZS50b1N0
cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5hcHBl
bmQobmFtZSwgdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAppbmRleCA0MzEyYWUyNzY5
NWUyODZmNzc5MmI0MGUzZGQ1Yzc4NmU4MzY5YzAyLi43NThjYjU4ZDJiMGZjNmQwNWFmYWI1YjE5
NmJiYzZhOTczZWJkYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFp
dGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwCmlu
ZGV4IDBkZDU0NTEyMTdkYzgwOGRkM2U5ZjUyYWJkMmI0ZmZjZDY0ZjhiM2YuLjRmZjEyNjI5Mjdj
ZGNhZGMyYWEyYTllYmIwNmE0MWQ0MzA4MzA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNw
cApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5B
cnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcAppbmRleCAyNjY5ZDgzN2RmMjkzNDY1MjM1YTg5NDI1MTQyZWY2YzE3NDk4
MzA2Li41M2I0YjQ1NzMyNzNlNTIzNGRiMzY4ZDBiMDZiNTk1Y2IyOWRjNGRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNw
cApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NUGx1
Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8g
aXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAppbmRl
eCAxYTc1ODZkYmZmYzAzMjNiODExYjU1N2UzOWY1NThiNzBiY2YwM2U3Li5jY2ZjYTM0OWYyZmRm
ODc0NGVkYTg4M2EwOTI5YWRlYWM1YjIxMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCkBAIC0yOSw3ICsyOSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBh
dXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCmluZGV4IGZkNDAxYjI5MDVmNjkxZjZkZmZmZGI1
ZDg1ZGQ0MjUzNGFkZjI4OWIuLjViZDMzY2IyZTUwMzgzY2I3M2VmYTdiMjFlZTVjNjFiN2I2ZWFh
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdM
aXN0Q3VzdG9tLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gSlNET01TdHJpbmdMaXN0Ojp0b1dyYXBwZWQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0RPTVN0cmlu
Z0xpc3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTRE9NU3RyaW5nTGlzdCo+
KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01T
dHJpbmdMaXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+d3JhcHBlZCgpOwogCiAgICAgaWYgKCFpc0pT
QXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAppbmRleCA5YWY4NDVj
MTgyMGI2YTQ0OTE4OTM0ZWUzMTAyMTVlNjhkNzRkMzU1Li4yMjcxZmQ5YWI5YTdjYWQwZTNhM2I1
OGM5YjkwZTM4N2YwODA5NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgSlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByCiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBuYW1lSXNWYWxpZDsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGl0ZW0gPSBpbXBsKCkuaXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
LCBuYW1lSXNWYWxpZCk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpdGVtID0gd3JhcHBlZCgp
Lml0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZUlzVmFsaWQpOwog
ICAgIGlmIChuYW1lSXNWYWxpZCkgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBp
dGVtKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEpTRE9N
U3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcAogewogICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NU3RyaW5nTWFwKj4ob2JqZWN0KTsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAg
ICB0aGlzT2JqZWN0LT5pbXBsKCkuZ2V0TmFtZXMobmFtZXMpOworICAgIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5nZXROYW1lcyhuYW1lcyk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWVzW2ldKSk7CkBA
IC02NSw3ICs2NSw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBKU0RPTVN0cmluZ01h
cCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVN0cmluZ01hcCo+KGNlbGwpOwogICAgIGlmIChw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPmltcGwoKS5kZWxldGVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZGVsZXRlSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmRleCkKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1YKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUs
IGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgcmV0dXJuICFlYzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcAppbmRleCBiZGQ0ODc3ODQ5ZWNhN2NjYzkxYmI2ZGE1
YmM0M2QxNjYyOGRkZGNlLi41NGY3NWQwYTE5ZTY0ZTcyNWQ1NGIwOTQzMTA3ZjYwOWUyNTNiZDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RD
dXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBAIEpTVmFsdWUgSlNET01Ub2tlbkxpc3Q6OnRvZ2ds
ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIE9wdGlvbmFsPGJvb2w+IGZvcmNlID0gc3RhdGUuYXJn
dW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE51bGxvcHQgOiBPcHRpb25hbDxib29sPihzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbCgpLnRvZ2dsZSh0b2tlbiwgZm9yY2Us
IGVjKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4od3JhcHBlZCgpLnRvZ2dsZSh0
b2tlbiwgZm9yY2UsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCmluZGV4IDY0YWFiNmUwZDMzYTkwNmQzYzAyMTZiMWM3ZWNlOGY4ZTg4Yjk3
MTAuLmY4MDNkYmVjYjE5NGE1NjVmOThhY2U3ZWQ2NTc1MjA2NjhkMzhiNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNz
RnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coZXhlYywgYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KS0+aW1wbCgpKTsKKyAgICByZXR1cm4g
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGFzSlNE
T01XaW5kb3codGhpc09iamVjdCktPndyYXBwZWQoKSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBK
U0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKQEAgLTcw
LDcgKzcwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNl
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2gKIEpTRE9NV2luZG93QmFzZTo6SlNE
T01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9N
V2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgIDogSlNET01HbG9i
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJnNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93Q2xvc2VXYXRjaHBvaW50cygod2luZG93ICYmIHdp
bmRvdy0+ZnJhbWUoKSkgPyBJc1dhdGNoZWQgOiBJc0ludmFsaWRhdGVkKQotICAgICwgbV9pbXBs
KHdpbmRvdykKKyAgICAsIG1fd3JhcHBlZCh3aW5kb3cpCiAgICAgLCBtX3NoZWxsKHNoZWxsKQog
ICAgICwgbV9wcml2YXRlRnVuY3Rpb25zKHZtKQogewpAQCAtMTM0LDI1ICsxMzQsMjUgQEAgdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQoKQogewotICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50
KCkpOworICAgIEFTU0VSVChtX3dyYXBwZWQtPmRvY3VtZW50KCkpOwogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91
Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9j
dW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV9pbXBsLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBv
aW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRv
SlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01XaW5kb3dCYXNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbXBsLT5kb2N1bWVu
dCgpOworICAgIHJldHVybiBtX3dyYXBwZWQtPmRvY3VtZW50KCk7CiB9CiAKIHZvaWQgSlNET01X
aW5kb3dCYXNlOjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
CiB7Ci0gICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkuZnJhbWUoKSwgbWVzc2Fn
ZSk7CisgICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZSh3cmFwcGVkKCkuZnJhbWUoKSwgbWVz
c2FnZSk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyhjb25z
dCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7
Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJh
bWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBKU0RP
TVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmpl
Y3QpCiBib29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBK
U0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0g
ICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUq
IGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTUsMTYgKzE5NSwxNiBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0VG9QcmV2ZW50SW5maW5pdGVSZWN1cnNpb25X
aGVuQ2xvc2luZ1BhZwogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlw
dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93
QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9i
amVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKTsKLSAgICBQYWdl
KiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnBhZ2UoKTsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpOworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgpOwogICAgIHJldHVybiBzaG91bGRJbnRlcnJ1
cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldoZW5DbG9zaW5nUGFnZShwYWdlKTsK
IH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBjb25zdCBKU0RPTVdp
bmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2Uq
PihvYmplY3QpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSk7Ci0gICAg
UGFnZSogcGFnZSA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT5wYWdlKCk7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKTsKKyAgICBQYWdlKiBwYWdlID0gdGhp
c09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnBhZ2UoKTsKIAogICAgIGlmIChzaG91bGRJbnRl
cnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldoZW5DbG9zaW5nUGFnZShwYWdl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBKU0RPTVdp
bmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNHbG9i
YWxPYmplY3QqIG8KIFJ1bnRpbWVGbGFncyBKU0RPTVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBjb25zdCBKU0RP
TVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jh
c2UqPihvYmplY3QpOwotICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBSdW50aW1lRmxhZ3MoKTsKICAgICByZXR1
cm4gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVGbGFncygpOwpAQCAtMzI4LDcg
KzMyOCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2lu
dHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cpCiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBK
U0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZU5h
bWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSkKIHsKICAgICBKU0RPTVdpbmRvd0Jh
c2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmpl
Y3QpOwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1w
bCgpLmRvY3VtZW50KCkpCisgICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5t
b2R1bGVMb2FkZXIoKS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZU5hbWUsIGlt
cG9ydGVyTW9kdWxlS2V5KTsKICAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRl
ZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5l
ZCgpKTsKQEAgLTMzNyw3ICszMzcsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdp
bmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdAogSlNDOjpK
U0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUgbW9kdWxlS2V5KQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9
IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJl
ZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkK
KyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5m
ZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZUtleSk7CiAgICAgSlNDOjpKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWpl
Y3QoZXhlYywganNVbmRlZmluZWQoKSk7CkBAIC0zNDYsNyArMzQ2LDcgQEAgSlNDOjpKU0ludGVy
bmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xv
YmFsT2JqZWN0KgogSlNDOjpKU1ZhbHVlIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZh
bHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCkK
IHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3Vt
ZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmRvY3VtZW50KCkpCisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LCBleGVjLCBtb2R1bGVLZXksIG1vZHVsZVJlY29yZCk7CiAgICAgcmV0dXJuIEpTQzo6anNVbmRl
ZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKaW5kZXggMTA3NjQwYzE3NjhmYjdkODJlNzk0YjEwNmYwMjNiMjkxNDM4OWY5Zi4uZDY5OWE1
YWU1N2I3ZjcyMmVhYmE0ODgyNzA2YzFhNGUxMDFmM2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwog
Ci0gICAgICAgIERPTVdpbmRvdyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAg
ICAgICAgRE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2lu
ZG93IGZyb20gdGhlIEpTRE9NV2luZG93U2hlbGwuCkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSk7CiAgICAgICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OkpTVmFsdWUpOwogCi0gICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKKyAgICAg
ICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVkOwogICAgICAgICBKU0RPTVdpbmRvd1NoZWxs
KiBtX3NoZWxsOwogCiAgICAgICAgIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zIG1fcHJpdmF0
ZUZ1bmN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAppbmRleCAwYmMzMzc1NGFhMWZiYzVhMzY5MzE3MzRmN2QxNTllNDI0OTA0NDZl
Li4wMGU2MmE0MmI2NDliZjc4NTYzZDYwODhlYTM4ZGY4MTA1OTYyMzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MiwyMSAr
NjIsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTRE9NV2luZG93Ojp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gaW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQo
KS5mcmFtZSgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZnJhbWUpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgY2hpbGRGcmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDYXN0
PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbmFtZWRJdGVt
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRo
aXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSk7Ci0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpc09iai0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdGhpc09iai0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAK
LSAgICBBU1NFUlQoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93
KGV4ZWMsIHRoaXNPYmotPmltcGwoKSkpOworICAgIEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iai0+d3JhcHBlZCgpKSk7CiAg
ICAgQVNTRVJUKGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQpKTsKIAogICAgIEF0b21pY1N0cmlu
Z0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CkBA
IC05Niw5ICs5Niw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBuYW1lZEl0ZW1HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUganNET01XaW5kb3dXZWJLaXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93KiBj
YXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyhKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgY2Fz
dGVkVGhpcy0+aW1wbCgpLndlYmtpdE5hbWVzcGFjZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKIH0KICNlbmRpZgogCkBAIC0xMTEsOSAr
MTExLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93SW5kZXhlZERCKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSB0
b0pTRE9NV2luZG93KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5kZXhlZERCRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3Rl
ZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmluZGV4ZWREQigmaW1w
bCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjksNyAr
MTI5LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAvLyBXZSBkb24ndCB3YW50IGFu
eSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3NlIiBhbmQgImNsb3NlZCIgb24gYSBmcmFtZWxl
c3Mgd2luZG93IChpLmUuIG9uZSB3aG9zZSBwYWdlIGdvdCBjbG9zZWQsCiAgICAgLy8gb3Igd2hv
c2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGZ1bGx5
IG1hdGNoIEZpcmVmb3gsIHdoaWNoIGFsbG93cyBhdCBsZWFzdCB0b1N0cmluZyBpbiBhZGRpdGlv
biB0byB0aG9zZS4KLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSB7CisgICAg
aWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkgewogICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIGNvZGUgaXMgc2FmZSBmb3IgY3Jvc3MtZG9tYWluIGFuZCBzYW1lIGRvbWFpbiB1c2Uu
CiAgICAgICAgIC8vIEl0IGlnbm9yZXMgYW55IGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQg
YmUgc2V0IG9uIHRoZSBET01XaW5kb3cgKGluY2x1ZGluZyBhIGN1c3RvbSBwcm90b3R5cGUpLgog
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZWQp
IHsKQEAgLTE0NSwxNCArMTQ1LDE1IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAg
IC8vIG5vdCBhbGxvd2VkLiAKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNsb3Quc2V0V2F0Y2hwb2ludFNldCh0
aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMpOworICAgIH0KKworICAgIHNsb3Qu
c2V0V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMpOwog
CiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgY3Jvc3MtZG9tYWluIGFjY2VzcyBoZXJlIHdp
dGhvdXQgcHJpbnRpbmcgdGhlIGdlbmVyaWMgd2FybmluZyBtZXNzYWdlCiAgICAgLy8gYmVjYXVz
ZSB3ZSBhbHdheXMgYWxsb3cgYWNjZXNzIHRvIHNvbWUgZnVuY3Rpb24sIGp1c3QgZGlmZmVyZW50
IG9uZXMgZGVwZW5kaW5nIHdoZXRoZXIgYWNjZXNzCiAgICAgLy8gaXMgYWxsb3dlZC4KICAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGJvb2wgYWxsb3dzQWNjZXNzID0gc2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCksIGVycm9yTWVzc2FnZSk7
CisgICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4
ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKTsKICAgICAKICAgICAvLyBM
b29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVy
dGllcywgYnV0IGlnbm9yZSBvdmVycmlkZXMgY29tcGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMg
Y3Jvc3MtZG9tYWluIGFjY2Vzcy4KQEAgLTE3Niw3ICsxNzcsNyBAQCBib29sIEpTRE9NV2luZG93
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eQogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9N
V2luZG93UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSwgMj4pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuc2hvd01vZGFsRGlhbG9nKSB7Ci0gICAgICAgIGlmICghRE9NV2luZG93OjpjYW5TaG93TW9k
YWxEaWFsb2codGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKSB7CisgICAgICAgIGlmICghRE9N
V2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2codGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkp
KSB7CiAgICAgICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTIwNyw3ICsyMDgsNyBAQCBib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eQogICAgIH0KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkud2Via2l0ICYmIHRoaXNPYmpl
Y3QtPmltcGwoKS5zaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQodGhpc09iamVjdC0+
d29ybGQoKSkpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS53ZWJraXQgJiYgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3Bh
Y2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgewogICAgICAgICBzbG90LnNldENhY2hl
YWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBhbGxvd3NBY2Nlc3MgPyBEb250RGVsZXRlIHwgUmVhZE9u
bHkgOiBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwganNET01XaW5kb3dXZWJLaXQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzcsNyArMjM4LDcgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHkKICAgICAvLyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZs
aWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5v
dCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8g
aXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVl
KCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkp
IHsKKyAgICBpZiAodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRD
aGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAg
ICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTI0Nyw5ICsyNDgsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogCiAgICAgLy8gYWxsb3cg
d2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMpCiAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChpbmRleCAmJiBp
bmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRD
aGlsZENvdW50KCkpIHsKKyAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9u
dEVudW0sCi0gICAgICAgICAgICB0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgp
LT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgudmFsdWUoKSktPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpKSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFt
ZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgudmFsdWUoKSktPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjYwLDcgKzI2MSw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgfQogCiAgICAgLy8gQWxsb3cgc2hvcnRj
dXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBkb2N1bWVudC5pbWFnZXMuSW1hZ2UxCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KSkgewog
ICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpOwogICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIGRvd25j
YXN0PEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KS5oYXNXaW5kb3dOYW1lZEl0ZW0oKmF0b21pY1By
b3BlcnR5TmFtZSkpIHsKQEAgLTI3Niw3ICsyNzcsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAKLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSB7Cisg
ICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkgewogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYSBtZXNzYWdlIGhlcmUgdGhhdCBleHBsYWlucyB3aHkgdGhlIHBy
b3BlcnR5IGFjY2Vzcy9mdW5jdGlvbiBjYWxsIHdhcwogICAgICAgICAvLyBub3QgYWxsb3dlZC4g
CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CkBAIC0yODcsNyArMjg4LDcgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIHUKICAgICAvLyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3Mg
dG8gc29tZSBmdW5jdGlvbiwganVzdCBkaWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBh
Y2Nlc3MKICAgICAvLyBpcyBhbGxvd2VkLgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAg
Ym9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRo
aXNPYmplY3QtPmltcGwoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9
IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgp
LCBlcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29r
aW5nIGF0IGFueSBvZiBvdXIgb3duIHByb3BlcnRpZXMsIGJ1dCBpZ25vcmUgb3ZlcnJpZGVzIGNv
bXBsZXRlbHkKICAgICAvLyBpZiB0aGlzIGlzIGNyb3NzLWRvbWFpbiBhY2Nlc3MuCkBAIC0zMDEs
NyArMzAyLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKICAgICAvLyBuYW1pbmcgZnJhbWVz
IHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8v
IGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBo
YXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmlt
cGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTMyMyw5ICszMjQsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dQogICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAog
ICAgIC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGlm
IChpbmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGRD
b3VudCgpKSB7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkt
PnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwKLSAgICAgICAgICAgIHRv
SlMoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChp
bmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgp
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTMzNiw3ICszMzcsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIH0KIAog
ICAgIC8vIEFsbG93IHNob3J0Y3V0cyBsaWtlICdJbWFnZTEnIGluc3RlYWQgb2YgZG9jdW1lbnQu
aW1hZ2VzLkltYWdlMQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwo
KS5mcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIGlmIChpczxIVE1MRG9jdW1l
bnQ+KCpkb2N1bWVudCkpIHsKICAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eU5hbWUgaXMgZ2VuZXJh
dGVkIGJ5IElkZW50aWZpZXI6OmZyb20uCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gZ2VuZXJh
dGVzIElkZW50aWZpZXIgZnJvbSBTdHJpbmcgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBub24tc3lt
Ym9sIElkZW50aWZpZXIuCkBAIC0zNTQsMTIgKzM1NSwxMiBAQCBib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgdQogdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihjZWxsKTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKQorICAg
IGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIE9wdGltaXphdGlvbjogYWNjZXNzIEphdmFTY3JpcHQgZ2xvYmFsIHZhcmlhYmxlcyBk
aXJlY3RseSBiZWZvcmUgaW52b2x2aW5nIHRoZSBET00uCiAgICAgaWYgKHRoaXNPYmplY3QtPkpT
R2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKGV4ZWMsIHByb3BlcnR5TmFtZSkp
IHsKLSAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgICAgICBpZiAoQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MzY3LDI2ICszNjgsMjYgQEAgdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogICAgIGlmIChsb29rdXBQ
dXQoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQ
cm9wSGFzaFRhYmxlLCBzbG90KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCkpKQorICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpT
RE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwotICAgIGlm
ICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFw
cGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCk7CiAKICAgICAvLyBPcHRp
bWl6YXRpb246IGFjY2VzcyBKYXZhU2NyaXB0IGdsb2JhbCB2YXJpYWJsZXMgZGlyZWN0bHkgYmVm
b3JlIGludm9sdmluZyB0aGUgRE9NLgogICAgIGlmICh0aGlzT2JqZWN0LT5KU0dsb2JhbE9iamVj
dDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShleGVjLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAg
IGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3Q6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5k
ZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAg
ICAgQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIH0KIApAQCAtMzk0LDcgKzM5NSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihj
ZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTQw
Myw3ICs0MDQsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiB7CiAgICAgSlNET01XaW5kb3cq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFs
bG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC00MTIsNyArNDEzLDcgQEAg
dWludDMyX3QgSlNET01XaW5kb3c6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cg
dG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIEJhc2U6OmdldEVudW1lcmFibGVMZW5ndGgoZXhlYywgdGhpc09iamVj
dCk7CiB9CkBAIC00MjEsNyArNDIyLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJl
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFAKIHsKICAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7
CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpA
QCAtNDMwLDcgKzQzMSw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNET01X
aW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8v
IE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2Ft
ZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkpKQogICAgICAgICByZXR1cm47CiAgICAgQmFzZTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00MzksNyAr
NDQwLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxv
dyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4K
LSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtNDQ4LDcgKzQ0OSw3IEBAIHZvaWQgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBl
bnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+
aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KQEAgLTQ1Nyw3ICs0NTgsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVj
LAogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IGRlZmluaW5nIHByb3BlcnRpZXMgaW4gdGhpcyB3
YXkgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbiwgYXMgaXQgYWxsb3dzIHNldHRlcnMgdG8g
YmUgaW50cm9kdWNlZC4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3Qt
PndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0IGFsbG93
IHNoYWRvd2luZyBsb2NhdGlvbiB1c2luZyBhY2Nlc3NvciBwcm9wZXJ0aWVzLgpAQCAtNDc2LDcg
KzQ3Nyw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgLy8gYSBwcm9wZXJ0eSBuYW1lZCAibG9jYXRpb24iIGluc3Rl
YWQgb2YgcGVyZm9ybWluZyBhIG5hdmlnYXRpb24gKDxyZGFyOi8vcHJvYmxlbS81Njg4MDM5Piku
CiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLmZy
YW1lKCkpIHsKICAgICAgICAgaWYgKGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygpLnVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2ZUZyYW1lLT50cmVlKCkucGFy
ZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coJnN0YXRlLCBpbXBsKCkpKQorICAgICAgICAgICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIHdyYXBwZWQoKSkp
CiAgICAgICAgICAgICAgICAgcHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC00ODcsNyArNDg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24g
PSBpbXBsKCkubG9jYXRpb24oKSkKKyAgICBpZiAoTG9jYXRpb24qIGxvY2F0aW9uID0gd3JhcHBl
ZCgpLmxvY2F0aW9uKCkpCiAgICAgICAgIGxvY2F0aW9uLT5zZXRIcmVmKGFjdGl2ZURPTVdpbmRv
dygmc3RhdGUpLCBmaXJzdERPTVdpbmRvdygmc3RhdGUpLCBsb2NhdGlvblN0cmluZyk7CiB9CiAK
QEAgLTUzMCw3ICs1MzEsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpvcGVuKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxET01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IGltcGwo
KS5vcGVuKHVybFN0cmluZywgZnJhbWVOYW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZl
RE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSkpOworICAgIFJlZlB0cjxE
T01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IHdyYXBwZWQoKS5vcGVuKHVybFN0cmluZywgZnJhbWVO
YW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93KCZzdGF0ZSksIGZpcnN0
RE9NV2luZG93KCZzdGF0ZSkpOwogICAgIGlmICghb3BlbmVkV2luZG93KQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdG9KUygmc3RhdGUsIG9wZW5lZFdpbmRvdy5n
ZXQoKSk7CkBAIC01ODUsNyArNTg2LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFs
RGlhbG9nKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBEaWFsb2dIYW5kbGVyIGhhbmRsZXIoc3Rh
dGUpOwogCi0gICAgaW1wbCgpLnNob3dNb2RhbERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1
cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRl
KSwgWyZoYW5kbGVyXShET01XaW5kb3cmIGRpYWxvZykgeworICAgIHdyYXBwZWQoKS5zaG93TW9k
YWxEaWFsb2codXJsU3RyaW5nLCBkaWFsb2dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93
KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSksIFsmaGFuZGxlcl0oRE9NV2luZG93JiBk
aWFsb2cpIHsKICAgICAgICAgaGFuZGxlci5kaWFsb2dDcmVhdGVkKGRpYWxvZyk7CiAgICAgfSk7
CiAKQEAgLTYzNSwxMiArNjM2LDEyIEBAIHN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdl
KERPTVdpbmRvdyYgaW1wbCwgRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9z
dE1lc3NhZ2UoaW1wbCgpLCBzdGF0ZSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHdy
YXBwZWQoKSwgc3RhdGUpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBpbXBsKCkuZG9jdW1lbnQoKSA/IGltcGwoKS5kb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/IHdyYXBwZWQo
KS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpj
cmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgY29udGVudFNlY3VyaXR5UG9s
aWN5KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNjUxLDcgKzY1Miw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRp
bWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpbnQgZGVsYXkgPSBzdGF0ZS5hcmd1bWVudCgx
KS50b0ludDMyKCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQg
cmVzdWx0ID0gaW1wbCgpLnNldFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5LCBlYyk7
CisgICAgaW50IHJlc3VsdCA9IHdyYXBwZWQoKS5zZXRUaW1lb3V0KFdURjo6bW92ZShhY3Rpb24p
LCBkZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJl
dHVybiBqc051bWJlcihyZXN1bHQpOwpAQCAtNjU5LDcgKzY2MCw3IEBAIEpTVmFsdWUgSlNET01X
aW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGltcGwoKS5kb2N1bWVudCgpID8gaW1wbCgp
LmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKKyAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1
bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDog
bnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBT
Y2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBj
b250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02NjksNyArNjcwLDcgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IGpzTnVtYmVyKDApOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3Vs
dCA9IGltcGwoKS5zZXRJbnRlcnZhbChXVEY6Om1vdmUoYWN0aW9uKSwgZGVsYXksIGVjKTsKKyAg
ICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBk
ZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVy
biBqc051bWJlcihyZXN1bHQpOwpAQCAtNjc3LDcgKzY3OCw3IEBAIEpTVmFsdWUgSlNET01XaW5k
b3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNET01XaW5kb3c6
OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBGcmFtZSogZnJhbWUg
PSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtNjg1
LDEzICs2ODYsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUmIHN0YXRlKQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2
ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9i
YWxPYmplY3QoKS0+d29ybGQoKSksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUp
KTsKKyAgICB3cmFwcGVkKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29y
bGQoKSksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC02OTksNyArNzAwLDcgQEAg
SlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBpbXBsKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgw
KS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVu
ZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3Qo
KS0+d29ybGQoKSkucHRyKCksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsK
KyAgICB3cmFwcGVkKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29y
bGQoKSkucHRyKCksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtNzA5LDkgKzcxMCw5IEBAIERPTVdpbmRvdyog
SlNET01XaW5kb3c6OnRvV3JhcHBlZChKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3Qt
PmluaGVyaXRzKEpTRE9NV2luZG93OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxK
U0RPTVdpbmRvdyo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNE
T01XaW5kb3cqPihvYmplY3QpLT53cmFwcGVkKCk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMo
SlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01X
aW5kb3dTaGVsbCo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNE
T01XaW5kb3dTaGVsbCo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRl
eCA1NGNiNWU1NDA0MjAxNTA1ZDVkYTdlYTQ3ZTc0ZmEwYzJlZjBlMDY0Li4xMTIwNjY4NTIyMjI5
ZjdkMTZkZWY4NjlkZjkxNzk2N2Y1MWNhNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEpTRE9N
V2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93KQog
ewogICAgIC8vIFJlcGxhY2luZyBKU0RPTVdpbmRvdyB2aWEgdGVsbGluZyBKU0RPTVdpbmRvd1No
ZWxsIHRvIHVzZSB0aGUgc2FtZSBET01XaW5kb3cgaXQgYWxyZWFkeSB1c2VzIG1ha2VzIG5vIHNl
bnNlLAogICAgIC8vIHNvIHdlJ2QgYmV0dGVyIG5ldmVyIHRyeSB0by4KLSAgICBBU1NFUlQoIXdp
bmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAhPSAmd2luZG93KCktPmltcGwoKSk7CisgICAgQVNT
RVJUKCF3aW5kb3coKSB8fCBkb21XaW5kb3cuZ2V0KCkgIT0gJndpbmRvdygpLT53cmFwcGVkKCkp
OwogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlw
ZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9i
YWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0
cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCkBAIC05NCw5ICs5NCw5IEBA
IHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBk
b21XaW5kb3cpCiAvLyBKU0RPTVdpbmRvdyBtZXRob2RzCiAvLyAtLS0tCiAKLURPTVdpbmRvdyYg
SlNET01XaW5kb3dTaGVsbDo6aW1wbCgpIGNvbnN0CitET01XaW5kb3cmIEpTRE9NV2luZG93U2hl
bGw6OndyYXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiB3aW5kb3coKS0+aW1wbCgpOworICAg
IHJldHVybiB3aW5kb3coKS0+d3JhcHBlZCgpOwogfQogCiAvLyAtLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggY2VkYjU5YzczNTJhY2Rm
MTBhMzE3NmEwN2IyMTgzYWU3NTJjNjhhOC4uMDFmMDQ4ZDY3YTRmNWI4ZDBmMWVlOTY5ZDVkMjc1
NDVmMTI3NDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
REVDTEFSRV9JTkZPOwogCi0gICAgICAgIERPTVdpbmRvdyYgaW1wbCgpIGNvbnN0OworICAgICAg
ICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNET01XaW5k
b3dTaGVsbCogY3JlYXRlKEpTQzo6Vk0mIHZtLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IGU0
OTQxNWUyYmM0MjQ1ODBjMmJjOTAwYmQzMjNmNjdiMDgwOTUyMzUuLjI2MjZmNThhZWVhOTAyNDUx
MDBiZDJkYjlhZTEwN2RlMGMzM2RlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oCkBAIC01MiwxNiArNTIsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW1wbGVt
ZW50YXRpb25DbGFzcz4gY2xhc3MgSlNET01XcmFwcGVyIDogcHVibGljIEpTRE9NT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NT2JqZWN0IEJhc2U7CiAKLSAgICBJbXBsZW1lbnRh
dGlvbkNsYXNzJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIH5KU0RPTVdy
YXBwZXIoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQorICAg
IEltcGxlbWVudGF0aW9uQ2xhc3MmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PEltcGxlbWVudGF0aW9uQ2xhc3MmPihtX3dyYXBwZWQuZ2V0KCkpOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8SW1wbGVtZW50YXRpb25DbGFzcz4mJiBpbXBsKQog
ICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgICAgICwgbV9pbXBs
KCZpbXBsLmxlYWtSZWYoKSkgeyB9CisgICAgICAgICwgbV93cmFwcGVkKFdURjo6bW92ZShpbXBs
KSkgeyB9CiAKIHByaXZhdGU6Ci0gICAgSW1wbGVtZW50YXRpb25DbGFzcyogbV9pbXBsOworICAg
IFJlZjxJbXBsZW1lbnRhdGlvbkNsYXNzPiBtX3dyYXBwZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFD
dWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9t
LmNwcAppbmRleCA3YWIzMjQ1ZDBiYmMyYmQ3ZGY1N2YyYjc1OWIzNGIwNDgwZjMzNWExLi5iZTUz
ZWJlZDk1MTQxYmY2ODU2MTk3NWM0MTY3YWU1MmMwMWUyZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiBKU1ZhbHVlIEpT
RGF0YUN1ZTo6dmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1w
bCgpLnZhbHVlKCZzdGF0ZSk7CisgICAgcmV0dXJuIHdyYXBwZWQoKS52YWx1ZSgmc3RhdGUpOwog
fQogCiB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBpbXBsKCkuc2V0VmFsdWUoJnN0YXRlLCB2YWx1ZSk7CisgICAgd3JhcHBl
ZCgpLnNldFZhbHVlKCZzdGF0ZSwgdmFsdWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAppbmRleCAwYjBm
YTkwNzYwMTY1NjcxMzFjYjhkNzAzM2M5Yzg2MThjMGExZGU4Li5kZmM4ZDQ0Y2Y2NmQ1ZGUyZWQ5
MmQyZWNkYmExZjM2NTY2MjhlNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0RhdGFUcmFuc2Zlcjo6dHlwZXMoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyA9IGltcGwoKS50eXBlcygp
OworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gd3JhcHBlZCgpLnR5cGVzKCk7CiAgICAgcmV0
dXJuIHR5cGVzLmlzRW1wdHkoKSA/IGpzTnVsbCgpIDoganNBcnJheSgmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCB0eXBlcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKaW5k
ZXggODM4OWQ2MWU1ODMxMzg1NGY1NTYzM2MyYzkzZDUxMTczMGMzZWEwZS4uMGU5Yjk3NjdmYzMy
OWNkOWVjNTYzYmQ5YmU0YzFmZWZmMTY4NTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1
c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpT
VmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmlt
cGwoKSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCA3ZDgwZjZm
MWI4ZmVhMWQwYTc3ZWRmODg4NmIzZWQzMzBmNjZiZjAwLi43Mzc2MmNhYTEzYzU0ZmU1Y2ZiOTYz
NzgwOTE5MGY0OGM2Njg5ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IHN0YXRpYyBKU09iamVjdCogY3JlYXRlUm90YXRpb25SYXRlT2JqZWN0KGNvbnN0IERldmljZU1v
dGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSoKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojph
Y2NlbGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBEZXZpY2VNb3Rpb25F
dmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVyYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmpl
Y3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+YWNjZWxlcmF0aW9uKCksIHN0YXRlKTsKQEAgLTE0
NCw3ICsxNDQsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbihF
eGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAg
ICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50
JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAg
ICByZXR1cm4gY3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCkt
PmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSwgc3RhdGUpOwpAQCAtMTUyLDcgKzE1Miw3
IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eShFeGVjU3RhdGUmIHN0YXRlKSBjb25zCiAKIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVu
dDo6cm90YXRpb25SYXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgRGV2aWNlTW90
aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gd3Jh
cHBlZCgpOwogICAgIGlmICghaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+cm90YXRpb25SYXRlKCkp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4gY3JlYXRlUm90YXRpb25SYXRl
T2JqZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCktPnJvdGF0aW9uUmF0ZSgpLCBzdGF0ZSk7CkBA
IC0xNjAsNyArMTYwLDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJh
dGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50
OjppbnRlcnZhbChFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERldmljZU1vdGlvbkV2ZW50JiBp
bXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAg
ICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmNhblByb3ZpZGVJbnRlcnZhbCgpKQogICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5kZXZpY2VNb3Rp
b25EYXRhKCktPmludGVydmFsKCkpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEpTVmFsdWUgSlNEZXZp
Y2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgYm9vbCBpbnRlcnZhbFByb3ZpZGVkID0gIXN0YXRlLmFyZ3VtZW50KDYpLmlzVW5kZWZpbmVk
T3JOdWxsKCk7CiAgICAgZG91YmxlIGludGVydmFsID0gc3RhdGUuYXJndW1lbnQoNikudG9OdW1i
ZXIoJnN0YXRlKTsKICAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gZGV2aWNlTW90aW9uRGF0
YSA9IERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24sIGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHksIHJvdGF0aW9uUmF0ZSwgaW50ZXJ2YWxQcm92aWRlZCwgaW50ZXJ2YWwp
OwotICAgIGltcGwoKS5pbml0RGV2aWNlTW90aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2Vs
YWJsZSwgZGV2aWNlTW90aW9uRGF0YS5nZXQoKSk7CisgICAgd3JhcHBlZCgpLmluaXREZXZpY2VN
b3Rpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdl
dCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAKaW5kZXggMTEyNzA1MmJjNjA1ZTdhY2RmNmQ1ZGE2NmRjNDI4ZjhhOGJmOGVjNi4uNTZh
YmQ5YjI0MTgwMjJlMTZlMzk4NGRjMzc1MGNiNTUyMjZmNzFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1
ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0g
ICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU9yaWVu
dGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigp
LT5jYW5Qcm92aWRlQWxwaGEoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVy
biBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+YWxwaGEoKSk7CkBAIC00OCw3ICs0OCw3IEBA
IEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphbHBoYShFeGVjU3RhdGUmKSBjb25z
dAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YShFeGVjU3RhdGUmKSBj
b25zdAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3Jp
ZW50YXRpb24oKS0+Y2FuUHJvdmlkZUJldGEoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwog
ICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+YmV0YSgpKTsKQEAgLTU2LDcg
KzU2LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmJldGEoRXhlY1N0YXRl
JikgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmdhbW1hKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlR2FtbWEoKSkKICAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Z2FtbWEoKSk7
CkBAIC02NSw3ICs2NSw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1t
YShFeGVjU3RhdGUmKSBjb25zdAogI2lmIFBMQVRGT1JNKElPUykKIEpTVmFsdWUgSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUmKSBjb25zdAog
ewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VP
cmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50YXRp
b24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9yaWVudGF0aW9uKCktPmNvbXBhc3NIZWFkaW5n
KCkpOwpAQCAtNzMsNyArNzMsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
d2Via2l0Q29tcGFzc0hlYWRpbmcoRXhlY1N0YXRlJikgY29uc3QKIAogSlNWYWx1ZSBKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NBY2N1cmFjeShFeGVjU3RhdGUmKSBjb25z
dAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50
YXRpb24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5jb21wYXNzQWNj
dXJhY3koKSk7CkBAIC04Myw3ICs4Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojp3ZWJraXRDb21wYXNzQWNjdXJhY3koRXhlY1N0YXRlJikgY29uc3QKICNpZiAhUExBVEZP
Uk0oSU9TKQogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFic29sdXRlKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQWJzb2x1dGUoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogICAgIHJldHVybiBqc0Jvb2xlYW4oaW1wLm9yaWVudGF0aW9uKCktPmFic29s
dXRlKCkpOwpAQCAtMTE0LDcgKzExNCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGJv
b2wgYWJzb2x1dGUgPSBzdGF0ZS5hcmd1bWVudCg2KS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBS
ZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBvcmllbnRhdGlvbiA9IERldmljZU9yaWVudGF0
aW9uRGF0YTo6Y3JlYXRlKGFscGhhUHJvdmlkZWQsIGFscGhhLCBiZXRhUHJvdmlkZWQsIGJldGEs
IGdhbW1hUHJvdmlkZWQsIGdhbW1hLCBhYnNvbHV0ZVByb3ZpZGVkLCBhYnNvbHV0ZSk7CiAjZW5k
aWYKLSAgICBpbXBsKCkuaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQodHlwZSwgYnViYmxlcywg
Y2FuY2VsYWJsZSwgb3JpZW50YXRpb24uZ2V0KCkpOworICAgIHdyYXBwZWQoKS5pbml0RGV2aWNl
T3JpZW50YXRpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5n
ZXQoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZWMwYjljMmJhMzBlODYw
ZjZlMmJhOTgwMTcwZDhmNzAyYjQ0NTJkNy4uMDk0Y2UzZTMyMmRiMGQ3MGIyMGE4ZGJhMzBlNGIx
MjM1OWM5ODQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1
bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRG9jdQog
SlNWYWx1ZSBKU0RvY3VtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNWYWx1ZSBKU0RvY3Vt
ZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVu
ZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBl
ZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0
b20uY3BwCmluZGV4IGMzNTJkNWRiOTdiYmNkZTBjNmNmYzk2MWRiYWVhNDgxY2I3MjE1YzUuLjdk
YTM4NDdjMTc2ZjA2NzBjN2NjZDU5MTJmMzY5MDJmZDljMDQ4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZhbHVlIEpTRG9jdW1lbnRG
cmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOworICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6
cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFw
cGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGltcGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3Jh
cHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNw
cAppbmRleCA4MzMzODcyMDFiYmY2MDJiNTU1MzYwOGJlYjU1MTA2MjljZWNiOTVhLi5hOTNkNjcx
NzNkOTQyNTU2YjBmMjI2MmNiNDA4MTkyMjBiM2ZlOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShF
eGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwo
KS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgp
LmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUp
CiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNEb2N1bWVu
dFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpy
ZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGltcGwoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKKyAgICB3cmFwcGVkKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCBmZWZkZTM1N2E3ZGNiNmViN2M1ZDZmNjYxZTdiNTdmNWMwMGU5NDMxLi4x
ZDY1MjQyZjE2MWE4YmU2NjJiZjczNmZmODJkNWY4YTY2ZTE5OGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKIEpTVmFsdWUgSlNFbGVtZW50OjpiZWZvcmUoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuYmVm
b3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5iZWZv
cmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC03OSw3ICs3OSw3
IEBAIEpTVmFsdWUgSlNFbGVtZW50OjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUg
SlNFbGVtZW50OjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CkBAIC04OCw3ICs4OCw3IEBAIEpTVmFsdWUgSlNFbGVtZW50OjphZnRlcihFeGVjU3Rh
dGUmIHN0YXRlKQogSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRo
KHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNl
V2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTk3LDcgKzk3
LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIEpTVmFsdWUgSlNFbGVtZW50
OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCku
YXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAppbmRleCA1MWU5ZjBkOTMwZjZj
OWY2OThmZDIwYWNhOWI4MDFhNjg3YWY4N2UwLi42MDk5NTQxNjk1NmZiZGUxNTE4YTU5YWRkYzBh
NWY0MDY2OTVmNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNFdmVudDo6Y2xpcGJvYXJkRGF0YShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJl
dHVybiBpbXBsKCkuaXNDbGlwYm9hcmRFdmVudCgpID8gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCgpLCBpbXBsKCkuY2xpcGJvYXJkRGF0YSgpKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJu
IHdyYXBwZWQoKS5pc0NsaXBib2FyZEV2ZW50KCkgPyB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5jbGlwYm9hcmREYXRhKCkpIDoganNVbmRlZmluZWQoKTsKIH0KIAogI2Rl
ZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCAyODBjYTEy
ZGViZDBmMDBmODVlYWIzMGM5OGNkYjM3OGVkZjM3MGNiLi44M2VjYTk0YTQwN2UzYTEyOTljYWJm
NzI5ODgyNjQ3Y2VmNjg1Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAogCiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewog
ICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgaWYgKCF3aW5kb3ctPmltcGwoKS5pc0N1cnJlbnRseURpc3BsYXll
ZEluRnJhbWUoKSkKKyAgICAgICAgaWYgKCF3aW5kb3ctPndyYXBwZWQoKS5pc0N1cnJlbnRseURp
c3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgLy8gRklYTUU6
IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBjb250ZXh0cz8KLSAgICAgICAgU2NyaXB0
Q29udHJvbGxlciYgc2NyaXB0ID0gd2luZG93LT5pbXBsKCkuZnJhbWUoKS0+c2NyaXB0KCk7Cisg
ICAgICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdCA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1l
KCktPnNjcmlwdCgpOwogICAgICAgICBpZiAoIXNjcmlwdC5jYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Q3VzdG9tLmNwcAppbmRleCBjN2M3NDUwNWE2YTFmYWVmMGNjN2RhOWIyYzY2NTMyNGUyZDRm
NzljLi5lOGVhZDFjMWQ0MmYwZGRmZmVlOTY2ZTE4MjBlZDAyNTA4ODJmNGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogCiAjZGVmaW5lIFRSWV9UT19V
TldSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkgXAogICAgIGlmICh2YWx1ZS5pbmhl
cml0cyhKUyMjaW50ZXJmYWNlTmFtZTo6aW5mbygpKSkgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXR1cm4gJmpzQ2FzdDxKUyMjaW50ZXJmYWNlTmFtZSo+KGFzT2JqZWN0KHZhbHVl
KSktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlMjI2ludGVyZmFjZU5hbWUqPihh
c09iamVjdCh2YWx1ZSkpLT53cmFwcGVkKCk7CiAKIEV2ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0
Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKaW5kZXggNTFmYmY0ZmExODJmNGMz
YmM0NmJhNThmYmRlMDdjNWVmNThmMTA2OS4uYTNjMDliMTgzMDQxMTlhOGVlOGRkNzdiNGQ3ZGZm
NTQ4MmQzYjA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
UmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVS
ZWFkZXJDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SlNWYWx1ZSBKU0ZpbGVSZWFkZXI6OnJlc3VsdChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewot
ICAgIEZpbGVSZWFkZXImIGltcCA9IGltcGwoKTsKKyAgICBGaWxlUmVhZGVyJiBpbXAgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKGltcC5yZWFkVHlwZSgpID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRB
c0FycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXAuYXJyYXlCdWZmZXJSZXN1bHQoKSkpOwogICAgIHJldHVybiBqc093
bmVkU3RyaW5nT3JOdWxsKCZzdGF0ZSwgaW1wLnN0cmluZ1Jlc3VsdCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggZWJj
NWJhN2FiNjMwY2ZhNTNkMDE1YjJjNmQzNDIzODk0NTI4MDkxNy4uYjAxYmU3ZGJkMGYwM2VjYTgw
YzZkMDk1ZjBhZWM4Yzc3NmU4NTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBKU1ZhbHVl
IEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsK
IAotICAgIGltcGwoKS5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNl
KCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxl
YXNlKCkpOworICAgIHdyYXBwZWQoKS5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFj
ay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0
aW9ucy5yZWxlYXNlKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0xMzYs
NyArMTM2LDcgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3Np
dGlvbk9wdGlvbnMpOwogCi0gICAgaW50IHdhdGNoSUQgPSBpbXBsKCkud2F0Y2hQb3NpdGlvbihw
b3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CisgICAgaW50IHdhdGNoSUQgPSB3cmFwcGVk
KCkud2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKHdhdGNoSUQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDI1OTJmNDY3
MmU4YTIxNzBlYmZmZWEyMmQ4MzM1NTgxMzM5ZjIxZjkuLjk0YmMzMjRhZWRlMzgwZjBhZDkyOWM4
NDM0YzViOWRhYTk5YjBjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUm
IHN0YXRlLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xs
ZWN0aW9uLT5pbXBsKCkubmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zID0gY29sbGVj
dGlvbi0+d3JhcHBlZCgpLm5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgLy8gRG8gbm90IHVzZSB0aGlzT2JqIGhlcmUuIEl0IGNhbiBiZSB0aGUgSlNIVE1MRG9j
dW1lbnQsIGluIHRoZSBkb2N1bWVudC5mb3JtcyhpKSBjYXNlLgogICAgIEpTSFRNTEFsbENvbGxl
Y3Rpb24qIGpzQ29sbGVjdGlvbiA9IGpzQ2FzdDxKU0hUTUxBbGxDb2xsZWN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpOwotICAgIEhUTUxBbGxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uID0ganNDb2xsZWN0
aW9uLT5pbXBsKCk7CisgICAgSFRNTEFsbENvbGxlY3Rpb24mIGNvbGxlY3Rpb24gPSBqc0NvbGxl
Y3Rpb24tPndyYXBwZWQoKTsKIAogICAgIC8vIEFsc28sIGRvIHdlIG5lZWQgdGhlIFR5cGVFcnJv
ciB0ZXN0IGhlcmUgPwogCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCpzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpLmltcGwoKSkpCi0gICAg
ICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5pdGVtKGluZGV4
LnZhbHVlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwg
d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgIHJldHVybiBuYW1lZEl0ZW1zKHN0
YXRlLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQo
MCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
CmluZGV4IGU2ZWM4ZGMzY2VhZjRmYWYxMzNlNDhlOTQ1OWI5OGE2Mjg4ZGM2ODEuLjE0YWQ5NWJi
MTc2MzUyODk3ODYwMzE3YzgyMDI4MWYwOGRmZDBiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGdldDNEQ29udGV4dEF0dHJpYnV0ZXMoRXhlY1N0YXRl
JiBzdGF0ZSwgUmVmUHRyPENhbnZhc0NvbnRleHRBdHRyaWJ1CiAKIEpTVmFsdWUgSlNIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52
YXNFbGVtZW50JiBjYW52YXMgPSBpbXBsKCk7CisgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZh
cyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgCiAgICAgUmVmUHRy
PENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzPiBhdHRyczsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1
ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpT
VmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gaW1wbCgpOwor
ICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0
ZS5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAg
IGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9T
dHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiAKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAg
ICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gd3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogCiAgICAgY29uc3QgU3RyaW5nJiB0eXBlID0gdmFsdWVUb1N0cmluZ1dpdGhV
bmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
aW5kZXggNzI3OWE5NDUwYTE3MTM0MDUzZjY4MzAyNWMzYzEwODdkYTUwNzkwYi4uODg5NzA1YWZl
MGQ4MzZmYzZlYjViOTE4MjlmOTgwMDgzMTJhNmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQyLDEwICs0
MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUmIHZhbHVlKQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW1wbCgpLnR5cGUoKSAhPSBG
b3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUgc3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKLSAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGltcGwoKS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNo
b3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0Uod3JhcHBlZCgpLnR5cGUoKSAhPSBGb3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUg
c3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHdyYXBwZWQo
KS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFt
ZUdldHRlciIpOwogCi0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwog
ICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNDMxNzQy
ODU0NjhhZWFmNzE4NzFlMDk2NGY0MjYxMTJlYzVhNjAwOS4uMTkxMmMwYjZiZTNiODk2MjQ0YzYy
YmUxNmZlMTUxOTk2NGZlMDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIEpTSFRN
TERvY3VtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZQogCiBib29sIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0g
ICAgYXV0byYgZG9jdW1lbnQgPSBpbXBsKCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSB3cmFwcGVk
KCk7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpOwogICAgIGlmICghYXRvbWljUHJvcGVydHlOYW1lIHx8ICFkb2N1
bWVudC5oYXNEb2N1bWVudE5hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKSkKQEAgLTExNSw3
ICsxMTUsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKICAgICBpZiAodikKICAgICAgICAgcmV0dXJuIHY7CiAKLSAgICByZXR1cm4gdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuYWxsKCkpOworICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5hbGwoKSk7CiB9CiAKIHZvaWQgSlNIVE1M
RG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMTMy
LDcgKzEzMiw3IEBAIHN0YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3Rh
dGUmIHN0YXRlKQogICAgIGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coZnVuY3Rvci5jYWxsZXJGcmFtZSgpLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCkuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdyhmdW5jdG9yLmNhbGxlckZyYW1lKCktPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndy
YXBwZWQoKS5kb2N1bWVudCgpOwogfQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCkBAIC0xNDEsNyAr
MTQxLDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgYnJvd3NlcnMsIHBhc3Mgb3Bl
biBjYWxscyB3aXRoIG1vcmUgdGhhbiAyIHBhcmFtZXRlcnMgdG8gdGhlIHdpbmRvdy4KICAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID4gMikgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gaW1wbCgpLmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQo
KS5mcmFtZSgpKSB7CiAgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9K
U0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50V29ybGQoJnN0YXRlKSk7CiAgICAgICAgICAg
ICBpZiAod3JhcHBlcikgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB3cmFw
cGVyLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm9wZW4iKSk7
CkBAIC0xNTcsMTAgKzE1NywxMCBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAKICAgICAvLyBkb2N1bWVudC5vcGVuIGNsb2JiZXJzIHRoZSBzZWN1cml0
eSBjb250ZXh0IG9mIHRoZSBkb2N1bWVudCBhbmQKICAgICAvLyBhbGlhc2VzIGl0IHdpdGggdGhl
IGFjdGl2ZSBzZWN1cml0eSBjb250ZXh0LgotICAgIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9
IGFzSlNET01XaW5kb3coc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gYXNKU0RPTVdpbmRvdyhzdGF0
ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCkuZG9jdW1lbnQoKTsKIAogICAgIC8v
IEluIHRoZSBjYXNlIG9mIHR3byBwYXJhbWV0ZXJzIG9yIGZld2VyLCBkbyBhIG5vcm1hbCBkb2N1
bWVudCBvcGVuLgotICAgIGltcGwoKS5vcGVuKGFjdGl2ZURvY3VtZW50KTsKKyAgICB3cmFwcGVk
KCkub3BlbihhY3RpdmVEb2N1bWVudCk7CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE2OCw3
ICsxNjgsNyBAQCBlbnVtIE5ld2xpbmVSZXF1aXJlbWVudCB7IERvTm90QWRkTmV3bGluZSwgRG9B
ZGROZXdsaW5lIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkb2N1bWVudFdyaXRlKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTSFRNTERvY3VtZW50KiB0aGlzRG9jdW1lbnQsIE5ld2xpbmVSZXF1aXJlbWVu
dCBhZGROZXdsaW5lKQogewotICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSAmdGhpc0RvY3Vt
ZW50LT5pbXBsKCk7CisgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9ICZ0aGlzRG9jdW1lbnQt
PndyYXBwZWQoKTsKICAgICAvLyBET00gb25seSBzcGVjaWZpZXMgc2luZ2xlIHN0cmluZyBhcmd1
bWVudCwgYnV0IGJyb3dzZXJzIGFsbG93IG11bHRpcGxlIG9yIG5vIGFyZ3VtZW50cy4KIAogICAg
IHNpemVfdCBzaXplID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzZDQ4ZGYwNDQ2
MDkzM2VjY2Y0NTUzNGJiN2NjYTE3YzNkNmM1NmY1Li41ODM2YTEwNzRiZTI5NTY3ZTE2Y2I4NmU1
NTQyZDNjYzIyMGQ4MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBKU1Njb3BlKiBKU0hUTUxFbGVtZW50OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCYg
ZWxlbWVudCA9IGltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IHdyYXBwZWQoKTsK
IAogICAgIC8vIFRoZSBkb2N1bWVudCBpcyBwdXQgb24gZmlyc3QsIGZhbGwgYmFjayB0byBzZWFy
Y2hpbmcgaXQgb25seSBhZnRlciB0aGUgZWxlbWVudCBhbmQgZm9ybS4KICAgICBzY29wZSA9IEpT
V2l0aFNjb3BlOjpjcmVhdGUoZXhlYywgYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3Qo
KSwgJmVsZW1lbnQuZG9jdW1lbnQoKSkpLCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwCmluZGV4IDhiNTVmYTdkZTM2ZTVjNjA3ODg5YzliMWU5YTUxYzNlYzhhNjhiNzYu
LjNhZmIzMjYwNzI2ZGRmNWYzNTgwZDJmNDJiNmY5YWJlZGYwNmY1YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJ
dGVtcyA9IGNvbGxlY3Rpb24tPmltcGwoKS5uYW1lZEl0ZW1zKG5hbWUpOworICAgIFZlY3RvcjxS
ZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xsZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVt
cyhuYW1lKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRl
bXNbMF0ucHRyKCkpOwogCi0gICAgQVNTRVJUKGNvbGxlY3Rpb24tPmltcGwoKS50eXBlKCkgPT0g
Rm9ybUNvbnRyb2xzKTsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChu
YW1lKS5nZXQoKSk7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24tPndyYXBwZWQoKS50eXBlKCkgPT0g
Rm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBjb2xsZWN0aW9uLT53cmFwcGVkKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlz
dChuYW1lKS5nZXQoKSk7CiB9CiAKIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCBlMzRjMDM1NDZkZGVhNmNhZGVkMWEzY2Fj
OWY3YmY3ZjMzODhiYmE0Li4zYWVkNzA1MmY0NjE1ZWYwYWM5MzU5ZTcxYTkxNTg3ODBiM2JkNTdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ym9vbCBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIFZlY3RvcjxSZWY8
RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBpbXBsKCkubmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBu
YW1lZEl0ZW1zID0gd3JhcHBlZCgpLm5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBhYjAwMGY3MTMwMTll
OWI4YTBiZjU4ZTIzNWQ3NDEzYTlhY2I5NTQyLi42ZmQ1YTk3YjI1N2M2MDg1OGY4OTI5YjJlOWEy
OTkxYjU3ZGYxZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGFsbG93U2V0dGluZ0phdmFzY3JpcHRVUkwoRXhlY1N0YXRlJiBzdGF0ZSwgSFRN
TEZyYW1lRWxlbWVudCoKIAogdm9pZCBKU0hUTUxGcmFtZUVsZW1lbnQ6OnNldExvY2F0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRNTEZyYW1lRWxlbWVudCYg
aW1wID0gaW1wbCgpOworICAgIEhUTUxGcmFtZUVsZW1lbnQmIGltcCA9IHdyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbG9jYXRpb25WYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKCZzdGF0
ZSwgdmFsdWUpOwogCiAgICAgaWYgKCFhbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKHN0YXRlLCAm
aW1wLCBsb2NhdGlvblZhbHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDcwODU2ZTU1M2M0
ZmQ2YzdkMDIwZmI5NzM1ODk4NmEyNjUyNTM1NmEuLjEyNWFlZjdlYzFkNzMxZjIyZTExNjQwZTgw
ZjMyYmI3MGFhZWVhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYg
dmFsdWUpCiB7Ci0gICAgYXV0byogZnJhbWVFbGVtZW50ID0gaW1wbCgpLmNoaWxkcmVuKCktPm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBh
dXRvKiBmcmFtZUVsZW1lbnQgPSB3cmFwcGVkKCkuY2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXM8SFRNTEZy
YW1lRWxlbWVudD4oZnJhbWVFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCA4ZjQyZGJlZjUyNGZkNmZkOGNlM2RhYTExMTlkZGZkYjNiOWIwMTU1Li4z
NzJmMzQyOTgxNGNhODUyZmEzNWE3MjhkYWRjZmUwYmEzNjQ1ZjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAg
ICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTQ0LDcgKzQ0LDcg
QEAgSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFy
dChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBl
ZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOwogCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25TdGFydChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
CiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5I
YXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwog
CkBAIC02Miw3ICs2Miw3IEBAIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25F
bmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNl
dFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhU
TUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlu
cHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNI
VE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlv
bihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0
ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKIApAQCAtODAsNyArODAsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIHZvaWQg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwo
KTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlu
cHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OwogICAgICAgICByZXR1cm47CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7Cisg
ICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5j
YW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA0NDAwOTc2MWQxMzlkMTMxODY0NmI1YzhlNTFlMjViYWQw
ZWIxNDAzLi4yZjQxY2ZlNWUyNGJmOTg4MWI2MDNlMDVmNWQyZTNhOTc5YTBlNTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgdm9pZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldENv
bnRyb2xsZXIoRXhlY1N0YXRlJiwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyA0LjguMTAuMTEu
MiBNZWRpYSBjb250cm9sbGVyczogY29udHJvbGxlciBhdHRyaWJ1dGUuCiAgICAgLy8gT24gc2V0
dGluZywgaXQgbXVzdCBmaXJzdCByZW1vdmUgdGhlIGVsZW1lbnQncyBtZWRpYWdyb3VwIGF0dHJp
YnV0ZSwgaWYgYW55LCAKLSAgICBpbXBsKCkuc2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAg
d3JhcHBlZCgpLnNldE1lZGlhR3JvdXAoU3RyaW5nKCkpOwogICAgIC8vIGFuZCB0aGVuIHNldCB0
aGUgY3VycmVudCBtZWRpYSBjb250cm9sbGVyIHRvIHRoZSBnaXZlbiB2YWx1ZS4KLSAgICBpbXBs
KCkuc2V0Q29udHJvbGxlcihKU01lZGlhQ29udHJvbGxlcjo6dG9XcmFwcGVkKHZhbHVlKSk7Cisg
ICAgd3JhcHBlZCgpLnNldENvbnRyb2xsZXIoSlNNZWRpYUNvbnRyb2xsZXI6OnRvV3JhcHBlZCh2
YWx1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggOTE1ZTAyODdjNzhj
ZGMwOTVkYjFhZGUzMzVkNzYwY2QzYjU4M2U3ZC4uOTIzNDVlNmI1N2ZjYzUwMzM4NmE5MGMzYTE3
Nzk0YzRjMTMxNjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTYxLDEzICs2MSwx
MyBAQCB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIG5ld0xlbmd0aCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsZW5ndGhWYWx1ZSk7CiAgICAgfQogICAgIGlmICghZWMpCi0gICAgICAgIGlt
cGwoKS5zZXRMZW5ndGgobmV3TGVuZ3RoLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZXRMZW5n
dGgobmV3TGVuZ3RoLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogfQog
CiB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHNlbGVjdEluZGV4U2V0
dGVyKCZpbXBsKCkuc2VsZWN0RWxlbWVudCgpLCBleGVjLCBpbmRleCwgdmFsdWUpOworICAgIHNl
bGVjdEluZGV4U2V0dGVyKCZ3cmFwcGVkKCkuc2VsZWN0RWxlbWVudCgpLCBleGVjLCBpbmRleCwg
dmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoRXhl
Y1N0YXRlJiBzdGF0ZSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbjo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgLy8gVGhlIGFyZ3VtZW50IGNh
biBiZSBhbiBIVE1MT3B0aW9uRWxlbWVudCBvciBhbiBpbmRleC4KICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYgKEhUTUxPcHRpb25FbGVtZW50KiBvcHRp
b24gPSBKU0hUTUxPcHRpb25FbGVtZW50Ojp0b1dyYXBwZWQoYXJndW1lbnQpKQotICAgICAgICBp
bXBsKCkucmVtb3ZlKG9wdGlvbik7CisgICAgICAgIHdyYXBwZWQoKS5yZW1vdmUob3B0aW9uKTsK
ICAgICBlbHNlCi0gICAgICAgIGltcGwoKS5yZW1vdmUoYXJndW1lbnQudG9JbnQzMigmc3RhdGUp
KTsKKyAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShhcmd1bWVudC50b0ludDMyKCZzdGF0ZSkpOwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGIzZGYx
M2Y3MmVhYThmYmFhMDc4NjA1ZjQ3NjMzOTI3ZWJlMDJjYzYuLjMwZTNlYmJiODlhNGVmMjNhNTk2
OTRjM2FiZWU1N2E4MGE2MjMxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNCw3ICszNCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEpTVmFsdWUgSlNIVE1MU2VsZWN0RWxlbWVu
dDo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNl
bGVjdCA9IGltcGwoKTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0ID0gd3JhcHBlZCgp
OwogCiAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgLy8gV2hlbiBj
YWxsZWQgd2l0aCBubyBhcmd1bWVudCwgd2Ugc2hvdWxkIGNhbGwgRWxlbWVudDo6cmVtb3ZlKCkg
dG8gZGV0YWNoLgpAQCAtNjksNyArNjksNyBAQCB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogCiB2
b2lkIEpTSFRNTFNlbGVjdEVsZW1lbnQ6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIHNlbGVjdEluZGV4
U2V0dGVyKCZpbXBsKCksIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CisgICAgc2VsZWN0SW5kZXhTZXR0
ZXIoJndyYXBwZWQoKSwgZXhlYywgaW5kZXgsIHZhbHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3Rv
bS5jcHAKaW5kZXggMWJiODZkZjg4YzlkZWVhYjA5YmEwNmYzMjVkZTdiZGY2NmQ0NDhhZi4uOTdh
YmU3N2MwYjAzYWIxNjVkYjZkNDc2ZDhlYTE5OGQxODdiYzBjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20u
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSlNIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250
ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soJnN0
YXRlKTsKIAotICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRlbnQgPSBpbXBsKCkuY29udGVudCgp
OworICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRlbnQgPSB3cmFwcGVkKCkuY29udGVudCgpOwog
CiAgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdCgp
LT53b3JsZCgpLCBjb250ZW50KTsKICAgICBpZiAod3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCmluZGV4IGEyYzY5ZWJlZTNkYTg4YTM5
Yjc0ZTg3MmRiZTRjOTJkNzVmNWE5ZDIuLjJiZDJmNmQ4ZTM4NDdiMzA0ZmU5NThjNDI4MmYyMDE5
N2EyMzliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9y
eUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogICAgIC8v
IE91ciBjdXN0b20gY29kZSBpcyBvbmx5IG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBj
cm9zcy1kb21haW4gc2NoZW1lLCBzbyBpZiBhY2Nlc3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1
cm4gZmFsc2Ugc28gdGhlIG5vcm1hbCBsb29rdXAgd2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmlu
ZyBtZXNzYWdlOwotICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgaW1wbCgp
LmZyYW1lKCksIG1lc3NhZ2UpKQorICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhl
Yywgd3JhcHBlZCgpLmZyYW1lKCksIG1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZlbiB3
aGVuIGNhbGxlZCBjcm9zcy1kb21haW4uCkBAIC02OSwxNCArNjksMTQgQEAgYm9vbCBKU0hpc3Rv
cnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcHJpbnRFcnJv
ck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkuZnJhbWUoKSwgbWVzc2FnZSk7CisgICAgcHJpbnRFcnJv
ck1lc3NhZ2VGb3JGcmFtZSh3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSk7CiAgICAgc2xvdC5z
ZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBKU0hpc3Rvcnk6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogewotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGlt
cGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB3
cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVMKIGJvb2wgSlNI
aXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hpc3RvcnkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNIaXN0b3J5Kj4oY2VsbCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtOTIsNyArOTIsNyBAQCBib29sIEpT
SGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZQogYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAg
ICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCku
ZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUpOwogfQpAQCAtMTAwLDE0ICsxMDAsMTQgQEAgYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHIK
IHZvaWQgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewogICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hp
c3RvcnkqPihvYmplY3QpOwotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNz
VG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6c3RhdGUoRXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIaXN0b3J5JiBoaXN0b3J5ID0gaW1wbCgpOworICAg
IEhpc3RvcnkmIGhpc3RvcnkgPSB3cmFwcGVkKCk7CiAKICAgICBKU1ZhbHVlIGNhY2hlZFZhbHVl
ID0gbV9zdGF0ZS5nZXQoKTsKICAgICBpZiAoIWNhY2hlZFZhbHVlLmlzRW1wdHkoKSAmJiAhaGlz
dG9yeS5zdGF0ZUNoYW5nZWQoKSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBKU1ZhbHVlIEpTSGlzdG9y
eTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1
c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKCZzdGF0ZSwgaW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKCZzdGF0ZSwgd3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlT
dGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1l
bnQoMCksIDAsIDApOwpAQCAtMTQwLDcgKzE0MCw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNo
U3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpbXBsKCkuc3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0
aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKKyAgICB3cmFw
cGVkKCkuc3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0aXRsZSwgdXJs
LCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBAIC0xNTAsNyArMTUwLDcg
QEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1Zh
bHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYg
KCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisgICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
JnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0xNjksNyArMTY5LDcgQEAgSlNW
YWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhp
c3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlw
ZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlT
dGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVw
bGFjZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3Rh
dGUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKaW5kZXggOWRkNDAxZGUzMzM2YzkwNzk4ZDBhNzliMjlhMTYwNjI3ZWQ3
ODhlNy4uYThjYmEwM2M1ZWI2YmY1OTc2NTY0ZTAwODdhNGNjZjIzYzdkZjVhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShF
eGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuY3Jl
YXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgZWMpLmdldCgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBl
ZCgpLmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIGVjKS5n
ZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0xMTMsNyArMTEzLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihFeGVjU3RhdGUmIGV4ZWMpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZleGVjLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgp
LnRyYW5zYWN0aW9uKHNjcmlwdENvbnRleHQsIHNjb3BlLCBtb2RlLCBlYykuZ2V0KCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmZXhlYywgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS50
cmFuc2FjdGlvbihzY3JpcHRDb250ZXh0LCBzY29wZSwgbW9kZSwgZWMpLmdldCgpKTsKICAgICBz
ZXRET01FeGNlcHRpb24oJmV4ZWMsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cAppbmRleCAyOWM1ZWU0MDg2NTUxMGVmNjQ0OGUwYzhiYjAzYTliNGM2NGNjZTcxLi4wNTVjNDAw
NTBmYmNjMGI2YTgxYTBmZjAzZTA0MjViMDdkOTA4NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBwdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGJv
b2wgb3ZlcndyaXRlKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5
cGVFcnJvcihzdGF0ZSwgIklEQk9iamVjdFN0b3JlIiwgInB1dCIpKTsKIAogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNJREJPYmplY3RTdG9yZTo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIHdyYXBwZWQg
PSBjYXN0ZWRUaGlzLT53cmFwcGVyKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUu
YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdzQ291bnQgPCAxKSkKQEAgLTY0
LDkgKzY0LDkgQEAgc3RhdGljIEpTVmFsdWUgcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBib29sIG92ZXJ3cml0ZSkKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNW
YWx1ZSByZXN1bHQ7CiAgICAgICAgIGlmIChvdmVyd3JpdGUpCi0gICAgICAgICAgICByZXN1bHQg
PSB0b0pTKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucHV0KHN0YXRl
LCB2YWx1ZSwgZWMpLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgd3JhcHBlZC5wdXQoc3RhdGUsIHZhbHVlLCBlYyku
Z2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB0b0pTKCZzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuYWRkKHN0YXRlLCB2YWx1ZSwgZWMpLmdl
dCgpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgd3JhcHBlZC5hZGQoc3RhdGUsIHZhbHVlLCBlYykuZ2V0KCkpOwogCiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTc1LDkgKzc1LDkgQEAgc3RhdGljIEpTVmFsdWUgcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBib29sIG92ZXJ3cml0ZSkKICAgICBhdXRvIGtleSA9IHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChvdmVyd3JpdGUpCi0gICAg
ICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1w
bC5wdXQoc3RhdGUsIHZhbHVlLCBrZXksIGVjKS5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IHRv
SlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgd3JhcHBlZC5wdXQoc3RhdGUs
IHZhbHVlLCBrZXksIGVjKS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSB0b0pT
KCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuYWRkKHN0YXRlLCB2YWx1
ZSwga2V5LCBlYykuZ2V0KCkpOworICAgICAgICByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIHdyYXBwZWQuYWRkKHN0YXRlLCB2YWx1ZSwga2V5LCBlYyku
Z2V0KCkpOwogCiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0xMjcsNyArMTI3LDcgQEAgSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleChFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBp
bXBsKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVu
dHJ5LCBlYykuZ2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpLCB3cmFwcGVkKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwg
dW5pcXVlLCBtdWx0aUVudHJ5LCBlYykuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmlu
ZGV4IGUyNmJiZTc4ZDlmYmJjNDkyMGNlMWVmY2I0YzM1MGZkN2ExMzI0YjguLjllNjllMWJmZDY2
NGI2NmE4YzNkYWRmMTcyNWZhNDg4Njk5Mzg4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAK
QEAgLTEwNyw3ICsxMDcsNyBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93
Q29udGV4dE1lbnUoRXhlY1N0YXRlJiBzdGF0ZSkKICNlbHNlCiAgICAgVmVjdG9yPENvbnRleHRN
ZW51SXRlbT4gaXRlbXMgPSBtZW51Lml0ZW1zKCk7CiAjZW5kaWYKLSAgICBpbXBsKCkuc2hvd0Nv
bnRleHRNZW51KGV2ZW50LCBpdGVtcyk7CisgICAgd3JhcHBlZCgpLnNob3dDb250ZXh0TWVudShl
dmVudCwgaXRlbXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4
IDEzMWUyODcwYmRiNTlkNjA1MzZhOTEwYTc3MWRkNTA3NzJjMDZlNDkuLjAwODNlMGNmMTU5Y2Mx
Zjg5MDBjZmExOGRkN2I0MjU1ZTA5MzQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIHNs
b3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzMsNyArNzMsNyBA
QCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcgogCiBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS5m
cmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBK
U0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3AKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1l
cyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
ZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dB
Y2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgSlNM
b2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwCiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMg
aW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4
ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTG9jYXRpb24qPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIGxvY2F0aW9u
IG9iamVjdCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9
CkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiBKU1ZhbHVl
IEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBG
cmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVk
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
JnN0YXRlLCBmcmFtZSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgcmV0
dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLnRvU3RyaW5nKCkpOworICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS50b1N0cmluZygpKTsKIH0K
IAogYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVz
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0
ZXNDdXN0b20uY3BwCmluZGV4IDgwMThiMjYzM2I3OGU5Y2UxZGUyOTEzM2Q5ZDk0ZTY3MDJlYTM1
MWUuLjc1ZTljYWJiYzM4OTdlMTYwMWVkNmM2NTNjNDVmOWNiNWYyNTI3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0
b20uY3BwCkBAIC0zNyw1NCArMzcsNTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVl
IEpTTWVkaWFTb3VyY2VTdGF0ZXM6OndpZHRoKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgaWYg
KCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1Nv
dXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBqc051
bWJlcihpbXBsKCkud2lkdGgoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS53aWR0
aCgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0YXRl
JikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlmICgh
d3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuaGVpZ2h0KCkpOworICAgIHJldHVy
biBqc051bWJlcih3cmFwcGVkKCkuaGVpZ2h0KCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OmZyYW1lUmF0ZShFeGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmICghaW1wbCgp
Lmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAgcmV0dXJuIGpzTnVtYmVy
KGltcGwoKS5mcmFtZVJhdGUoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5mcmFt
ZVJhdGUoKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8o
RXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQor
ICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuYXNwZWN0UmF0aW8o
KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5hc3BlY3RSYXRpbygpKTsKIH0KIAog
SlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKEV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdy
YXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IGltcGwoKS5mYWNpbmdNb2RlKCk7Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gd3JhcHBlZCgpLmZhY2luZ01vZGUoKTsKICAg
ICBpZiAobW9kZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwoKS5mYWNpbmdNb2Rl
KCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5mYWNp
bmdNb2RlKCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVj
U3RhdGUmKSBjb25zdAogewotICAgIGlmIChpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBp
ZiAod3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkudm9sdW1lKCkpOworICAgIHJl
dHVybiBqc051bWJlcih3cmFwcGVkKCkudm9sdW1lKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwCmluZGV4IDAxOTY1ZTRiNDI3MjY2ZmZkMjc4OWM4YjliMjg0OGE5YWUy
ZGE4N2EuLjM3NWRkNGI1ZjAzNjM5M2ZhYmVmYzMzODg3N2E2N2JlZTI3ZmJiNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20u
Y3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTWVz
c2FnZUNoYW5uZWw6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgpLnBvcnQxKCkpCisg
ICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gd3JhcHBlZCgpLnBvcnQxKCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9
IGltcGwoKS5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHdyYXBwZWQoKS5w
b3J0MigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApp
bmRleCA0NGQ5NTQ3ZjY3NmU5ODU2ZTlkNWE0MWI0NzQyNTIzZDRjNzIxNTMzLi5iNTVkYzRlYTI1
MjQ0MDJlNWJlNGE4MmQyMjU2NjEwMGY2MjMxYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBA
IEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgTWVzc2FnZUV2ZW50JiBl
dmVudCA9IGltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAgIGNh
c2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7CkBAIC03OCw3ICs3OCw3IEBA
IEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAog
ICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZToKICAg
ICAgICAgaWYgKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9
IGV2ZW50LmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRzID0gaW1wbCgpLnBvcnRzKCk7CisgICAgICAgICAgICBNZXNzYWdl
UG9ydEFycmF5IHBvcnRzID0gd3JhcHBlZCgpLnBvcnRzKCk7CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2h5IGRvZXMgdGhpcyBzdXBwcmVzcyBleGNlcHRpb25zPwogICAgICAgICAgICAgcmVzdWx0
ID0gc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCAm
cG9ydHMsIE5vblRocm93aW5nKTsKICAgICAgICAgfSBlbHNlCkBAIC0xMjQsNyArMTI0LDcgQEAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50
KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZUV2ZW50JiBldmVudCA9
IGpzRXZlbnQtPmltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0ganNFdmVudC0+d3Jh
cHBlZCgpOwogICAgIGV2ZW50LmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJn
LCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3Vy
Y2VBcmcsIFdURjo6bW92ZShtZXNzYWdlUG9ydHMpKTsKICAgICBqc0V2ZW50LT5tX2RhdGEuc2V0
KHN0YXRlLnZtKCksIGpzRXZlbnQsIGRhdGFBcmcuanNWYWx1ZSgpKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
UG9ydEN1c3RvbS5jcHAKaW5kZXggMjM5ZjQ3YWZkNmRhNWViZTUxOTBlN2NiYjU5M2UzM2JlYmY5
MWUxZi4uNmIyMTI0NDk4NzVlNzhlOGNiYmRkNzJmYzIzZDBmNjliODM5NjkwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAg
LTQ4LDEzICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIEpTTWVzc2FnZVBvcnQ6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIC8v
IElmIHdlIGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBwb3J0LCB3ZSBjYW4gZGlyZWN0bHkgbWFy
ayBpdCBhcyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJlIHJlbW90ZWx5IGVudGFuZ2xlZCBhcmUg
bWFya2VkIGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoKS4KLSAgICBpZiAo
TWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB3cmFwcGVkKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkK
ICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCiBKU0M6OkpTVmFsdWUg
SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmltcGwoKSk7CisgICAgcmV0dXJuIGhh
bmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsKIH0KIAogdm9pZCBmaWxsTWVzc2Fn
ZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgTWVz
c2FnZVBvcnRBcnJheSYgcG9ydEFycmF5LCBBcnJheUJ1ZmZlckFycmF5JiBhcnJheUJ1ZmZlcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAppbmRleCBjNDY4YWFkNmE2MTRlNDlmMmE3
ZmM5OTIyZWMyYmFkMjQyNDJlYzVkLi5kZWFiYzU0MWRiMDZmMTA5ZTRkMGJmYzZjNzE5NDA5YjUx
ODliOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgdXNpbmcgRGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uUG9pbnQ7CiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lv
blBvaW50KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBv
aW50ID0gaW1wbCgpLmRlY2lzaW9uUG9pbnQoKTsKKyAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9u
UG9pbnQgPSB3cmFwcGVkKCkuZGVjaXNpb25Qb2ludCgpOwogICAgIHN3aXRjaCAoZGVjaXNpb25Q
b2ludCkgewogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3Q6CiAg
ICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0OgpAQCAtNjksNyArNjksNyBAQCB2
b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGRE
YXRhOgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGE6CiAg
ICAgY2FzZSBEZWNpc2lvblBvaW50OjpOZXZlcjoKLSAgICAgICAgaW1wbCgpLnNldERlY2lzaW9u
UG9pbnQoZGVjaXNpb25Qb2ludCk7CisgICAgICAgIHdyYXBwZWQoKS5zZXREZWNpc2lvblBvaW50
KGRlY2lzaW9uUG9pbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcsNyArMTA3
LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpk
ZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAogewotICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgp
LmRlY2lzaW9uKCkpOworICAgIHJldHVybiB0b0pTVmFsdWUod3JhcHBlZCgpLmRlY2lzaW9uKCkp
OwogfQogCiB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZvaWQg
SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaW1wbCgpLnNldERlY2lzaW9uKGRlY2lzaW9uKTsKKyAgICB3cmFwcGVk
KCkuc2V0RGVjaXNpb24oZGVjaXNpb24pOwogfQogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAogewot
ICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgpLnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSk7Cisg
ICAgcmV0dXJuIHRvSlNWYWx1ZSh3cmFwcGVkKCkudW5ibG9ja1JlcXVlc3REZWNpc2lvbigpKTsK
IH0KIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTEzMCw3ICsxMzAs
NyBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKUwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgd3JhcHBlZCgpLnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CiB9CiAKIH07IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0
aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAzODA1NTcyNDcyMDI2YjJhNDhkNDIzMzZhNmNi
MDlkNDhiZGE2Yjg1Li5jNmM1NzI0MDNhZTZiNzgzMjQ2MmUwNjFiNmMzMjYxMzI0NDMyN2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlKiBleGVjKQogCiBib29s
IEpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25P
YnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+aW1wbCgpOworICAgIE11dGF0aW9u
T2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlcio+KGhhbmRsZS5z
bG90KCktPmFzQ2VsbCgpKS0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JzZXJ2ZWROb2RlcyA9IG9i
c2VydmVyLmdldE9ic2VydmVkTm9kZXMoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBvYnNlcnZlZE5v
ZGVzLmJlZ2luKCksIGVuZCA9IG9ic2VydmVkTm9kZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAodmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCgqaXQpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cAppbmRleCA4NDZjZjhmYWE4YzUxMWVmODIxNTE3MDFiNGEwMDhiYWZhMWJmY2QxLi5hMzFlNDZh
ODQzMjE4Yzk4NmE4NDEyYTQ4MDc2ZjA5ODliYjg0NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZh
bHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgp
LmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
ICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDNkNWZlMTI0ODY0
ODYzNGE2NGExZDg5NzVjNGFjMWJjM2QxYmQ5YjguLmYyNGMwNTVmYzg5YjlkZTdiOWE1NWM0ZTYw
ZTQ5MDcyY2FkOTU2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05h
dmlnYXRvckN1c3RvbS5jcHAKQEAgLTY4LDEzICs2OCwxMyBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9y
Ojp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaWYgKCFpbXBsKCkuZnJhbWUoKSkgeworICAgIGlm
ICghd3JhcHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
Tk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CiAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBwcm90ZWN0IHRoZSBjb250ZXh0IChpLmUuIGRv
Y3VtZW50KSBoZXJlIGFzIFVzZXJNZWRpYVJlcXVlc3QgaXMgb2JzZXJ2aW5nIGNvbnRleHQgZGVz
dHJ1Y3Rpb24gYW5kIHdpbGwgY2hlY2sgdmFsaWRpdHkgYmVmb3JlIHJlc29sdmluZy9yZWplY3Rp
bmcgcHJvbWlzZS4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCkuZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3cmFwcGVkKCkuZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKIAogICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOjpj
cmVhdGUoYXNPYmplY3Qoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBnbG9iYWxPYmplY3Qo
KSk7CiAgICAgYXV0byByZXNvbHZlQ2FsbGJhY2sgPSBbc3VjY2Vzc0NhbGxiYWNrLCBkb2N1bWVu
dF0oY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFtPiYgc3RyZWFtKSBtdXRhYmxlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDJjMWE5ZjgzMGUzNTI3
MTU1YTZjZjM3ZDY3N2RjYjIwMmQxMzZjZTguLjMxMjNjOTQ2MDk1NGViZGIzNWQyMjhmOThkOTYx
Y2Y0N2ZjM2YyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcApAQCAtMTA4LDEzICsxMDgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVhY2hhYmxl
RnJvbURPTShOb2RlKiBub2RlLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIGJvb2wgSlNOb2RlT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNOb2RlKiBqc05v
ZGUgPSBqc0Nhc3Q8SlNOb2RlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIHJldHVy
biBpc1JlYWNoYWJsZUZyb21ET00oJmpzTm9kZS0+aW1wbCgpLCB2aXNpdG9yKTsKKyAgICByZXR1
cm4gaXNSZWFjaGFibGVGcm9tRE9NKCZqc05vZGUtPndyYXBwZWQoKSwgdmlzaXRvcik7CiB9CiAK
IEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmluc2VydEJlZm9yZShK
U05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0
YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkuaW5zZXJ0QmVm
b3JlKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0b1dyYXBw
ZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAt
MTI0LDcgKzEyNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBz
dGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLnJlcGxhY2VD
aGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFw
cGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkucmVw
bGFjZUNoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0
b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDEp
OwpAQCAtMTM0LDcgKzEzNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0
YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRl
KQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgb2sgPSBpbXBsKCkucmVt
b3ZlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7CisgICAg
Ym9vbCBvayA9IHdyYXBwZWQoKS5yZW1vdmVDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5h
cmd1bWVudCgwKSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAg
aWYgKG9rKQogICAgICAgICByZXR1cm4gc3RhdGUuYXJndW1lbnQoMCk7CkBAIC0xNDQsNyArMTQ0
LDcgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1Zh
bHVlIEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmFwcGVuZENoaWxkKEpTTm9kZTo6
dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVk
KCkuYXBwZW5kQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAg
cmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTU2NvcGUqIEpT
Tm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogbm9k
ZSkgY29uc3QKIAogdm9pZCBKU05vZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkp
OworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKSkpOwogfQogCiBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCmlu
ZGV4IDJiNDA0MGUzZDk2ZjE2N2U4NjViNjY4MDVhZjNkOTlhMDNiNDMwOGYuLmIzZjAzNjEzOWZh
MGZiMTgwNjQ4NGE2MTBkODRhYzVhYzU3Y2E0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChOb2RlRmls
dGVyKiBmaWx0ZXIgPSBpbXBsKCkuZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRl
ciA9IHdyYXBwZWQoKS5maWx0ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZp
bHRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1
c3RvbS5jcHAKaW5kZXggZjdkODYzYjhlMzk1ZGJmY2YxMTNjYzY4NmIzNWY0Njg3NGQ1MDBhMi4u
YmEwNjJiZWEyOWI0NjAzZDRiNzE5YmNkNzdmYjZmMjcxZTMxZDA0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTQyLDEyICs0Miwx
MiBAQCBib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxpc3Qg
PSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBpZiAo
IWpzTm9kZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNMaXZlTm9kZUxpc3QoKSkKLSAgICAgICAg
cmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8TGl2ZU5v
ZGVMaXN0Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChqc05v
ZGVMaXN0LT5pbXBsKCkuaXNDaGlsZE5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNpdG9y
LmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PENoaWxkTm9kZUxpc3QmPihqc05v
ZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7Ci0gICAgaWYgKGpzTm9kZUxpc3QtPmltcGwo
KS5pc0VtcHR5Tm9kZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFx
dWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8RW1wdHlOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmltcGwo
KSkub3duZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzTGl2ZU5v
ZGVMaXN0KCkpCisgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290
KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPndyYXBwZWQoKSkub3duZXJO
b2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzQ2hpbGROb2RlTGlzdCgp
KQorICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNf
Y2FzdDxDaGlsZE5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+d3JhcHBlZCgpKS5vd25lck5vZGUoKSkp
OworICAgIGlmIChqc05vZGVMaXN0LT53cmFwcGVkKCkuaXNFbXB0eU5vZGVMaXN0KCkpCisgICAg
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PEVt
cHR5Tm9kZUxpc3QmPihqc05vZGVMaXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVPclN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVP
clN0cmluZy5jcHAKaW5kZXggMzQzNjFhZjQ5NmE4ZGM5N2VjN2IzNDZhNWMwNDNkOTZmY2RiYjk1
Zi4uNDQ3YzVkNzAwZDU2NTFlYWRmMTQwNGJkM2E3YjFmNDg2MTEzMzI2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBWZWN0b3I8Tm9kZU9yU3RyaW5nPiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUmIHN0
YXRlKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7CiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKTsKICAgICAg
ICAgaWYgKGF1dG8qIG5vZGUgPSBqc0R5bmFtaWNDYXN0PEpTTm9kZSo+KHZhbHVlKSkKLSAgICAg
ICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoJm5vZGUtPmltcGwoKSk7CisgICAgICAgICAg
ICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCZub2RlLT53cmFwcGVkKCkpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUp
OwogICAgICAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAppbmRleCA5
OGM4ODE0OWYzOWUyYjBjYmE4MWQzNTJlNWI5YmRiMjkwNWNiMjk3Li4zYWRmODAyMjVjNDNiZmIz
ZGRiNTY3YjE2OTVjYWU3ZDAyNmJlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIE9zY2lsbGF0b3JOb2RlJiBpbXAg
PSBpbXBsKCk7CisgICAgT3NjaWxsYXRvck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVO
QUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcAppbmRl
eCA4NmMwM2VkM2ZiODkyNTlhY2Y5OGNlMzMyYTY5MjQyODdlZTNiMDFkLi42NzkwZjg0YTdjZWU5
ZjE2NjEyNmNmNjQxNDUwYzFiNDM0Njg0MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUGFubmVyTm9kZSYgaW1wID0gaW1w
bCgpOworICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShMRUdB
Q1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CkBAIC02Myw3ICs2Myw3
IEBAIHZvaWQgSlNQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIAogdm9pZCBKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBQYW5uZXJOb2RlJiBpbXAgPSBp
bXBsKCk7CisgICAgUGFubmVyTm9kZSYgaW1wID0gd3JhcHBlZCgpOwogCiAjaWYgRU5BQkxFKExF
R0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
CmluZGV4IGM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRjODRkYTkwY2EuLjgzMGMzMDU1
ODg0MWMwMjIyYmRmMmQ4ODEzZWRkN2IyMTc5MDVkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5W
aWV3QmFzZShIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRQogCiBzdGF0aWMgSlNPYmplY3QqIHBs
dWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxF
bGVtZW50KQogewotICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+aW1w
bCgpOworICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+d3JhcHBlZCgp
OwogICAgIGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNj
cmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxFbGVtZQog
CiBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MRWxl
bWVudCoganNIVE1MRWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRN
TEVsZW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1l
bnQtPndyYXBwZWQoKTsKICAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50KSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBDYWxsVHlwZSBw
bHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgQ2FsbERhdGEm
IGNhbGxEYXRhKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogICAgIH0KICAgICAKLSAg
ICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT5pbXBsKCkpOwor
ICAgIEluc3RhbmNlKiBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGVsZW1lbnQtPndyYXBwZWQo
KSk7CiAgICAgaWYgKCFpbnN0YW5jZSB8fCAhaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVmYXVs
dE1ldGhvZCgpKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVOb25lOwogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxQbHVnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA1Zjg2OWE5MTJlMDY2ZTQ5
YjUyZWU4YTBmMTRiZjY0NzVkYTJhOGE4Li45NWEwZmI3ODI1Y2IzMDZiMDQ4YmM3ODNjZmYxYzZi
OWExMTdiMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0
YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9w
U3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgSlNWYWx1ZSBKU1BvcFN0YXRl
RXZlbnQ6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gaW1wbCgpOwor
ICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogCiAgICAgaWYgKCFldmVudC5z
dGF0ZSgpLmhhc05vVmFsdWUoKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBh
IFBvcFN0YXRlRXZlbnQgZG9lcyBub3QgbGVhayBvYmplY3RzIGluIGl0cyBzdGF0ZSBwcm9wZXJ0
eSBhY3Jvc3MgaXNvbGF0ZWQgRE9NIHdvcmxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCmluZGV4IDllZjVlOTNl
ZDFjZTVhZmFiYmQ5YWRjYjBkY2I2YTM4YjRmNGFkMTEuLjQwZTViOTBjYzI3ZThjNGUxMzMwMDJi
NjJkOGExMThhMDE3NDU3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNSVENTdGF0c1Jlc3BvbnNlOjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUp
CiB7Ci0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICgh
aXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRleCBi
MzM2NGQyNjQ1MTQ1MjZiNTdiZmVlMGVkMThkZjVkNmQwNDBjODI0Li4zZWFlZjI2MTI1YmZhYjhm
N2Q1MmE1MjEzNjAyZGYwZjMxZmUyOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTQ3LDE3
ICs0NywxNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUm
IHN0YXRlKQogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBUWVBFX01JU01BVENIX0VS
Uik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBpZiAoaW5kZXgg
PCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSBpbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAoaW5k
ZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSB3cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5ERVhfU0laRV9FUlIpOwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKIAotICAgIHVuc2lnbmVkIG51bUNvbHVtbnMgPSBpbXBs
KCkuY29sdW1uTmFtZXMoKS5zaXplKCk7CisgICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IHdyYXBw
ZWQoKS5jb2x1bW5OYW1lcygpLnNpemUoKTsKICAgICB1bnNpZ25lZCB2YWx1ZXNJbmRleCA9IGlu
ZGV4ICogbnVtQ29sdW1uczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29sdW1u
czsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IGltcGwoKS52YWx1ZXMo
KVt2YWx1ZXNJbmRleCArIGldOworICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSB3cmFw
cGVkKCkudmFsdWVzKClbdmFsdWVzSW5kZXggKyBpXTsKICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVl
OwogCiAgICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CkBAIC03NCw3ICs3NCw3IEBAIEpT
VmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBp
bXBsKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7
CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCB3cmFwcGVkKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAK
aW5kZXggOTVhOGRmY2U4NWEzMjZiYjMxNWIwZGYyYmVmMWU4NDQwYmExNTFmZi4uNzQyMTI1NmIw
NDZhOGQ3MjY4ZTIzNjdkYzJlMTNjZmFhYzIyNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTEwOSw3ICsx
MDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuZXhl
Y3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHdyYXBwZWQoKS5leGVjdXRlU1FMKHNxbFN0
YXRlbWVudCwgc3FsVmFsdWVzLCBjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVs
ZWFzZSgpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NW
R0xlbmd0aEN1c3RvbS5jcHAKaW5kZXggYjZmMGNmODM2MTVmNzFlNjU1ODhjZTNkZTNmY2JiYWRk
MTViNmVkZS4uNjRlMTEyODQ2Zjg3ZTI2YmE0NWY0MDMxMzA2ODNjODRiMGJhYTdlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcApAQCAt
MzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6
OnZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgU1ZHTGVuZ3RoJiBwb2RJbXAg
PSBpbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICBTVkdMZW5ndGgmIHBvZEltcCA9IHdy
YXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVsZW1lbnQo
KSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5jb250ZXh0
RWxlbWVudCgpKTsKICAgICBmbG9hdCB2YWx1ZSA9IHBvZEltcC52YWx1ZShsZW5ndGhDb250ZXh0
LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVj
KTsKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6dmFsdWUoRXhlY1N0YXRl
JiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoaW1wbCgpLmlzUmVhZE9ubHkoKSkgewor
ICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC01NywyNyArNTcsMjcgQEAgdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAg
U1ZHTGVuZ3RoJiBwb2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4
dChpbXBsKCkuY29udGV4dEVsZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhD
b250ZXh0KHdyYXBwZWQoKS5jb250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuc2V0VmFsdWUo
dmFsdWUudG9GbG9hdCgmc3RhdGUpLCBsZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGltcGwoKS5jb21taXRDaGFuZ2UoKTsKKyAgICB3cmFwcGVkKCkuY29tbWl0
Q2hhbmdlKCk7CiB9CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVu
aXRzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGltcGwoKS5pc1JlYWRPbmx5KCkpIHsK
KyAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBTVkdMZW5ndGgmIHBvZEltcCA9IGltcGwoKS5w
cm9wZXJ0eVJlZmVyZW5jZSgpOworICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnBy
b3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKQEAgLTg3LDE0ICs4NywxNCBAQCBKU1Zh
bHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3RhdGUmIHN0YXRl
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVs
ZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5j
b250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5p
dFR5cGUsIGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICB9CiAKLSAgICBpbXBsKCkuY29tbWl0Q2hhbmdlKCk7CisgICAgd3JhcHBlZCgpLmNvbW1pdENo
YW5nZSgpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA1ODVkNzI0N2I2MWJhMDkw
ZDQxZDA4NjE2ZTUyZjI1MTBlM2Y0ZDNmLi5iODQyMzRiMTdlNWIxYjQ2NTEwYjBlZTVjZTIyNTlj
MjEwOWFhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1
c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgYm9vbCBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcg
aXRlbSA9IGltcGwoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSks
IGVjKTsKKyAgICBTdHJpbmcgaXRlbSA9IHdyYXBwZWQoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OwogCiAgICAgaWYgKGl0ZW0uaXNOdWxsKCkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSlNTdG9y
YWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgdGhpc09iamVjdC0+aW1wbCgpLnJlbW92ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgZWMpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5yZW1vdmVJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsMTIgKzgzLDEyIEBAIHZv
aWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aChlYyk7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aChlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkua2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5r
ZXkoaSwgZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOCw3
ICsxMTgsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnNldEl0ZW0ocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICB3cmFwcGVk
KCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1
ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20u
Y3BwCmluZGV4IDBhNjlhMmU2ZmQyM2MyOTgzZjc5OGY0ZDA1ZjI2MTcxNzFhZjYzNDAuLmNiOTM5
N2VmN2QzMWQ5NmUwNjVjMDJmNGY0OTA3YzYxNGMzZTgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9v
dCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAKaW5kZXggZDFjNjA2NWE5NzU4MGYyOTdlNmVjMjQ3YmZmZjgxNzRiODk5NTZjMS4u
YzQyMjJhOWUzNGFmMjY1NTU4YmVlZWU3ZTg1MTJjMzU2MjExNWY0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKICAgICBpZiAocHJvcGVydHlO
YW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGl0ZW0g
PSBpbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIGF1dG8qIGl0ZW0gPSB3cmFwcGVkKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0
b0N1c3RvbS5jcHAKaW5kZXggZjViYTRkMzAyOWNkNjg4ZjkzNWVmZTMwYjc5ZDc5YmUyMjM0N2Yy
OS4uYTUwZjgzOTliYTU4NjRkMDFhYjEzMGM4ZmNkNTFkZTRlYmRlZTZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAt
MTUyLDcgKzE1Miw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBp
ZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKLSAgICAgICAgaW1wbCgp
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2Vu
Y3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
S2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CiAgICAgICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQpAQCAtMjA1LDcgKzIwNSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlw
dG86OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRGVjcnlw
dCkpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2Fn
ZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZGVjcnlwdCci
KSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjU3LDcgKzI1Nyw3IEBA
IEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENy
eXB0b0tleVVzYWdlU2lnbikpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxp
dGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOworICAgICAgICB3cmFw
cGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVk
ZSAnc2lnbiciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JU
RURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMzA5LDcg
KzMwOSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRl
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAogICAgIGlmICgha2V5
LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVu
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnknIikp
OworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdl
cyBkbyBub3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CkBAIC02NDYsNyArNjQ2LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3JhcEtl
eShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKIAogICAgIGlmICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBLZXkp
KSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2Vz
IGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikp
OwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBK
U1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBpbmdL
ZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKLSAgICAgICAgaW1wbCgpLmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3Vud3Jh
cEtleSciKSk7CisgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJL
ZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOwogICAgICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA1N2Y4OGI5NTVjZjU4NTE4OGMyYTZiZWU0ZGY3
NzRmNGYyOTUxYmVmLi5kZWI0NDBiM2FiZWFiN2I4ZmU0MjIwYjdiYWFkMTAyMjBhNDk3YjhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0
b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgSlNUZXh0
VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBK
U1RleHRUcmFja0N1ZSoganNUZXh0VHJhY2tDdWUgPSBqc0Nhc3Q8SlNUZXh0VHJhY2tDdWUqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGV4dFRyYWNrQ3VlJiB0ZXh0VHJhY2tDdWUg
PSBqc1RleHRUcmFja0N1ZS0+aW1wbCgpOworICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3Vl
ID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAogICAgIC8vIElmIHRoZSBjdWUgaXMgZmly
aW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKICAg
ICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBs
aXN0ZW5lcnMuCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUqIGN1ZSkKIAogdm9pZCBK
U1RleHRUcmFja0N1ZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gaW1wbCgpLnRyYWNrKCkpCisg
ICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCkpCiAgICAgICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRleHRUcmFjaykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggZWIxOWYy
NTc4NzE5OWYxZTcwZTk5YWY3YWQyZmIwNDI3Y2U5Zjc1ZC4uN2ZjZTZhZDJhZTVkNGYxZTFiMzEy
MDc4OTU1ZWEwZjY4NDBhY2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkp
KTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIHZv
aWQgSlNUZXh0VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBKU1RleHRUcmFjazo6c2V0S2luZChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZz
dGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCku
c2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6OnNl
dExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3Ry
aW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFuZ3Vh
Z2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAK
aW5kZXggZTFiOGM2MzA5OTI2MWQxZjJiOWY1ZTdhNGZmNWRiNjUyYTkwYTg1NC4uM2Y0NmY0MzMx
YmJiZTY2ODEyNzcxMTRmYjNiNDJmMjRiZmU5Y2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1RleHRUcmFja0xpc3Q6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3Rv
bS5jcHAKaW5kZXggOTc1MTQ2NzI0ZGIwMjY5MDU0NDQ1ODlhZGQ5MmY0MWJiNDUzMDhjNS4uOWE5
NDM2YWY4MDlhY2ZhYjZkYzUwOTg4NjhjNmU1OTZmODBkZjhmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCBUcmFj
a0Jhc2UqIHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNUZXh0VHJhY2s6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTVGV4dFRyYWNrKj4ob2JqZWN0KS0+aW1w
bCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU1RleHRUcmFjayo+KG9iamVjdCktPndyYXBw
ZWQoKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0F1ZGlvVHJhY2s6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiAmanNDYXN0PEpTQXVkaW9UcmFjayo+KG9iamVjdCktPmltcGwoKTsKKyAg
ICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwog
ICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTVmlkZW9UcmFjazo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuICZqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICBy
ZXR1cm4gJmpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihvYmplY3QpLT53cmFwcGVkKCk7CiAKICAgICBy
ZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJh
Y2tFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZl
bnRDdXN0b20uY3BwCmluZGV4IGY1MWQzYjk2M2M4MTgwM2NmZTcxYjk0N2I0MmM5ZGJkMDJiYjg1
YmUuLmVhYjZmZjIxMzhjNTNkN2UzZmViNjQ0OWIwNmQ3MWIzZGYyZTVjMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNUcmFja0V2ZW50Ojp0
cmFjayhFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFRyYWNrQmFzZSogdHJhY2sgPSBp
bXBsKCkudHJhY2soKTsKKyAgICBUcmFja0Jhc2UqIHRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCk7
CiAgICAgaWYgKCF0cmFjaykKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAppbmRleCBjMWU2
ODFkNDk3YjQ0YzBiNDhlMzdhN2ZlYTA4MWIxMmQwZmMzNWQ3Li4yYmUwOGE5OTFmN2RkMTRlZjlh
MmE2MmQxOGYzMWQ5Y2YxNzE1M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlND
OjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0g
aW1wbCgpLmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB3cmFwcGVkKCku
ZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcAppbmRleCA4ZmM2ZWY4ZmIzMGQyMGIz
OWJkMDk4ZTJmMTkzMDU5MmZmNDI4YWZiLi5hZGY0OTM2NDczYjQyM2RjMTJkZWM3YWQ4MGRiZjcy
MGFiM2VhOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
aWYgKFVzZXJNZXNzYWdlSGFuZGxlciogaGFuZGxlciA9IGltcGwoKS5oYW5kbGVyKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIGdsb2JhbE9iamVjdCgpLT53b3JsZCgp
KSkgeworICAgIGlmIChVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSB3cmFwcGVkKCkuaGFu
ZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxPYmpl
Y3QoKS0+d29ybGQoKSkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGFuZGxl
cikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA2ZjBhZjVhZjVhOGVhMWUx
ZWE3ZTVmZTE5MWUwYzgwN2MyMDQxZTkwLi5kODI4ZTEyZmEwYzYyZTA4M2IwMzZiOWM3NDNmMDQw
ZTRjNjdmOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogdm9pZCBKU1Zp
ZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUp
LT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGltcGwoKS5zZXRLaW5kKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldEtp
bmQoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odmFsdWUpOwpAQCAtNTksNyArNTksNyBAQCB2b2lkIEpTVmlkZW9UcmFjazo6c2V0TGFu
Z3VhZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcg
PSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRMYW5ndWFnZShz
dHJpbmcpOworICAgIHdyYXBwZWQoKS5zZXRMYW5ndWFnZShzdHJpbmcpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCmlu
ZGV4IDY2ZDdiZWEzZTAwZTBkZTNhZjAxODE1ZGE2YjkyMWRlZGRiYzEzMTQuLmEyYTM2MTg0YTRl
ZWQ0OTU1Mjk1YTFlNTg3N2I5ZGU0MDFlNjYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkuZWxlbWVudCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3Qod3JhcHBlZCgpLmVsZW1lbnQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA5OWZmNzAzYzQ2NDlhNjMwNGU2
ODhiZmRhMDFlNmY4YjEwZmNmNDZiLi43YzRlYzA4MTg3ODFjODcyMWVjZmJkNzU1MGZkNjE2ODFi
ZjJhMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3Rh
dGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFdlYkcKIAogdm9pZCBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZp
c2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJndy
YXBwZWQoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRl
cm5hbGZvcm1hdFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC05OSw3ICs5OSw3IEBAIEpT
VmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDIpCiAgICAgICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRl
eHQgPSBpbXBsKCk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCA9IHdyYXBw
ZWQoKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
SW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4IDRl
NGU1Y2E5OGZjMTQ5MDJhMmNjMDAwYjZhYjA2Mzg5MGEyMWIxNjUuLjgzMWNmNTkxZWQ3ZDA4ZTlh
MDhlMTY0MmE5NWEzMWM0NjYxZmRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNw
cApAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRlcihK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRlJiBzCiAgICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+aW1wbCgpOworICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPndyYXBwZWQoKTsKICAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZz
dGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbgog
CiB2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZp
bXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVj
U3RhdGUmIHN0YXRlKQpAQCAtMjczLDcgKzI3Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJH
TFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTI5Niw3ICsy
OTYsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5zaW9u
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCi0gICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpAQCAtMzE1LDcgKzMxNSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlCiAgICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2lnbmVk
IHRhcmdldCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsKICAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpAQCAtMzM5LDcgKzMzOSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTM1Nyw3ICsz
NTcsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBh
cmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dl
YkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwpAQCAtMzgzLDcg
KzM4Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
YXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5p
bmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRlcjo6
dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKQEAgLTQwMCw3ICs0MDAsNyBA
QCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmIChjb250ZXh0LmlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIFZlY3RvcjxTdHJpbmc+
IHZhbHVlID0gY29udGV4dC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CkBAIC00MjEsNyArNDIx
LDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQg
PSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06
OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFt
ICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTY5MSw3NyArNjkxLDc3IEBA
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJp
eFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0xZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJl
dHVybiBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTF2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0xdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpT
Qzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTF2
LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0xdiwg
c3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTJ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4g
ZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0ydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTJ2LCBz
dGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0ydiwgc3Rh
dGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0zZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25mKGZfdW5pZm9ybTN2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0
YUZ1bmN0aW9uZihmX3VuaWZvcm0zdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTN2LCBzdGF0
ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRh
RnVuY3Rpb25mKGZfdW5pZm9ybTR2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1
bmN0aW9uZihmX3VuaWZvcm00diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTR2LCBzdGF0ZSwg
aW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm00diwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgyZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4MmZ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJmdiwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgzZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4M2Z2LCBzdGF0ZSwgaW1wbCgpKTsKKyAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNmdiwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXg0ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4NGZ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDRmdiwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZlcnRleEF0dHJpYjFmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRh
dGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJu
IGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAK
IEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjJm
dihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92
ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYo
Zl92ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIzdiwg
c3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIz
diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjRmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIGltcGwoKSk7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIHdyYXBw
ZWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cAppbmRleCBiNmQzOWFjMDcwZjU5NzczNzg5ODkxMjk5ZGRlMDAyMzU3MjU4MGQyLi5lZGU1YmI5
N2E4NjhhNDIxZjM1NzlmNDg3Zjc1OTlkYzg3NGU1ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZpbXBsKCkpOworICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmluZGV4
IDA1YTllNzAyZTdjODE5YmY3Yjc1MWQ5YmU3N2MxMTJiZTM1OTRmYjMuLjBlZmJkMTJmMDMzNDk2
ZWMzY2UyY2QwNmYxOTE3YjZmMWZkM2ViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZpbXBsKCkp
OworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJndyYXBwZWQoKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRl
KiBleGVjKQpAQCAtNTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgLy8gU2VlIHNlY3Rpb24gNC44LjIgc3RlcCAxNCBv
ZiBXZWJXb3JrZXJzIGZvciB3aHkgdGhpcyBpcyB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gCi0g
ICAgRE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPmltcGwoKTsKKyAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFzSlNET01XaW5kb3co
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d3JhcHBlZCgpOwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgQVNTRVJUKHdpbmRvdy5kb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApp
bmRleCBhY2Q2MTdlODY5ODkyOTA3NTM3NmU1ODMyYWIyODNmMmQyZmE3OTAwLi41OGRhNzVlOGU3
MzI5NDk1OWRlMWJhNjM3NjczYjNjNzg4NTJmOGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAKIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKICAgICA6IEpTRE9N
R2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKQotICAgICwgbV9pbXBsKGltcGwpCisgICAgLCBtX3dyYXBwZWQoaW1w
bCkKIHsKIH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAg
IHJldHVybiBtX2ltcGwuZ2V0KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0KIAog
Ym9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0ds
b2JhbE9iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAppbmRleCAwMzE1MzBl
ZTU4NjEzOWZjNWFiNmY4Yjg4NTE0YjU4NDgxMWM3MmRlLi4yZGU4Y2M0ZmEwNjhlZDM0NDIwNmYx
MDA4YjRjYTZhN2U2Yjc2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAotICAgICAgICBXb3JrZXJHbG9i
YWxTY29wZSYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFwcGVkOyB9CiAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dDsKIAogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX2ltcGw7CisgICAgICAgIFJlZlB0cjxXb3JrZXJH
bG9iYWxTY29wZT4gbV93cmFwcGVkOwogICAgIH07CiAKICAgICAvLyBSZXR1cm5zIGEgSlNXb3Jr
ZXJHbG9iYWxTY29wZSBvciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCAxMjg5OGNjOTc1
YmVmNTAwYjNiMTBkYmFmMWY2NTBhODZkYzNjMzAyLi5hOTQ1NzczMmQyMjhjZmE5YWNhODAzNTVm
ZTNmNDJkN2RmYTE1OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtNTMsOSArNTMsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFdvcmtlckxvY2F0
aW9uKiBsb2NhdGlvbiA9IGltcGwoKS5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYgKFdvcmtl
ckxvY2F0aW9uKiBsb2NhdGlvbiA9IHdyYXBwZWQoKS5vcHRpb25hbExvY2F0aW9uKCkpCiAgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChsb2NhdGlvbik7Ci0gICAgaWYgKFdvcmtlck5hdmln
YXRvciogbmF2aWdhdG9yID0gaW1wbCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkpCisgICAgaWYgKFdv
cmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gd3JhcHBlZCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkp
CiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChuYXZpZ2F0b3IpOwogfQogCkBAIC04MCwz
MSArODAsMzEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAg
aW1wbCgpLmltcG9ydFNjcmlwdHModXJscywgZWMpOworICAgIHdyYXBwZWQoKS5pbXBvcnRTY3Jp
cHRzKHVybHMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0
VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVs
ZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFs
T2JqZWN0KCktPndvcmxkKCksIGltcGwoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9u
OjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmICghYWN0aW9uKQogICAgICAgICByZXR1
cm4ganNOdW1iZXIoMCk7CiAgICAgaW50IGRlbGF5ID0gc3RhdGUuYXJndW1lbnQoMSkudG9JbnQz
Migmc3RhdGUpOwotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuc2V0VGltZW91dChXVEY6Om1v
dmUoYWN0aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNldFRp
bWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJH
bG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0
ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBpbXBsKCkuY29udGVudFNlY3VyaXR5
UG9saWN5KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9
IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCks
IHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIWFjdGlv
bikKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogICAgIGludCBkZWxheSA9IHN0YXRlLmFy
Z3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLnNl
dEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOworICAgIHJldHVybiBqc051bWJl
cih3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggOTE1YjA2Mjg3NDBlNzdlYTBk
YTcwYTdmYmJlY2RiNzE4MGNiYTZiZC4uODliM2JjZmJiMmM2NGIyZTNiOGVmMWJmOGY2Mzc5NmQ2
YjhiMjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTU4LDE2ICs1OCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxv
YWQgPSBpbXBsKCkub3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxv
YWQqIHVwbG9hZCA9IHdyYXBwZWQoKS5vcHRpb25hbFVwbG9hZCgpKQogICAgICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QodXBsb2FkKTsKIAotICAgIGlmIChEb2N1bWVudCogcmVzcG9uc2VEb2N1
bWVudCA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50KiBy
ZXNwb25zZURvY3VtZW50ID0gd3JhcHBlZCgpLm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlRG9jdW1lbnQpOwogCi0gICAgaWYgKEFy
cmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gaW1wbCgpLm9wdGlvbmFsUmVzcG9uc2VB
cnJheUJ1ZmZlcigpKQorICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9
IHdyYXBwZWQoKS5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKICAgICAgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCi0gICAgaWYgKEJsb2IqIHJl
c3BvbnNlQmxvYiA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlQmxvYigpKQorICAgIGlmIChCbG9i
KiByZXNwb25zZUJsb2IgPSB3cmFwcGVkKCkub3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiB9CiAKQEAgLTc3LDcgKzc3
LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKLSAgICBjb25zdCBVUkwmIHVybCA9IGltcGwoKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbXBsZXRlVVJMKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgIGNvbnN0IFVSTCYgdXJsID0gd3JhcHBlZCgp
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgU3RyaW5nIG1l
dGhvZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg4LDEzICs4OCwxMyBA
QCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAg
ICAgICAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAg
ICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soJnN0
YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCg0KSk7Ci0gICAgICAgICAgICAgICAgaW1wbCgp
Lm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgZWMpOworICAgICAgICAg
ICAgICAgIHdyYXBwZWQoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dvcmQs
IGVjKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGltcGwoKS5vcGVuKG1l
dGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIHdyYXBwZWQoKS5v
cGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAgICAg
d3JhcHBlZCgpLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYyk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5vcGVu
KG1ldGhvZCwgdXJsLCBlYyk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMzgsMzAgKzEzOCwzMCBAQCBwcml2YXRlOgog
CiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoaW1wbCgp
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLnVybCgpKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qod3JhcHBlZCgpLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgd3JhcHBlZCgpLnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIEpTVmFsdWUgdmFsID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYgKHZh
bC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBpbXBsKCkuc2VuZChlYyk7CisgICAgICAg
IHdyYXBwZWQoKS5zZW5kKGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNEb2N1bWVu
dDo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVkKHZh
bCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVkKHZh
bCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQotICAg
ICAgICBpbXBsKCkuc2VuZChKU0Jsb2I6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAgIHdy
YXBwZWQoKS5zZW5kKEpTQmxvYjo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2
YWwuaW5oZXJpdHMoSlNET01Gb3JtRGF0YTo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQo
SlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNl
bmQoSlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwu
aW5oZXJpdHMoSlNBcnJheUJ1ZmZlcjo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQodG9B
cnJheUJ1ZmZlcih2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHRvQXJyYXlCdWZm
ZXIodmFsKSwgZWMpOwogICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0FycmF5QnVmZmVyVmll
dzo6aW5mbygpKSkgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB2aWV3ID0gdG9B
cnJheUJ1ZmZlclZpZXcodmFsKTsKLSAgICAgICAgaW1wbCgpLnNlbmQodmlldy5nZXQoKSwgZWMp
OworICAgICAgICB3cmFwcGVkKCkuc2VuZCh2aWV3LmdldCgpLCBlYyk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGltcGwoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpLCBl
Yyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpLCBlYyk7CiAKICAgICBTZW5kRnVuY3RvciBmdW5jdG9yOwogICAgIHN0YXRlLml0ZXJh
dGUoZnVuY3Rvcik7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5kTGluZUFuZENvbHVtbk51bWJlcihm
dW5jdG9yLmxpbmUoKSwgZnVuY3Rvci5jb2x1bW4oKSk7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5k
VVJMKGZ1bmN0b3IudXJsKCkpOworICAgIHdyYXBwZWQoKS5zZXRMYXN0U2VuZExpbmVBbmRDb2x1
bW5OdW1iZXIoZnVuY3Rvci5saW5lKCksIGZ1bmN0b3IuY29sdW1uKCkpOworICAgIHdyYXBwZWQo
KS5zZXRMYXN0U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNjksNyArMTY5LDcg
QEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1Zh
bHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyB0ZXh0ID0gaW1wbCgp
LnJlc3BvbnNlVGV4dChlYyk7CisgICAgU3RyaW5nIHRleHQgPSB3cmFwcGVkKCkucmVzcG9uc2VU
ZXh0KGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE4MCwyNSArMTgwLDI1IEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0CiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSBDYWNoZWRBdHRyaWJ1dGUgZm9yIG90aGVy
IHR5cGVzIHRoYW4gSlNPTiBhcyB3ZWxsLgotICAgIGlmIChtX3Jlc3BvbnNlICYmIGltcGwoKS5y
ZXNwb25zZUNhY2hlSXNWYWxpZCgpKQorICAgIGlmIChtX3Jlc3BvbnNlICYmIHdyYXBwZWQoKS5y
ZXNwb25zZUNhY2hlSXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9yZXNwb25zZS5nZXQoKTsK
IAotICAgIGlmICghaW1wbCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgaW1wbCgpLnJlc3BvbnNl
VHlwZUNvZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQorICAgIGlmICgh
d3JhcHBlZCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgd3JhcHBlZCgpLnJlc3BvbnNlVHlwZUNv
ZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQogICAgICAgICByZXR1cm4g
anNOdWxsKCk7CiAKLSAgICBzd2l0Y2ggKGltcGwoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKKyAg
ICBzd2l0Y2ggKHdyYXBwZWQoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKICAgICBjYXNlIFhNTEh0
dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEZWZhdWx0OgogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6
OlJlc3BvbnNlVHlwZVRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUpOwog
CiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlSlNPTjoKICAgICAgICAgewot
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIGltcGwoKS5yZXNw
b25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBKU09OUGFyc2UoJnN0YXRlLCB3cmFwcGVkKCkucmVzcG9uc2VUZXh0SWdub3JpbmdSZXNw
b25zZVR5cGUoKSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIHZh
bHVlID0ganNOdWxsKCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldChzdGF0ZS52bSgpLCB0
aGlzLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGltcGwoKS5kaWRDYWNoZVJlc3BvbnNlSlNPTigp
OworICAgICAgICAgICAgd3JhcHBlZCgpLmRpZENhY2hlUmVzcG9uc2VKU09OKCk7CiAKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQpAQCAtMjA2LDcgKzIwNiw3IEBAIEpTVmFs
dWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEb2N1bWVudDoKICAgICAgICAgewog
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBpbXBsKCkucmVzcG9uc2VYTUwoZWMpOworICAgICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gd3JhcHBlZCgpLnJlc3BvbnNlWE1MKGVjKTsKICAgICAgICAgICAgIGlmIChl
YykgewogICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBAIEpT
VmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
ICAgICAgICAgfQogCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlQmxvYjoK
LSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLnJlc3Bv
bnNlQmxvYigpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwg
d3JhcHBlZCgpLnJlc3BvbnNlQmxvYigpKTsKIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJl
c3BvbnNlVHlwZUFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpLCBpbXBsKCkucmVzcG9uc2VBcnJheUJ1ZmZlcigpKTsKKyAgICAgICAgcmV0dXJu
IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3BvbnNlQXJyYXlCdWZm
ZXIoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCmluZGV4IDI0MTZk
Njc5MDgxMzkxM2YxM2VjMGE1MTljNWYxMDg2YzI2MzU4NTYuLjVkMzQ4NmU4NTljNjQyNTY2Nzdj
ZDg3YmNhYmZjN2I2YTE2MDM0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8mIHZhbHVlID0gaW1wbCgpLnZh
bHVlKCk7CisgICAgYXV0byYgdmFsdWUgPSB3cmFwcGVkKCkudmFsdWUoKTsKICAgICBpZiAodmFs
dWUuaXNOb2RlU2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogdmFsdWUudG9Ob2Rl
U2V0KCkpCiAgICAgICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlLmdldCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29y
Q3VzdG9tLmNwcAppbmRleCAzMzFiOWYxYjBiYmY1NzlhYzQ1MmQwN2VkYzFiOWY2NThmY2Y2MTVm
Li4xNTJiODczNzAwYjlhMGRjNDY4Y2MwM2ZiMDllMWE0MzI0ZGM3NjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihFeGVj
U3RhdGUmIHN0YXRlKQogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBs
b2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyB2YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDIpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnNldFBhcmFt
ZXRlcihuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOworICAgIHdyYXBwZWQoKS5zZXRQ
YXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nv
cjo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpOwotICAgIFN0cmluZyB2YWx1ZSA9IGltcGwoKS5nZXRQYXJhbWV0ZXIobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUpOworICAgIFN0cmluZyB2YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJhbWV0
ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZp
bmVkKCZzdGF0ZSwgdmFsdWUpOwogfQogCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNYU0xU
UHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgU3Ry
aW5nIGxvY2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSk7CisgICAgd3JhcHBlZCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDA1OGM5MWM5
MjQ0YTVjODBhZTllOGYwZmI2NGFlMGE4NDZhM2Q1ZDMuLmZlYmQyOTAwZTYyNWU3Y2UzNmZjNzI5
MzM3YTQ5MmI4Mzk2ZDVkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLmZyYW1l
KCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKEFi
b3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAwNDMw
YmE3ZmQ1M2NhYzJjNTQyZTg2MzIwNGRhYmFjNWZhMGJhZjE1Li4xY2NjZjhhZjIxMDBmMDdmNTA1
ZmU2N2JmYzAwYjU5NDQ4OTk0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBT
Y3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogICAgICAgICAgICAg
d2luZG93U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ctPnZtKCksIHdpbmRvdyk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBmcmFtZS5kb2N1bWVudCgp
LT5kb21XaW5kb3coKTsKLSAgICAgICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5p
bXBsKCkgPT0gZG9tV2luZG93KQorICAgICAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2luZG93
KCktPndyYXBwZWQoKSA9PSBkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZG9tV2luZG93KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjE2MWU2
NmY4ZDkyYzgwYzRmYzhiMmI3MjZiYzI0ODY1N2RkNTJkOS4uNjI5YzQyMTNhZThmYTFiNmU5ZDI2
ZGUwMDNmZjRlMTBiNjZlOWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmNsZWFyV2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29p
bmdJbnRvUAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93U2hlbGxzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gd2luZG93U2hl
bGxzW2ldLmdldCgpOwogCi0gICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5pbXBs
KCkgPT0gbmV3RE9NV2luZG93KQorICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3coKS0+
d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50IHdp
bmRvdyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KQEAgLTM5MSw3ICszOTEsNyBAQCB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6
OnBhaXI8SlNDOjpFeGVjU3RhdGUqLAogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBtX3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgp
OyArK2l0ZXIpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBpdGVyLT52YWx1ZS0+
d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9
IGl0ZXItPnZhbHVlLT53aW5kb3coKS0+aW1wbCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCk7CisgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBpdGVyLT52YWx1ZS0+d2luZG93
KCktPndyYXBwZWQoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICByZXN1
bHQuYXBwZW5kKHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4oZXhl
Yywgb3JpZ2luKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwCmluZGV4IGFlM2M3Mjk3NmZmOTcwYWFlMmNkMzUxOWFiODYxYTA1OGI5NGJjZGUu
LjI2Y2FiM2M0YTI3MWRjYWI3MGEzNzZhMDA5MDJmYWFkMzQ4MDRiODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9NV2lu
ZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkK
ICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0cyhKU0RP
TVdpbmRvd0Jhc2U6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+aW1wbCgpOwor
ICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+
d3JhcHBlZCgpOwogfQogCiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNjNmNmI1
NTJkMDRiOTU5NGJmMWUzMjk1M2NlNTFkYmZkOTg4Yzk4OC4uNDM1MmViNGUwZWI4YTlkZDM0ODI0
Y2JhMzgzNTk0YmJiZTIyNzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAg
LTU3MSw3ICs1NzEsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRh
cmdldCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFvYmplY3QtPmluaGVyaXRzKEpTTm9kZTo6aW5m
bygpKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFdlYkNvcmU6Ok5vZGUmIG5vZGUgPSBq
c0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+aW1wbCgpOworICAgIFdlYkNvcmU6Ok5vZGUmIG5vZGUg
PSBqc0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIHJldHVybiBraXQoJm5v
ZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0
aWxpdHkubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW0KaW5k
ZXggZmIxN2YwZDNkODZiMTBkYTU4MDhkMTg4Y2VjOTA0YzA5ODYyNzlhMS4uMWMzYzdjZmVlMjUz
ZDA3NThkNTRiMzg0OWNmZjRiM2U1Y2Y3MzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NVXRpbGl0eS5tbQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIGlkIGNy
ZWF0ZURPTVdyYXBwZXIoSlNDOjpKU09iamVjdCogb2JqZWN0KQogewogICAgICNkZWZpbmUgV1JB
UChjbGFzc05hbWUpIFwKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoV2ViQ29yZTo6SlMj
I2NsYXNzTmFtZTo6aW5mbygpKSkgXAotICAgICAgICAgICAgcmV0dXJuIGtpdCgmc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SlMjI2NsYXNzTmFtZSo+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgICAg
ICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJDb3JlOjpKUyMjY2xhc3NOYW1lKj4ob2JqZWN0
KS0+d3JhcHBlZCgpKTsKIAogICAgIFdSQVAoQ1NTUnVsZSkKICAgICBXUkFQKENTU1J1bGVMaXN0
KQpAQCAtMTIxLDEwICsxMjEsMTAgQEAgc3RhdGljIGlubGluZSBpZCBjcmVhdGVET01XcmFwcGVy
KEpTQzo6SlNPYmplY3QqIG9iamVjdCkKICAgICAjdW5kZWYgV1JBUAogCiAgICAgaWYgKG9iamVj
dC0+aW5oZXJpdHMoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbCo+KG9iamVj
dCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpT
RE9NV2luZG93U2hlbGwqPihvYmplY3QpLT53cmFwcGVkKCkpOwogCiAgICAgaWYgKG9iamVjdC0+
aW5oZXJpdHMoV2ViQ29yZTo6SlNET01JbXBsZW1lbnRhdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SlNET01JbXBsZW1lbnRhdGlvbio+KG9i
amVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6
OkpTRE9NSW1wbGVtZW50YXRpb24qPihvYmplY3QpLT53cmFwcGVkKCkpOwogCiAgICAgcmV0dXJu
IG5pbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KaW5kZXggNTdmMzIwMmE4YzJkNjAxNGVlMWUxYWM4ZmNmN2U1YmQwNjJhNzdjOC4uZmI2
ZGYyNWE0YzdiZjQ3OGZhMzMxMTM5NzIxMmM3MWM2ZjA1NzZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTI1Miw3ICsyNTIsNyBA
QCBzdGF0aWMgdm9pZCBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoRXhlY1N0YXRlKiBleGVjKQogICAg
IC8vIEpTRE9NV2luZG93QmFzZSogaXNuJ3QgdGhlIHJpZ2h0IG9iamVjdCB0byByZXByZXNlbnQg
dGhlIGN1cnJlbnRseSBleGVjdXRpbmcKICAgICAvLyBKYXZhU2NyaXB0LiBJbnN0ZWFkLCB3ZSBz
aG91bGQgdXNlIEV4ZWNTdGF0ZSwgbGlrZSB3ZSBkbyBlbHNld2hlcmUuCiAgICAgSlNET01XaW5k
b3dCYXNlKiB0YXJnZXQgPSBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4ocm9vdC0+Z2xvYmFsT2Jq
ZWN0KCkpOwotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCksIHRhcmdldC0+aW1wbCgpKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0LT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB0YXJnZXQtPndyYXBwZWQoKSk7CiB9CiAKIC0g
KEpTR2xvYmFsQ29udGV4dFJlZilfZ2xvYmFsQ29udGV4dFJlZgpAQCAtNTQxLDcgKzU0MSw3IEBA
IHN0YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkg
KmFycmF5LCBSb290T2JqZWN0KiByb290CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMo
SlNIVE1MRWxlbWVudDo6aW5mbygpKSkgewogICAgICAgICAgICAgLy8gUGx1Z2luIGVsZW1lbnRz
IGNhY2hlIHRoZSBpbnN0YW5jZSBpbnRlcm5hbGx5LgotICAgICAgICAgICAgaWYgKE9iamNJbnN0
YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihwbHVnaW5JbnN0YW5j
ZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KG9iamVjdCktPmltcGwoKSkpKQorICAgICAgICAgICAg
aWYgKE9iamNJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihw
bHVnaW5JbnN0YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KG9iamVjdCktPndyYXBwZWQoKSkp
KQogICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CiAgICAgICAg
IH0gZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cyhPYmpDUnVudGltZU9iamVjdDo6aW5mbygpKSkg
ewogICAgICAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNf
Y2FzdDxPYmpDUnVudGltZU9iamVjdCo+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDc1NmI1OWQ1MzEwMDkx
MmJiMGRjMzIxMzAwZTFkNGNkODUxYmVmZTguLmJjNTcxMWQzYWE5NDBjNjE1ZWNiZmQ4NTlmMDc2
NzYxYWMyOWU1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsNyArNDIxLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3du
UHJvcGVydHlTbG90Qm9keQogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+c2ln
bmF0dXJlLT50eXBlIGVxICJET01TdHJpbmciKSB7CiAgICAgICAgICAgICBwdXNoKEBnZXRPd25Q
cm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4KSB7XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAg
aWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+
aW1wbCgpLmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
U2xvdEltcGwsICIgICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgp
IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IG9wdGlvbmFsSW5kZXgudmFsdWUoKTtcbiIpOwogICAgICAgICAjIEFzc3VtZSB0aGF0IGlm
IHRoZXJlJ3MgYSBzZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCkBAIC0xMTg4LDkg
KzExODgsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmIChOZWVkc0ltcGxlbWVudGF0
aW9uQ2xhc3MoJGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKCRoYXNQYXJlbnQpIHsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUmIGltcGwoKSBj
b25zdFxuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbnRlcmZh
Y2VOYW1lJiB3cmFwcGVkKCkgY29uc3RcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSY+KEJhc2U6OmltcGwoKSk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSY+KEJhc2U6OndyYXBwZWQoKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNzU5LDkgKzE3NTksOSBAQCBzdWIgR2V0SW5kZXhlZEdldHRlckV4cHJlc3Npb24KIHsKICAg
ICBteSAkaW5kZXhlZEdldHRlckZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgaWYgKCRpbmRleGVkR2V0
dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICBy
ZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRoaXNPYmplY3QtPmltcGwoKS5pdGVt
KGluZGV4KSkiOworICAgICAgICByZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkiOwogICAgIH0KLSAgICByZXR1cm4gInRv
SlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCku
aXRlbShpbmRleCkpIjsKKyAgICByZXR1cm4gInRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpIjsKIH0KIAogc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KQEAgLTIyMjgsNyArMjIyOCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rp
b24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSB7
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3Ro
KCkpIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAjIEFzc3VtZSB0aGF0IGlmIHRoZXJlJ3MgYSBz
ZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCiAgICAgICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsK
QEAgLTIzMjgsOSArMjMyOCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CiAgICAgICAgICAgICAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7CiAgICAgICAgICAgICAgICAg
ICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEJ5U2V0dGluZyJ9KSAuICJFbmFibGVk
IjsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0
ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMt
PmltcGwoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2V0dGluZ3MuJGVuYWJsZV9mdW5jdGlvbigpKVxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMjM0Myw3ICsyMzQzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0
eSJ9ICYmCiAgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCiAgICAgICAgICAgICAgICAgISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1
cml0eU9uR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0
ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIH0KIApAQCAtMjM2MSw3ICsyMzYxLDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkZXhjZXB0aW9u
Q29kZSA9ICRnZXR0ZXJFeGNlcHRpb25zID8gImVjIiA6ICIwIjsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBiaW5kaW5nTmFtZShcIiRpbnRlcmZhY2VOYW1lLiRuYW1lXCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7XG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJG1lbW9pemVkVHlwZSBtZW1vaXpl
ZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4g
am9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgICRtZW1vaXplZFR5cGUgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwg
QGFyZ3VtZW50cykgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8JG1lbW9pemVk
VHlwZT4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgJGV4Y2Vw
dGlvbkNvZGUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAibWVtb2l6ZWRSZXN1bHQiLCAiY2FzdGVkVGhpcyIp
IC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBz
ZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTtcbiIpIGlmICRnZXR0ZXJFeGNlcHRpb25zOwpAQCAt
MjM4NSw3ICsyMzg1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSkpO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
aGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
SlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIg
LiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKCkpID8gIiAuIE5hdGl2ZVRvSlNWYWx1
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZSgpIiwgImNhc3RlZFRoaXMiKSAuICIgOiBqc051bGwoKSk7XG4iKTsK
ICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudEhhbmRsZXIiKSB7CiAgICAgICAg
ICAgICAgICAgbXkgJGdldHRlciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IldpbmRvd0V2ZW50SGFuZGxlciJ9ID8gIndpbmRvd0V2ZW50SGFuZGxlckF0dHJp
YnV0ZSIKQEAgLTIzOTMsNyArMjM5Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgIDogImV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7CiAgICAgICAgICAg
ICAgICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZSgkYXR0
cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0oc3RhdGUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgkZ2V0dGVyKGNhc3RlZFRoaXMtPmltcGwoKSwgJGV2
ZW50TmFtZSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSgkZ2V0dGVyKGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgJGV2
ZW50TmFtZSkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICBteSAkY29uc3Ry
dWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAg
ICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKQEAgLTI0MjEsOSArMjQyMSw5
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgQGNhbGxX
aXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgIkpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKSIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRzdmdMaXN0UHJvcGVy
dHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpT
VmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPmltcGwoKS4kaW1wbEdldHRlckZ1bmN0
aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0ZWRUaGlz
IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPndyYXBwZWQoKS4kaW1wbEdldHRl
ckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0
ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgZXEg
ImZsb2F0IikgeyAjIFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5h
dGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAi
aW1wbCIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CkBAIC0yNDQ2LDcgKzI0NDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAg
ICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRoQXJncyk7CiAg
ICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2JqID0g
JGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgb2JqLmdldCgpKTtcbiIpOwpAQCAtMjQ3MiwxMCArMjQ3MiwxMCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2Vu
ZXJhdGVDYWxsV2l0aCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWxsV2l0aCJ9LCBcQGltcGxDb250ZW50LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpIikpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVy
dHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhpcy0+d3JhcHBlZCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3Vs
dCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJm
YWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFs
dWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAs
ICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigi
LCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTI1MTcsNyArMjUxNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgZGllIGlmICFDb25zdHJ1Y3RvclNo
b3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhzdGF0ZSwgZG9tT2JqZWN0LT5pbXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+d3JhcHBlZCgpKSlcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAgLTI1NDksOSAr
MjU0OSw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKVxuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVk
KCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3Rh
dGUsIGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShz
dGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47
XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTI2NjEsOSArMjY2MSw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAmJiAhJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0pIHsKICAg
ICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwo
KSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNh
c3RlZFRoaXMtPndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93
QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkpKVxuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSkpXG4i
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgfQpAQCAtMjY3NiwxMyArMjY3Niwx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICMgRklYTUU6
IEZpbmQgYSB3YXkgdG8gZG8gdGhpcyBzcGVjaWFsIGNhc2Ugd2l0aG91dCBoYXJkY29kaW5nIHRo
ZSBjbGFzcyBhbmQgYXR0cmlidXRlIG5hbWVzIGhlcmUuCiAgICAgICAgICAgICAgICAgaWYgKCgo
JGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIG9yICgkaW50ZXJmYWNlTmFtZSBlcSAiV29y
a2VyR2xvYmFsU2NvcGUiKSkgYW5kICRuYW1lIGVxICJvbmVycm9yIikgewogICAgICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0Vycm9ySGFuZGxlci5oIn0gPSAxOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5pbXBsKCkuc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcihz
dGF0ZSwgdmFsdWUsIGNhc3RlZFRoaXMpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcihzdGF0ZSwgdmFsdWUs
IGNhc3RlZFRoaXMpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogICAgICAg
ICAgICAgICAgICAgICBteSAkc2V0dGVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiV2luZG93RXZlbnRIYW5kbGVyIn0gPyAic2V0V2luZG93RXZlbnRIYW5k
bGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICAgICAgOiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb2N1bWVudEV2ZW50SGFuZGxlciJ9ID8gInNl
dERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICAgICAg
OiAic2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHNldHRlcigqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlz
LT5pbXBsKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkc2V0dGVyKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKSwgJGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKQEAgLTI3MDUsMTggKzI3MDUsMTggQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBs
R2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRu
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3
YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0o
KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFJlZlB0cjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghZm9yd2FyZGVkSW1w
bClcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gKmZvcndhcmRlZEltcGw7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBBdHRyaWJ1dGUgaXMgbm90IG51bGxhYmxlLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZXhwZWN0
ZWQgdG8gcmV0dXJuIGEgcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFJlZjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZjwk
e2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLiR7
aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBmb3J3YXJkZWRJbXBsLmdl
dCgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAkYXR0cmlidXRlID0gJGNvZGVHZW5lcmF0b3ItPkdldEF0dHJpYnV0ZUZyb21JbnRlcmZh
Y2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlLCAkcHV0Rm9yd2FyZHMp
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlv
bjsKQEAgLTI4MjMsMTMgKzI4MjMsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwk
e2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwog
ICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0
LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpXG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tKHN0YXRlLCBpKSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJG5hbWVkR2V0
dGVyRnVuY3Rpb24pIHsKICAgICAgICAgICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGFkZCBh
biBJREwgZXh0ZW5kZWQgYXR0cmlidXRlIGF0IHNvbWUgcG9pbnQgaWYgYW4gaW50ZXJmYWNlIG5l
ZWRzIGVudW1lcmFibGUgbmFtZWQgcHJvcGVydGllcy4KICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkge1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yIChhdXRvJiBwcm9w
ZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT5pbXBsKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKVxu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yIChhdXRvJiBw
cm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1l
cygpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIHByb3BlcnR5TmFt
ZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAg
ICAgICAgfQpAQCAtMjkzMCwxNCArMjkzMCwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5p
bXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRl
LCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRpc0N1
c3RvbSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWUgLiAiKCpzdGF0ZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW1wbC5pc1JlYWRPbmx5KCkpIHtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTtcbiIpOwpA
QCAtMjk5MSwxMSArMjk5MSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0gfHwgJGludGVy
ZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB0aGlzT2JqZWN0LT5pbXBsKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0
b3IpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0
LT53cmFwcGVkKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CiAgICAgICAg
IH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4odmlzaXRvcik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBvcnRFeHRyYU1lbW9yeUNvc3QifSkgewotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZp
c2l0ZWQodGhpc09iamVjdC0+aW1wbCgpLm1lbW9yeUNvc3QoKSk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVk
KHRoaXNPYmplY3QtPndyYXBwZWQoKS5tZW1vcnlDb3N0KCkpO1xuIik7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCRudW1DYWNoZWRBdHRyaWJ1dGVzID4gMCkgewogICAgICAgICAgICAgZm9yZWFj
aCAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewpAQCAtMzAzNyw3ICszMDM3LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhl
cml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkgewog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFjZU5h
bWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTtcbiIpOwogICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmhhc1Bl
bmRpbmdBY3Rpdml0eSgpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNF
eHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiRXZlbnRUYXJnZXQiKSkgewpAQCAtMzA0NSw3
ICszMDQ1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8
SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CiAgICAg
ICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgp
LmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmlzRmlyaW5nRXZl
bnRMaXN0ZW5lcnMoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiTm9kZSIpKSB7CkBAIC0zMDY0LDM0
ICszMDY0LDM0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15
ICRyb290U3RyaW5nOwogICAgICAgICAgICAgaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGlu
dGVyZmFjZSkgZXEgIkltcGwiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAg
ICAke2ltcGxUeXBlfSogcm9vdCA9ICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKTtcbiI7Cisg
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICAke2ltcGxUeXBlfSogcm9vdCA9ICZq
cyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChH
ZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0IikgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+
aW1wbCgpLmNvbnRleHQoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRl
cmZhY2VOYW1lfS0+d3JhcHBlZCgpLmNvbnRleHQoKSk7XG4iOwogICAgICAgICAgICAgfSBlbHNp
ZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbEZyYW1lIikgewot
ICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRnJhbWUqIHJvb3QgPSBXVEY6Omdl
dFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5mcmFtZSgpKTtcbiI7CisgICAgICAgICAg
ICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBGcmFtZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtp
bnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmZyYW1lKCkpO1xuIjsKICAgICAgICAgICAgICAgICAk
cm9vdFN0cmluZyAuPSAiICAgIGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RT
dHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYg
KEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxEb2N1bWVudCIpIHsK
LSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0gV1RG
OjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuZG9jdW1lbnQoKSk7XG4iOworICAg
ICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRG9jdW1lbnQqIHJvb3QgPSBXVEY6Omdl
dFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5kb2N1bWVudCgpKTtcbiI7CiAgICAg
ICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICBpZiAoIXJvb3QpXG4iOwogICAgICAgICAg
ICAgICAgICRyb290U3RyaW5nIC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7CiAgICAgICAg
ICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBs
RWxlbWVudFJvb3QiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRWxlbWVudC5o
In0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZUN1c3RvbS5oIn0g
PSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRWxlbWVudCogZWxlbWVu
dCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmVsZW1lbnQoKSk7XG4i
OworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRWxlbWVudCogZWxlbWVudCA9
IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmVsZW1lbnQoKSk7XG4i
OwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFlbGVtZW50KVxuIjsK
ICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7XG4i
OwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgdm9pZCogcm9vdCA9IFdlYkNv
cmU6OnJvb3QoZWxlbWVudCk7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siRWxlbWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IkpTTm9kZUN1c3RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIg
ICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCku
Y2FudmFzKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQq
IHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmNhbnZh
cygpKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRp
bnRlcmZhY2UpIGVxICJJbXBsT3duZXJOb2RlUm9vdCIpIHsKICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0g
IiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwo
KS5vd25lck5vZGUoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAg
dm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCku
b3duZXJOb2RlKCkpO1xuIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
JHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdCgmanMke2ludGVy
ZmFjZU5hbWV9LT5pbXBsKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAi
ICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KCZqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBw
ZWQoKSk7XG4iOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJHJvb3RTdHJpbmcpOwpAQCAtMzExMSw3ICszMTExLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpT
JHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLCBq
cyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCksIGpz
JHtpbnRlcmZhY2VOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOwogICAgIH0KIApAQCAtMzIwNiw3ICszMjA2LDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiJGltcGxUeXBlKiAke2NsYXNzTmFtZX06OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSAiIC4gR2V0Q2Fz
dGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKHZhbHVlKSlcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBudWxscHRyO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAg
fQpAQCAtNDI1NSw3ICs0MjU1LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICAgICAg
aWYgKCRzZWxmSXNUZWFyT2ZmVHlwZSkgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJTVkdNYXRyaXhUZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAgICAg
ICMgRklYTUU6IEJsaW5rOiBEb24ndCBjcmVhdGUgYSBuZXcgb25lIGV2ZXJ5dGltZSB3ZSBhY2Nl
c3MgdGhlIG1hdHJpeCBwcm9wZXJ0eS4gVGhpcyBtZWFucywgZS5nLCA9PT0gd29uJ3Qgd29yay4K
LSAgICAgICAgICAgICAgICAkdmFsdWUgPSAiU1ZHTWF0cml4VGVhck9mZjo6Y3JlYXRlKGNhc3Rl
ZFRoaXMtPmltcGwoKSwgJHZhbHVlKSI7CisgICAgICAgICAgICAgICAgJHZhbHVlID0gIlNWR01h
dHJpeFRlYXJPZmY6OmNyZWF0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksICR2YWx1ZSkiOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZH
U3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAgICAg
ICR0ZWFyT2ZmVHlwZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmPCRpbnRlcmZhY2VOYW1lLCAvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCA5OWUxMjJkM2Q3NTQxYTJmNTZhMDE5ZTAwZDk5NGFiY2VjZDQzMmFkLi5iMGQxMmMz
ODkzYWZlMjdiNDRiNzI1ODgwMjIxZTc4MzljZmE3Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTQ5LDkgKzE0OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFj
dGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+
KHNsb3RCYXNlKTsKLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+
d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmV4Y2l0aW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqLCBFbmMKICAgICBKU1Rl
c3RBY3RpdmVET01PYmplY3QqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZl
RE9NT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZG9tT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9i
amVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhzdGF0ZSwgZG9tT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTc5LDkgKzE3OSw5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVu
Y3Rpb25FeGNpdGluZ0Z1bmN0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0
IiwgImV4Y2l0aW5nRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbygpKTsKLSAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhp
cy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBOb2RlKiBuZXh0Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMCkpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01P
YmplY3Q6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQKIHsKICAgICBh
dXRvKiBqc1Rlc3RBY3RpdmVET01PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0QWN0aXZlRE9NT2JqZWN0LT5pbXBsKCksIGpzVGVzdEFjdGl2ZURPTU9iamVjdCk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RBY3RpdmVET01PYmplY3QtPndyYXBw
ZWQoKSwganNUZXN0QWN0aXZlRE9NT2JqZWN0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKQEAgLTI2OSw3ICsyNjksNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RBY3RpdmVETwogVGVz
dEFjdGl2ZURPTU9iamVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RBY3RpdmVET01PYmplY3QqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+
aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKaW5kZXggMDlkNmFhYjgyNGUxMWQ3
Y2U0YzlkNzE5ZDdmZjliOWNkZGJkOTJlMC4uY2FhZGJjMWYwYjU3ZGQ1MTBlYmJhZTA2YzhhMGQz
MTFlOTUwNTRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAg
dm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0MKIHsKICAgICBhdXRvKiBqc1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0LT5pbXBsKCksIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LT53cmFwcGVkKCksIGpzVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKQEAgLTE4NCw3ICsxODQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdXN0b21DbwogVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCi0gICAgICAgIHJldHVy
biAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRl
ci5jcHAKaW5kZXggMzdjMWU1ODEyZjQxYTU1MjU1NDlmMzQwMzMxZTVmOGU3NjliNTA2OS4uOTk0
ZjM2NmVmNDRjMWU4NDA5OTY5YWE4MDMwYTQ5ODI0NGI5NmUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5v
dGhlckZ1bmMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsICJhbm90
aGVyRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3Rh
dGUpLT52YWx1ZShzdGF0ZSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm8KIHsKICAgICBhdXRvKiBqc1Rlc3RDdXN0b21OYW1lZEdldHRlciA9IGpzQ2FzdDxKU1Rl
c3RDdXN0b21OYW1lZEdldHRlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyLT5pbXBsKCksIGpz
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLT53cmFwcGVkKCksIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyKTsK
IH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RDdXN0b21OYQogVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih2
YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4g
JndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDFhOWZlYTdjMTE3YzcwNGZhM2JjNjYzYjRm
MzUwYzIzYTg2OTgzOGQuLjhkZjkyZDlmZDE4NzM1M2MyN2ZmNjAzOWRhYThjYjg0MjA5ZDAxYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50
Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjEoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTg0LDcgKzE4NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZl
bnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yMTQsNyArMjE0
LDcgQEAgdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3RFdmVudENv
bnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVudENv
bnN0cnVjdG9yLT5pbXBsKCksIGpzVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgpLCBqc1Rlc3RF
dmVudENvbnN0cnVjdG9yKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAg
LTI2NCw3ICsyNjQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudENvbgogVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50
Q29uc3RydWN0b3IqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggOTc4ZDkyYTY0NWQyYzQ4MjExYTIw
NjhmOGJmYjlmM2UxNWNiYmI1Ny4uNGVkZWFjODY5M2Q2YTI3ZTJlMjdjMDllOWYyNTU2NzY5Mzk5
MzExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNDUsMTAgKzE0NSwxMCBAQCBi
b29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKLSAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBv
cHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHsKKyAg
ICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25h
bEluZGV4LnZhbHVlKCk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBEb250RGVsZXRl
IHwgUmVhZE9ubHk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRl
cywgdG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPmlt
cGwoKS5pdGVtKGluZGV4KSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0
dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGlmIChnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRUYXJnZXQsIEJhc2U+KHN0
YXRlLCBKU1Rlc3RFdmVudFRhcmdldFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQpAQCAtMTcxLDkgKzE3MSw5IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlm
IChpbmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKSkgeworICAgIGlmIChpbmRleCA8
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzID0gRG9udERlbGV0ZSB8IFJlYWRPbmx5OwotICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLCB0aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRleCkpKTsKKyAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
QnlJbmRleCh0aGlzT2JqZWN0LCBzdGF0ZSwgaW5kZXgsIHNsb3QpOwpAQCAtMTkxLDEwICsxOTEs
MTAgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLAogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBj
b3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3Ro
KCk7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tKHN0YXRlLCBpKSk7CiAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+aW1w
bCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQog
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpAQCAtMjEyLDcgKzIxMiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRU
YXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25BZGRFdmVu
dExpc3RlbmVyKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgImFkZEV2ZW50
TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlz
dGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW4KICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJyZW1vdmVFdmVudExpc3RlbmVyIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRh
cmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5l
ciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMjU5LDcgKzI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZl
bnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkRpc3BhdGNoRXZlbnQoRXhlCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0RXZlbnRUYXJnZXQiLCAiZGlzcGF0Y2hFdmVudCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBA
IC0yNzcsMTMgKzI3NywxMyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHRoaXNPYmplY3QtPmltcGwoKS52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnZpc2l0SlNF
dmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogYm9vbCBKU1Rlc3RFdmVudFRhcmdldE93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIGpzVGVzdEV2
ZW50VGFyZ2V0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oaGFuZGxlLnNsb3QoKS0+YXND
ZWxsKCkpOwotICAgIGlmIChqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLmlzRmlyaW5nRXZlbnRM
aXN0ZW5lcnMoKSkKKyAgICBpZiAoanNUZXN0RXZlbnRUYXJnZXQtPndyYXBwZWQoKS5pc0Zpcmlu
Z0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFVOVVNFRF9QQVJB
TSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBK
U1Rlc3RFdmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY28KIHsKICAgICBhdXRvKiBqc1Rlc3RFdmVudFRhcmdldCA9IGpzQ2Fz
dDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50VGFyZ2V0LT5pbXBsKCksIGpzVGVzdEV2
ZW50VGFyZ2V0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50VGFyZ2V0
LT53cmFwcGVkKCksIGpzVGVzdEV2ZW50VGFyZ2V0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKQEAgLTM0Myw3ICszNDMsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudFRhcgog
VGVzdEV2ZW50VGFyZ2V0KiBKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RXZlbnRUYXJnZXQqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCAzNWRhMGU3NTllNDgzOWIxMjNmOWU1MjNj
ZGQyNjE1OWYxOTJhMWU1Li5jYWQ2ZTk5ZGU0YzUwMTMwODc5ZTEzNTAwMjYyZGIwOTA5YWEwMDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEV4Y2Vw
dGlvbio+KHNsb3RCYXNlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5uYW1lKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEpTVGVz
dEV4Y2VwdGlvbk93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udAogewogICAgIGF1dG8qIGpzVGVzdEV4Y2VwdGlvbiA9IGpzQ2FzdDxKU1Rl
c3RFeGNlcHRpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQg
PSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc1Rlc3RFeGNlcHRpb24tPmltcGwoKSwganNUZXN0RXhjZXB0aW9uKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV4Y2VwdGlvbi0+d3JhcHBlZCgpLCBq
c1Rlc3RFeGNlcHRpb24pOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAt
MjE5LDcgKzIxOSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV4Y2VwdGlvCiBUZXN0RXhjZXB0aW9uKiBK
U1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggNTczYTA5MGFjZjdhODcwZTBiYjcxOWJmZjdm
MTVjMTljZTFlNjM1OC4uYzc0MDZhYzE5NTRlOTA5MmJhNTVmMzI0YWYxYmNlMWQ1Y2RjY2Q1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiBib29sIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUqIHJvb3QgPSAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+aW1wbCgpOworICAgIFRl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiByb290ID0gJmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUt
PndyYXBwZWQoKTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7
CiB9CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsCiB7CiAgICAg
YXV0byoganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+aW1wbCgpLCBqc1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUtPndyYXBwZWQoKSwganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiB9
CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0xODEsNyArMTgxLDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0R2VuZXJhdGUKIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKaW5kZXggZDJkN2I4MDEzNDhmZDZjYzRjNjFhOTE5ZTdiMTIwMzBjNjZi
NjEyOS4uZmQ4Y2VhMzVkYzJlZmZmMGQ1NGFlZTMxMzY2MTQyMmUzNWMwYmMxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJh
cwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIx
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIxKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
ImltcGxlbWVudHNTdHIyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIy
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTUxMiw3ICs1
MTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNOb2RlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmltcGxlbWVudHNOb2RlKCkpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEIKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIxIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbFN0cjEoJmltcGwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC01NzQsNyArNTc0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0
cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0
cjIoJmltcGwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC02
MDUsNyArNjA1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
Tm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxOb2RlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbE5vZGUoJmltcGwpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNTdHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm47CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW4KICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c05vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTczNyw3ICs3MzcsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1l
bnRhbFN0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbE5vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTc5NSw3ICs3OTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEoRQogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmltcGxlbWVudHNNZXRob2QxKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTgxMCw3ICs4
MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdElu
dGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtODYxLDcgKzg2
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMSgmaW1w
bCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTg3
Niw3ICs4NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMgogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC05
MjIsNyArOTIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG8KIGJvb2wgSlNUZXN0SW50ZXJm
YWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byog
anNUZXN0SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKLSAgICBpZiAoanNUZXN0SW50ZXJmYWNlLT5pbXBsKCkuaGFzUGVuZGluZ0Fj
dGl2aXR5KCkpCisgICAgaWYgKGpzVGVzdEludGVyZmFjZS0+d3JhcHBlZCgpLmhhc1BlbmRpbmdB
Y3Rpdml0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRv
cik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgSlNUZXN0SW50
ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiBjb250CiB7CiAgICAgYXV0byoganNUZXN0SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdElu
dGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpz
dGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBl
cih3b3JsZCwgJmpzVGVzdEludGVyZmFjZS0+aW1wbCgpLCBqc1Rlc3RJbnRlcmZhY2UpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0SW50ZXJmYWNlLT53cmFwcGVkKCksIGpzVGVz
dEludGVyZmFjZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEludGVyZmFjZSog
aW1wbCkKQEAgLTk2MSw3ICs5NjEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZhYwogVGVzdElu
dGVyZmFjZSogSlNUZXN0SW50ZXJmYWNlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDFmNDBjY2RlNWQy
YWNjZGE1MzVhMTgwYTZmZjVkMTIzYWUyZmY3NjUuLmQwNjExZTVlZWNhNTc2ZTg3OTI3Yzk2NGEy
MjBlOTdhNWFlNjcwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZAogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogewogICAgIGF1dG8qIGpzVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIgPSBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXItPmltcGwoKSwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLT53cmFwcGVkKCksIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOwogfQogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjA2LDcgKzIwNiw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE1lZGlhUXVlCiBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjFkZTM5MjRhYjljMjQ3MTkx
MGJiYTNkYjQyNDMwODMzY2MwNTdlMC4uYzhhNjE2NDZiODJkZDkxYTVjNjM3OTI2YWQ1NDNmOWEx
YjI4MDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0TmFtZWRDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiBib29sIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3Iq
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgaWYgKGpzVGVzdE5hbWVkQ29uc3RydWN0
b3ItPmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICBpZiAoanNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci0+d3JhcHBlZCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTczLDcgKzE3Myw3IEBAIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNU
ZXN0TmFtZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgpLCBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKKyAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPndyYXBwZWQo
KSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRF
R1JJVFkpCkBAIC0yMjMsNyArMjIzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb24KIFRlc3RO
YW1lZENvbnN0cnVjdG9yKiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXIt
PmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA3OWNkNTFiNDk3YmY4OTdjMDE5OTdkMDVi
MmUyZjY0OTJkMTBkN2VmLi5kMGVhYTMxNzg4ZjcwMTI5NmRmMDFmMGRjMDI1MDYzMDlkNzRkMWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5u
YW1lKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1Miw3
ICsxNTIsNyBAQCB2b2lkIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aAogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHZvaWQgSlNUZXN0Tm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Tm9kZSo+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHRoaXNP
YmplY3QtPmltcGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+d3JhcHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuaAppbmRleCA4ZmQwZDNkMjJjZDQ1ZDc5Y2NhN2NjYWEzYWRiYTEzN2Q4MDY3OTA1Li4wYzcy
YTMxYmRiNmJjYmY5YjE3YTdkNmJjMTE5ZTViMzQ4NDYwMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKQEAgLTQ5LDkg
KzQ5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAotICAgIFRlc3ROb2RlJiBpbXBs
KCkgY29uc3QKKyAgICBUZXN0Tm9kZSYgd3JhcHBlZCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdE5vZGUmPihCYXNlOjppbXBsKCkpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VGVzdE5vZGUmPihCYXNlOjp3cmFwcGVkKCkpOwogICAgIH0KIHByb3Rl
Y3RlZDoKICAgICBKU1Rlc3ROb2RlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
LCBSZWY8VGVzdE5vZGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCmlu
ZGV4IDVjMGE1N2E3YzFlMzY3ZTJlMDExZmJmZTY1OWMyOTliOGYxYjk5OWQuLjE5MmFlMDhhYmNi
NDQ0Y2U1ZjMwYzI2NjE5NDI3ZDkzNDg3NDFhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYy5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cihFeGVjU3RhdGUqIHN0YQog
ICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUo
IlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVy
aW5nKCkpIHsKLSAgICAgICAgaW50IG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgp
Lm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoKTsKKyAgICAgICAgaW50IG1lbW9pemVkUmVz
dWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIo
KTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PGludD4+KGJp
bmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgMCk7CiAgICAgICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoRXhl
Y1N0YXRlKiBzdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubm9uZGV0ZXJtaW5pc3RpY1Jl
YWRvbmx5QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xODksNyArMTg5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3QKICAgICBJbnB1dEN1cnNv
ciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJt
aW5pc3RpYy5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAg
ICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJt
aW5pc3RpY1dyaXRlYWJsZUF0dHIoKTsKKyAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKCk7CiAg
ICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5k
aW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwNCw3ICsyMDQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dy
aXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjI2LDcgKzIyNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0
cihFeGVjU3RhdGUqIHN0CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+
aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY0V4
Y2VwdGlvbkF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBp
ZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0
ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKCk7Cisg
ICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5ub25k
ZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigpOwogICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8
TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1l
bW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0yNDEsNyArMjQxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3QK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5vbmRldGVybWluaXN0
aWNFeGNlcHRpb25BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgIElucHV0
Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUoIlRlc3ROb25k
ZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmlu
ZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwo
KS5ub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihlYyk7CisgICAgICAgIFN0cmlu
ZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGlj
R2V0dGVyRXhjZXB0aW9uQXR0cihlYyk7CiAgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1v
aXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6
ZWRSZXN1bHQsIGVjKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY0dldHRl
ckV4Y2VwdGlvbkF0dHIoZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMDQsNyArMzA0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJF
eGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2Jq
ZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlz
dGljU2V0dGVyRXhjZXB0aW9uQXR0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVt
b2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4
Y2VwdGlvbkF0dHIoKTsKKyAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCk7CiAgICAg
ICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5kaW5n
TmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTMxOSw3ICszMTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQg
c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBT
dHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJu
b25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0
cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgc2V0
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
KEV4ZWNTdGF0ZSogc3RhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQyNyw3
ICs0MjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWlu
aXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaQogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQ7CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IHN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmlucHV0Q3Vyc29yKCk7CkBAIC00NjIsNyArNDYy
LDcgQEAgdm9pZCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3ROb25kZXRl
cm1pbmlzdGljID0ganNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROb25kZXRl
cm1pbmlzdGljLT5pbXBsKCksIGpzVGVzdE5vbmRldGVybWluaXN0aWMpOworICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy0+d3JhcHBlZCgpLCBqc1Rlc3RO
b25kZXRlcm1pbmlzdGljKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAg
LTUxMiw3ICs1MTIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb25kZXRlcgogVGVzdE5vbmRldGVybWlu
aXN0aWMqIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRl
dGVybWluaXN0aWMqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCA2OTM1YzczYzliMTY3NGUyZDQ0NjEwNzI5ODg5MWY1Y2JmYzUy
MTIzLi43N2JhNGVkOGM4NjlmZDU4YWJmNTNmMGI3NTI3Mzc5NTJkNDNlOWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtNzQxLDcgKzc0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cmVhZE9ubHlMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVhZE9ubHlM
b25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC03
NTgsNyArNzU4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25s
eVN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC03NzUsNyArNzc1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVh
ZE9ubHlUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5VGVzdE9iakF0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwucmVhZE9ubHlU
ZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtODE3LDkgKzgxNyw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKICAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2UpOwotICAgIGlmICghY2FzdGVk
VGhpcy0+aW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKS0+c2V0dGlu
Z3MoKTsKKyAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJh
bWUoKS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIXNldHRpbmdzLnRlc3RTZXR0aW5nRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTgzNyw3ICs4MzcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKUwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmVudW1BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTg1NCw3ICs4NTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKUwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZUF0
dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtODcxLDcg
Kzg3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im9jdGV0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04ODgsNyArODg4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuc2hvcnRB
dHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTkwNSw3
ICs5MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9y
dEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05MjIsNyArOTIy
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25n
QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLmxvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTkzOSw3ICs5MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpM
b25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZAog
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTG9u
Z0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTU2
LDcgKzk1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRM
b25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExv
bmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC05NzMsNyArOTczLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
bmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0
cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05OTAsNyAr
OTkwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ0ZXN0T2JqQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC50ZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
WE1MT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwueG1sT2JqQXR0cigpKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmEKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihp
bXBsLmlzQ3JlYXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTEwNDEsNyArMTA0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3lt
Ym9sQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cmVhZE9ubHlTeW1ib2xBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5U3ltYm9sQXR0ciIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBTeW1ib2w6OmNyZWF0ZShzdGF0
ZS0+dm0oKSwgKihpbXBsLnJlYWRPbmx5U3ltYm9sQXR0cigpKS51aWQoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZmFzdEdldEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmEKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTEwMiw3ICsxMTAyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBs
LmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWdu
ZWRpbnRlZ3JhbGF0dHJBdHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTExMTksNyArMTExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxl
Y3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFu
KGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xl
YW5hdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTExMzYsNyArMTEzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVm
bGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJB
dHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTE1Myw3
ICsxMTUzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRT
dHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGlt
cGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJp
bmdBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTExNzAsNyArMTE3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3Rv
bUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21D
b250ZW50SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTExODcsNyArMTE4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9t
VVJMQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjIxLDcgKzEyMjEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuYwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRy
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnR5
cGVkQXJyYXlBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0xMjM5LDcgKzEyMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTI1Nyw3ICsxMjU3LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTEyNzUsNyArMTI3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTI5Myw3ICsxMjkzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xMzEwLDcgKzEzMTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RUeXBlQ2hl
Y2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3Ry
aWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5zdHJp
Y3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTEzMzgsNyArMTMzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im9uZm9vIik7CiAgICAgfQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShldmVudEhhbmRsZXJBdHRyaWJ1dGUoY2FzdGVkVGhpcy0+aW1wbCgpLCBl
dmVudE5hbWVzKCkuZm9vRXZlbnQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50
SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29F
dmVudCkpOwogfQogCiAKQEAgLTEzNTMsNyArMTM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMzcwLDcgKzEzNzAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0
aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0
cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwud2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUo
KnN0YXRlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTM5
MCw3ICsxMzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICBhdXRvKiBzY3JpcHRD
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRl
eHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDA4LDcgKzE0MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplYwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgZWMpKSk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTQzMCw3ICsxNDMwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGEKICAg
ICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgZWMp
KSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShF
eGVjU3QKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgq
c3RhdGUsIHNjcmlwdENvbnRleHQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygKICAg
ICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3Rh
dGUsIHNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0OTMsNyArMTQ5Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmliCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTEwLDcgKzE1MTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTI4LDcgKzE1MjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Y29uZGl0aW9uYWxBdHRyMSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRp
dGlvbmFsQXR0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1NjYsNyArMTU2Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHIzIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNjIyLDcgKzE2MjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRo
aXMtPm1fY2FjaGVkQXR0cmlidXRlMS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gKGltcGwuY2FjaGVkQXR0cmlidXRlMSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDog
aW1wbC5jYWNoZWRBdHRyaWJ1dGUxKCkuanNWYWx1ZSgpKTsKICAgICBjYXN0ZWRUaGlzLT5tX2Nh
Y2hlZEF0dHJpYnV0ZTEuc2V0KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2NDIsNyArMTY0Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVl
ID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5jYWNoZWRBdHRyaWJ1dGUyKCkuaGFzTm9WYWx1ZSgpID8g
anNOdWxsKCkgOiBpbXBsLmNhY2hlZEF0dHJpYnV0ZTIoKS5qc1ZhbHVlKCkpOwogICAgIGNhc3Rl
ZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMi5zZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMsIHJl
c3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTY2MCw3ICsx
NjYwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKICAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYW55QXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IChpbXBsLmFueUF0dHJpYnV0ZSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgp
IDogaW1wbC5hbnlBdHRyaWJ1dGUoKS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2NzIsNyArMTY3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RC
YXNlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
aG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5jb250ZW50RG9jdW1lbnQoKSkgPyB0
b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5j
b250ZW50RG9jdW1lbnQoKSkpIDoganNOdWxsKCkpOwogfQogCkBAIC0xNjg4LDcgKzE2ODgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRh
YmxlUG9pbnQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBTVkdQb2ludD46OmNyZWF0ZShpbXBs
LCBpbXBsLm11dGFibGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBvaW50KSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3MDUsNyArMTcwNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
aW1tdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJs
ZVBvaW50KCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MTcyMiw3ICsxNzIyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdiZXJyeShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJh
d2JlcnJ5Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ibHVlYmVycnkoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTczOSw3ICsxNzM5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLnN0cmljdEZsb2F0KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTE3NTYsNyArMTc1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRl
c2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5kZXNjcmlwdGlv
bigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzczLDcg
KzE3NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5pZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xNzkwLDcgKzE3OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImhh
c2giKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiaGFzaCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5oYXNoKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE4MDcsNyArMTgwNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVw
bGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xODI1LDcgKzE4MjUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNO
dWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bGwoKSk7CkBAIC0xODQ1LDcgKzE4NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpO
dWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYQog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJu
dWxsYWJsZUxvbmdBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
Lm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4NjUsNyArMTg2NSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKQEAgLTE4ODUsNyArMTg4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFs
c2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CiAg
ICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7
CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xOTI2LDcgKzE5
MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgIH0KICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVTdHJpbmdWYWx1ZShp
c051bGwsIGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgaWYgKGlz
TnVsbCkKQEAgLTE5NDYsNyArMTk0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiYXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5h
dHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MTk2Myw3ICsxOTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJl
c2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRy
aWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTgwLDcg
KzE5ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRz
QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnB1dEZvcndhcmRzQXR0cmlidXRlKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTk3LDcgKzE5OTcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFi
bGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5wdXRGb3J3YXJkc051bGxh
YmxlQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcg
bmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjA2OSw3ICsyMDY5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50OF90IG5hdGl2
ZVZhbHVlID0gdG9JbnQ4KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIw
ODksNyArMjA4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1CiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1aW50OF90IG5hdGl2
ZVZhbHVlID0gdG9VSW50OChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0y
MTA5LDcgKzIxMDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50MTZfdCBuYXRp
dmVWYWx1ZSA9IHRvSW50MTYoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjEyOSw3ICsyMTI5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2QKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWlu
dDE2X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMTQ5LDcgKzIxNDksNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIxNjksNyArMjE2OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBs
b25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b0ludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxODksNyArMjE4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRM
b25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUludDY0KHN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMDksNyArMjIwOSw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9T
dHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMjksNyArMjIyOSw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjQ5LDcgKzIyNDksNyBAQCB2b2lkIHNldEpTVGVz
dE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1ZhbAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMjY5LDcgKzIyNjksNyBAQCB2b2lkIHNldEpTVGVzdE9iakNyZWF0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
cmVhdGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyODks
NyArMjI4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5n
IG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsIHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjMwOSw3ICsyMzA5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEUKICAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50
ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjMyOSw3ICsyMzI5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8K
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVm
bGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbmF0aXZlVmFsdWUgPSB0b1VJbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0g
dmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM2OSw3ICsyMzY5LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3Ry
aW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzg5LDcgKzIzODksNyBAQCB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MDksNyAr
MjQwOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI0MjksNyArMjQyOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
Qm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yNDQ5LDcgKzI0NDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVS
TEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3Rv
bVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3Rh
dGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ2OSw3ICsyNDY5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUeXBl
ZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2Rl
ZEoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
dHlwZWRBcnJheUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbmF0aXZlVmFsdWUgPSB0b0Zsb2F0MzJB
cnJheSh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI0ODksNyArMjQ4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUwOSw3ICsyNTA5LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMjUzMSw3
ICsyNTMxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI1NTEsNyArMjU1MSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRp
dmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMjU3Myw3ICsyNTczLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWSgh
dmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlNUZXN0T2JqOjpp
bmZvKCkpKSkgewogICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIsICJUZXN0T2JqIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTI2MDksNyArMjYwOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqT25mb28oRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9uZm9v
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRl
KCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPmltcGwoKSwgZXZlbnROYW1lcygpLmZv
b0V2ZW50LCB2YWx1ZSk7CisgICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKCpzdGF0ZSwgKmNh
c3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgZXZlbnROYW1lcygpLmZvb0V2ZW50LCB2
YWx1ZSk7CiB9CiAKIApAQCAtMjYyNSw3ICsyNjI1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2
ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0y
NjY1LDcgKzI2NjUsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY4OCw3ICsyNjg4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2UK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNzA4LDcgKzI3MDgsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBu
YXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjczMSw3ICsy
NzMxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3QKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjc1NCw3ICsyNzU0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjc3Nyw3ICsyNzc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MDAsNyArMjgwMCw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRy
aWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTI4MjEsNyArMjgyMSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0yODQzLDcgKzI4NDMsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjg2NSw3ICsyODY1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyMyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI5MzEsNyArMjkzMSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNW
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFu
eUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZSA9IHsgc3RhdGUtPnZt
KCksIHZhbHVlIH07CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI5NTEsNyArMjk1MSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTXV0
YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVk
SlNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpT
U1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NzEsNyArMjk3MSw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJh
c2VPYmplY3QsIEVuY29kZWRKCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4q
IG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5MSw3
ICsyOTkxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwMTEsNyAr
MzAxMSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGZsb2F0IG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwMzEsNyArMzAzMSw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzA2OCw3ICszMDY4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDg4LDcgKzMwODgsNyBAQCB2
b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRv
SW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEwOCw3ICszMTA4
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTMxMzAsNyArMzEzMCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0
cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmPFRlc3ROb2RlPiBmb3J3
YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7Cisg
ICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1
dEZvcndhcmRzQXR0cmlidXRlKCk7CiAgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0z
MTUxLDcgKzMxNTEsNyBAQCB2b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxl
QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmUHRyPFRlc3ROb2Rl
PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLnB1dEZvcndhcmRzTnVsbGFibGVB
dHRyaWJ1dGUoKTsKKyAgICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwogICAgIGlmICgh
Zm9yd2FyZGVkSW1wbCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIGltcGwgPSAqZm9yd2Fy
ZGVkSW1wbDsKQEAgLTMxNzQsNyArMzE3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW1wbC52b2lkTWV0aG9kKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTMxODYsNyArMzE4Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9k
V2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2RX
aXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBs
b25nQXJnID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTMyMDksNyArMzIwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRob2Qo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzIyMSw3ICsz
MjIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgaW50OF90IGJ5dGVBcmcgPSB0b0ludDgoc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMjQ0LDcgKzMyNDQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2Qo
RXhlY1N0YXRlKiBzdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwub2N0ZXRNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMzI1Niw3ICszMjU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1MKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIHVpbnQ4X3Qgb2N0ZXRBcmcgPSB0b1VJ
bnQ4KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzI3
OSw3ICszMjc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibG9uZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMjkxLDcgKzMyOTEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01l
dGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTWV0
aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBp
bnQgbG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC0zMzE0LDcgKzMzMTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5vYmpNZXRob2QoKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMzMjYsNyArMzMyNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJncyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9iak1l
dGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
aW50IGxvbmdBcmcgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtMzM0OSw3ICszMzQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGUK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxTY3Jp
cHRQcm9maWxlPj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxTY3JpcHRQcm9m
aWxlLCBKU1NjcmlwdFByb2ZpbGU+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICZKU1Njcmlw
dFByb2ZpbGU6OnRvV3JhcHBlZCkpOwpAQCAtMzM2Niw3ICszMzY2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmlu
Z1NlcXVlbmNlKEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kUmV0dXJuaW5n
U2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQg
bG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVy
c2lvbik7CkBAIC0zMzgzLDcgKzMzODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIC8vIEtlZXAgcG9pbnRlciB0byB0aGUgSlNT
dHJpbmcgaW4gYSBsb2NhbCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlZiB0aGUgU3RyaW5nLgpAQCAt
MzQwNCw3ICszNDA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBz
dGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzQz
Myw3ICszNDMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtMzQ1Niw3ICszNDU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCksIDAsIDApOwpAQCAtMzQ3Myw3ICszNDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0
YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvcHRpb25zT2JqZWN0Iik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRGljdGlvbmFyeSBvbyA9IHsgc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSB9OwpAQCAtMzQ5Myw3ICszNDkzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb24oRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4
Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtMzUyNyw3ICszNTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoRXhl
Y1N0YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwcml2YXRlTWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIGFyZ3VtZW50ID0g
c3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtMzU0
NCw3ICszNTQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwogICAgIGlmIChV
TkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTU5LDcgKzM1NTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0
ZW5lcihFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZW1vdmVFdmVudExpc3Rl
bmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIg
PSBzdGF0ZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVj
dCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTM1NzQsNyArMzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNTCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTM1ODYsNyArMzU4Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVPYmooRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0ZU9iaigqc3RhdGUpKSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjAwLDcgKzM2MDAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
Vm9pZEV4Y2VwdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVW
b2lkRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGltcGwud2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbigqc3Rh
dGUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTM2MTQsNyArMzYx
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndp
dGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigqc3RhdGUsIGVjKSkpOwogCkBAIC0zNjMxLDcgKzM2
MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjQ2LDcgKzM2NDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlm
ICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTM2NjEsNyArMzY2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMzY4MSw3
ICszNjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byogc2NyaXB0Q29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzY5OCw3
ICszNjk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWwKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNj
cmlwdEFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhzdGF0ZSwgMCkp
OwogICAgIGltcGwud2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayhzY3JpcHRBcmd1bWVu
dHMucmVsZWFzZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMzcxMSw3ICszNzExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGUKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zNzMzLDcgKzM3MzMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQo
KTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM3NTUsNyArMzc1NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbk9wdCA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNzgyLDcgKzM3ODIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9uT3B0ID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM4MTcsNyArMzgxNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmcoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNp
emVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291
bnQgPD0gMCkgewpAQCAtMzgzOSw3ICszODM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0EK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5k
RGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90
IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8
PSAwKSB7CkBAIC0zODYxLDcgKzM4NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVm
aW5lZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgc3RyID0gc3Rh
dGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg3Niw3ICszODc2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0kKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygp
IDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg5MSw3ICszODkxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTM5MDgsNyAr
MzkwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQz
MihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM5Mjgs
NyArMzkyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAg
IGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTM5NDYsNyAr
Mzk0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlv
bigpKQpAQCAtMzk2Myw3ICszOTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGludCBub25DYWxsYmFjayA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zOTgzLDcgKzM5ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3RpbwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJl
ZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIXN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC00MDI1LDcgKzQwMjUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QxKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRp
b25hbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDA0MCw3ICs0
MDQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQwNTUsNyArNDA1NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhv
ZDMoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9k
MyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0
aG9kMygpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBA
IC00MDY5LDcgKzQwNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKAogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQwODksNyArNDA4OSw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDIoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBv
YmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDEx
Niw3ICs0MTE2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMygKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFN0cmluZyBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJp
bmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00MTMzLDcgKzQxMzMsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2Q0KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdB
cmcgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OwpAQCAtNDE1MCw3ICs0MTUwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNSgKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpCkBAIC00MTY3LDcgKzQxNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KAogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RBcmcg
PSB0b0RPTVN0cmluZ0xpc3Qoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MTg0LDcg
KzQxODQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmlu
Zz4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjAxLDcgKzQyMDEsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q4KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9h
ZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVz
dE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsK
QEAgLTQyMTgsNyArNDIxOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyA9IHRvTmF0aXZl
QXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQyMzUsNyArNDIz
NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1bnNpZ25l
ZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjUyLDcgKzQyNTIsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9h
ZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3Ry
aW5nIHN0ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0
YXRlKTsKQEAgLTQyNjksNyArNDI2OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgVmVjdG9yPEJsb2IqPiBibG9iQXJnczsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBjb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsg
KytpKSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLmluaGVyaXRz
KEpTQmxvYjo6aW5mbygpKSkKQEAgLTQzMjEsNyArNDMyMSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBUZXN0T2JqKiBvYmpBcmcxID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKQEAgLTQzNDgsNyArNDM0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0
T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpA
QCAtNDQ2NSw3ICs0NDY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWMKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBzaG9ydCBvYmpBcmdzU2hvcnQgPSAw
OwpAQCAtNDQ5NSw3ICs0NDk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXEKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiB1
bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDUxMiw3ICs0NTEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24o
RXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwpAQCAtNDUzMiw3ICs0NTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGUKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CkBAIC00NTUyLDcgKzQ1NTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Ui
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CkBAIC00NTcyLDcgKzQ1NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDU5Miw3ICs0NTkyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEV4
ZWNTdGF0ZSoKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZ2V0U1ZHRG9jdW1lbnQiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5nZXRTVkdEb2N1bWVu
dChlYykpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTQ2
MDksNyArNDYwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNvbnZlcnQxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5h
cmd1bWVudCgwKSk7CkBAIC00NjI2LDcgKzQ2MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBzdGF0
ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb252ZXJ0MiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6
OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDY0Myw3ICs0NjQzLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQ0KEV4ZWNTdGF0ZSogc3RhdGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVy
dDQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSog
dmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ2
NjAsNyArNDY2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNvbnZlcnQ1Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5h
cmd1bWVudCgwKSk7CkBAIC00Njc3LDcgKzQ2NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhl
YwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ2ODksNyArNDY4OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwu
aW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTQ3MDEsNyArNDcwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3JhbmdlIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGltcGwuYmFuYW5hKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQ3MTMsNyArNDcxMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihF
eGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CkBAIC00NzM5LDcgKzQ3MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuYwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwpAQCAtNDc2NCw3ICs0NzY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
QEAgLTQ3ODksNyArNDc4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChFeGVjCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIGhlYWQgPSBzdGF0ZS0+YXJndW1lbnQo
MCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00ODA5LDcgKzQ4MDksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFy
aWFkaWNEb3VibGVNZXRob2QoRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2YXJp
YWRpY0RvdWJsZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGRvdWJsZSBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0YXRlKTsKQEAg
LTQ4MjksNyArNDgyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIE5vZGUqIGhlYWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0
ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDg1Miw3ICs0ODUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRl
KQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnkiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBmbG9hdCBhID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvRmxv
YXQoc3RhdGUpOwpAQCAtNDg3OCw3ICs0ODc4LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXMK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlvbiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb24oRGVm
ZXJyZWRXcmFwcGVyKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURl
ZmVycmVkKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTQ4OTYsNyArNDg5Niw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGZsb2F0IGEgPSBzdGF0
ZS0+YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CkBAIC00OTIzLDcgKzQ5MjMsNyBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbldpdGhFeAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoRXhjZXB0aW9uKERlZmVycmVkV3JhcHBlcihzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIHByb21pc2VEZWZlcnJlZCksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKQEAgLTQ5NDMsNyArNDk0Myw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJ
bnRBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBh
cmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0g
MCkgewpAQCAtNDk3OCw3ICs0OTc4LDcgQEAgdm9pZCBKU1Rlc3RPYmpPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAg
YXV0byoganNUZXN0T2JqID0ganNDYXN0PEpTVGVzdE9iaio+KGhhbmRsZS5zbG90KCktPmFzQ2Vs
bCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE9iai0+aW1wbCgpLCBq
c1Rlc3RPYmopOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T2JqLT53cmFwcGVk
KCksIGpzVGVzdE9iaik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC01
MDI4LDcgKzUwMjgsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPYmoqIGltcAogVGVzdE9iaiogSlNUZXN0
T2JqOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCmluZGV4IGRkNTBiYTI2ZTFlYzJkMjg5MzhkMDZiMDcyZjk3MWI1OTRjYmIz
OTMuLmRlNGFiZmFjZjg0YWFmNzEwNThmM2JiZWEwOTEyOTE4ZjJlZDNmMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogewogICAgIGF1dG8qIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwoKSwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLT53cmFwcGVkKCksIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogfQogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjYxLDcgKzI2MSw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE92ZXJsb2FkCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggM2Q5N2IxM2NhYmIwNzNkMTQx
YjY0YTU5NzQ3MzI3ZjFmOGVlODZhNC4uNDFmM2YyNDkyMjExYjQ0ZGFiY2ZmOTcyYWQyYjQyNWM3
YzA2NzY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMTc0LDcg
KzE3NCw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKG1vZGUuaW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1l
IDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwpAQCAtMTkyLDcgKzE5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsICJuYW1lZEl0ZW0iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYW1lID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pCiB7CiAgICAgYXV0byoganNUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IGpzQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+aW1wbCgpLCBqc1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE92ZXJy
aWRlQnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CiB9CiAKICNp
ZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjEsNyArMjYxLDcgQEAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0T3ZlcnJpZGUKIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUpKQotICAg
ICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggYmM3NWQyZWE1
Y2VmZmNkYzRlYTdkYjg2YWYyOWI5NDg1YzcyMTRmOC4uM2EzMjcyMWViMWU5MmJjMTkwYTNkMGFm
ZWU1MjRkMTU1NjMxYzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iagogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVl
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwudmFs
dWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6
IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1
NCw3ICsxNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiLCAicmVhZG9ubHlWYWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwucmVhZG9ubHlWYWx1
ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDog
anNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTcz
LDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgfQogICAgIGlmIChKU1Zh
bHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5jYWNoZWRWYWx1ZSgpID8gaW1wbC5jYWNo
ZWRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IDApIDoganNOdWxsKCk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5zZXQoc3RhdGUt
PnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAicG9ydHMiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNBcnJheShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwucG9ydHMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtMjEwLDcgKzIxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlCiAgICAgfQogICAgIGlm
IChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVl
LmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmNhY2hlZFJlYWRv
bmx5VmFsdWUoKSA/IGltcGwuY2FjaGVkUmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgY2FzdGVk
VGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVlLnNldChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywg
cmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMzcsNyAr
MjM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmEKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
dmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNTcsNyArMjU3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2Fj
aGVkVmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTAsNyAr
MjkwLDcgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3cKIHsKICAgICBhdXRvKiBqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLT5p
bXBsKCksIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UtPndy
YXBwZWQoKSwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKIH0KIAogI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTM0MCw3ICszNDAsNyBAQCBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3RTZXJpYWxpegogVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZh
bHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3Jh
cHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggYzIzZGZlMmRjOTc4
YTRiYTQyNjMyOGQzNDUzNjQ3MjMwMDkzMWI3Zi4uNGU0Y2ZlODVhMjA3ZWUxYTc2ZjIzYmNjYWY4
MDJjMjc5ZjFlODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2wKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdB
dHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExvbmdM
b25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0y
MzcsNyArMjM3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImlt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8gaW1wbC5pbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KgogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwuYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKICAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0yODMsNyArMjgzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBKU08KICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0K
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTMxOSw3ICszMTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zNDUsNyArMzQ1LDcgQEAg
dm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0
aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAs
IDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIHNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQyNyw3ICs0
MjcsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIG5h
dGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00NjksNyArNDY5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
RnVuYyhFeGVjU3RhdGUqIHN0YXQKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJm
dW5jIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RU
eXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJn
c0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDAp
IHsKQEAgLTQ5MSw3ICs0OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgZmxvYXQgd2lkdGggPSBzdGF0ZS0+YXJndW1lbnQo
MCkudG9GbG9hdChzdGF0ZSk7CkBAIC01MzIsNyArNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVl
bmNlQXIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVu
Y2VBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZl
Y3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQ
dHJOYXRpdmVBcnJheTxTZXJpYWxpemVkU2NyaXB0VmFsdWUsIEpTU2VyaWFsaXplZFNjcmlwdFZh
bHVlPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OnRvV3JhcHBlZCkpOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlQXJyYXlBcmcoRXhl
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFibGVBcnJheUFyZyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSk7CkBAIC01NjYsNyArNTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVjU3QKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jV2l0aENsYW1wIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXJn
MSA9IDA7CkBAIC02MDMsNyArNjAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGkKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVy
dHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigp
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTYxNSw3ICs2
MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlw
ZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjU1LDcgKzY1
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlw
ZWRlZnMiLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxSZWZQdHI8VGVzdEV2
ZW50VGFyZ2V0Pj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxUZXN0RXZlbnRU
YXJnZXQsIEpTVGVzdEV2ZW50VGFyZ2V0PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNU
ZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCkpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFeGNlcHRpb24oCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9k
V2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbihlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBK
U1Rlc3RUeXBlZGVmc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCogY29udGUKIHsKICAgICBhdXRvKiBqc1Rlc3RUeXBlZGVmcyA9IGpzQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3Js
ZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwgJmpzVGVzdFR5cGVkZWZzLT5pbXBsKCksIGpzVGVzdFR5cGVkZWZzKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFR5cGVkZWZzLT53cmFwcGVkKCksIGpz
VGVzdFR5cGVkZWZzKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTc0
MCw3ICs3NDAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RUeXBlZGVmcwogVGVzdFR5cGVkZWZzKiBKU1Rl
c3RUeXBlZGVmczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXggNjRh
ZjMxODRhYmViNjM5ZjY0ZTgzY2Y3MjViZTg2YzEzNTAwMWIyNi4uZTJmY2JhZmIyMGUzYTRhY2U2
YzgxZGZkMWJhNGRmMTlhNmZkYzFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0xMjIsNyArMTIyLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25seShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJhdHRyaWJ1dGUiLCAicmVh
ZG9ubHkiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZG9ubHkoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSlNh
dHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqIGNvbnRleHQpCiB7CiAgICAgYXV0byoganNhdHRyaWJ1dGUgPSBqc0Nhc3Q8SlNhdHRy
aWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc2F0dHJpYnV0ZS0+aW1wbCgpLCBqc2F0dHJpYnV0ZSk7CisgICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc2F0dHJpYnV0ZS0+d3JhcHBlZCgpLCBqc2F0dHJpYnV0ZSk7CiB9CiAK
ICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBhdHRyaWJ1dGUqIGkKIGF0dHJpYnV0ZSogSlNhdHRyaWJ1dGU6OnRvV3JhcHBlZChKU0M6
OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0
PEpTYXR0cmlidXRlKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU3JlYWRvbmx5LmNwcAppbmRleCA1NGZjYThjNzc5MGI3OGRiZTE2MzhhZDk2ZDljODQ1MTNh
ZTc1ZDY1Li5jZWU4MjUyNzY2NTdmNTZjMzdlYzhkMjNjZWViYzg5YTIyZjQxNGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9u
bHkuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBKU3JlYWRvbmx5T3duZXI6OmZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAg
IGF1dG8qIGpzcmVhZG9ubHkgPSBqc0Nhc3Q8SlNyZWFkb25seSo+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQq
Pihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzcmVhZG9ubHktPmltcGwo
KSwganNyZWFkb25seSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc3JlYWRvbmx5LT53
cmFwcGVkKCksIGpzcmVhZG9ubHkpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRv
bmx5KiBpbXBsKQpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgcmVhZG9ubHkqIGltCiBy
ZWFkb25seSogSlNyZWFkb25seTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seSo+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCAzOTE0MDg1MWMyN2FkOWMzODZlMzgxODQ4OTQ4
NTRlMzk5ZDA5Mzk0Li5iMTI2MTI3ZWQyZjQ0N2I0NDZjOGFhMTVmYTBkMGY2NjljM2M5MmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2Qo
RXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcgYSBydW50
aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAgICAgICBpZiAodGhpc1ZhbHVlLmlu
aGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCi0gICAgICAgICAgICBpbnN0YW5jZSA9IHBs
dWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSkt
PmltcGwoKSk7CisgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxK
U0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAg
IGlmICghaW5zdGFuY2UpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYTM3NTVkOWYzZjg0N2Q5YjNmYmIwOGVhYmZkZWU2NTkwNTY3OGM1OS4u
ODVlNmQwYTk0MmQwNjg0MjFjMTg2MDg4MWFjZDZkOTcyN2E1YTZmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDM1LDcgKzQz
NSw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0
U3RhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0CiAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc2NyaXB0U3RhdGUsIGluc3BlY3RlZFdpbmRvdy0+
aW1wbCgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOworICAgIHJldHVybiBCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc2NyaXB0U3RhdGUsIGluc3BlY3Rl
ZFdpbmRvdy0+d3JhcHBlZCgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOwogfQogCiBJbnNw
ZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIEluc3BlY3RvckNvbnRyb2xsZXI6OmZ1bmN0aW9uQ2Fs
bEhhbmRsZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
ODM3YjZiY2I0NTlkZGFmMGUzMTk4NTAxOWFiMmQ1OGM0NWIyN2Y4Yi4uZDExNTE4ZjVlNzE0Nzcx
OTg2Njc0OWI4YTZlMTcwZWE0NTNmMjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC0yMDgxLDcgKzIwODEsNyBAQCBzdGF0aWMgV2ViRnJhbWVMb2FkVHlwZSB0b1dl
YkZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogICAgICAgICBhbnlX
b3JsZEdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxP
YmplY3RPYmopLT53aW5kb3coKTsKIAogICAgIC8vIEdldCB0aGUgZnJhbWUgZnJvbWUgdGhlIGds
b2JhbCBvYmplY3Qgd2UndmUgc2V0dGxlZCBvbi4KLSAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3Js
ZEdsb2JhbE9iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gYW55V29y
bGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9j
dW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsg
Ly8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4
IGZlZmMzYWI5NWY1MDVkZjliZTZjZWJjZmM0NzZkYjRjMGU0Mzc1NDEuLjdiNWM0ODQzN2YyNjA4
ZDgxY2I3YjkzZTVkMDFjMWM5YTQzMTExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgTlNVUkwg
KnRvTlNVUkwoY29uc3QgU3RyaW5nJiBzKQogc3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9
IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4ga2l0
KHdpbmRvdy0+aW1wbCgpLmZyYW1lKCkpOworICAgIHJldHVybiBraXQod2luZG93LT53cmFwcGVk
KCkuZnJhbWUoKSk7CiB9CiAKIFdlYlNjcmlwdERlYnVnZ2VyOjpXZWJTY3JpcHREZWJ1Z2dlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGY2
OWYxZTExNzVmY2QyMWI3ZjYyNjU1MjgyMTc2YzhlYTZmNDlkNDkuLmNlYjE4ZGMzMDM0MTU5ZDc4
MTlmZmM1OTI2ZjYwMDlkZDE0ZmIzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIwMDQs
NyArMjAwNCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAgICAgIGFueVdvcmxkR2xv
YmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9i
aiktPndpbmRvdygpOwogCiAgICAgLy8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9i
amVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgotICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFs
T2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2Jh
bE9iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgp
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5X
b3JsZCh3b3JsZC0+d29ybGQoKSwgc3RyaW5nLCB0cnVlKS5qc1ZhbHVlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGY4MDBjMjJm
Y2Y1MmM3YjM2NjY4MTRkZGEyNmI3NDQyYTFjNjQwYjcuLmY5YzI2MDY4MWVhZDg2NjdjNjBmOTNk
NzhiODQzNTdmNmM0NmM3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtNjgzLDcgKzY4Myw3IEBAIFdlYkZyYW1lKiBXZWJGcmFtZTo6
ZnJhbWVGb3JDb250ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQogICAgIGlmIChzdHJjbXAoZ2xv
YmFsT2JqZWN0T2JqLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiSlNET01XaW5kb3dTaGVsbCIp
ICE9IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nh
c3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpLT5pbXBsKCku
ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxs
Kj4oZ2xvYmFsT2JqZWN0T2JqKS0+d2luZG93KCktPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIHJl
dHVybiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogfQogCkBAIC03MjgsNyArNzI4
LDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxlbWVudCkK
ICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKEpTRWxlbWVudDo6aW5mbygpKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZvckVsZW1l
bnQoJmpzQ2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+aW1wbCgpKTsKKyAgICByZXR1
cm4gY291bnRlclZhbHVlRm9yRWxlbWVudCgmanNDYXN0PEpTRWxlbWVudCo+KHRvSlMoZWxlbWVu
dCkpLT53cmFwcGVkKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OnByb3Zpc2lvbmFsVVJMKCkg
Y29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264572</attachid>
            <date>2015-11-02 02:54:04 -0800</date>
            <delta_ts>2015-11-02 03:45:12 -0800</delta_ts>
            <desc>Fixing IDBObjectStore</desc>
            <filename>bug-150613-20151102115248.patch</filename>
            <type>text/plain</type>
            <size>425454</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3MTA0YmUyYWYzOTAy
YmY4ZDFlMjA3NzE4MWNkZWY1NDQxODE3Yy4uMTczNDRlYTdkNWQxOTU0NTlhZDJiMDQ0YjgzYTlk
ZmIzNDM1MTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4MyBAQAorMjAxNS0xMS0wMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbmFt
ZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVuYW1pbmcgaW1wbCB0byB3cmFwcGVk
IGluIGNsYXNzZXMgYW5kIGJpbmRpbmcgZ2VuZXJhdGVkIGNsYXNzZXMuCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6OnRpbWVkTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVycm9yTG9nKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRLaW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNB
dWRpb1RyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0JpcXVhZEZpbHRlck5vZGU6OnNldFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NT
UnVsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3BlcnR5
VmFsdWVGYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUdldHRlclBpeGVs
T3JQb3NQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndlYmtpdExpbmVE
YXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRX
ZWJraXRMaW5lRGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q2hhcmFjdGVyRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NoYXJhY3RlckRh
dGE6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OmFmdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDb21tYW5kTGluZUFQSUhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ29tbWFuZExpbmVBUElIb3N0OjpzdG9yYWdlSWQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvOjpn
ZXRSYW5kb21WYWx1ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5OjphbGdvcml0aG0pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NyeXB0b0tleVBhaXI6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tRXZlbnQ6OmRldGFpbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjphY3RpdmVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RET01X
aW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MRm9ybUVsZW1lbnRPck51bGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01Gb3JtRGF0YTo6YXBwZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01NaW1lVHlw
ZUFycmF5OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxv
d0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01OYW1lZEZsb3dD
b2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBsdWdp
bkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luQXJyYXk6Om5h
bWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NUGx1Z2luOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01TdHJpbmdMaXN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVN0cmlu
Z01hcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6
OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkQWxsb3dBY2Nlc3NGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFz
ZTo6SlNET01XaW5kb3dCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
cHJpbnRFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpz
dXBwb3J0c1Byb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnN1
cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRGcmFtZUdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNET01XaW5kb3dXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dJbmRl
eGVkREIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRFbnVtZXJhYmxlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRT
dHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
Z2V0UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRU
aW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRJbnRlcnZhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6
OnNldFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp3cmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBw
ZXI6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjpKU0RPTVdyYXBw
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RhdGFDdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGF0YUN1
ZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGF0YVRyYW5zZmVyOjp0eXBlcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVk
aW5nR3Jhdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50Ojpyb3Rh
dGlvblJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJ2
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1v
dGlvbkV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZl
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjphbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmJl
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBh
c3NIZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
d2Via2l0Q29tcGFzc0FjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50
YXRpb25FdmVudDo6YWJzb2x1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50
OjpwcmVwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
b2N1bWVudFR5cGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50VHlwZTo6YWZ0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudFR5cGU6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVt
ZW50OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphZnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OmFwcGVu
ZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V2ZW50OjpjbGlwYm9hcmREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRmlsZVJlYWRlcjo6cmVzdWx0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9u
Ojp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVkSXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbEhUTUxBbGxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEFsbENvbGxlY3Rpb246Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNFbGVtZW50Ojpw
cm9iYWJseVN1cHBvcnRzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNF
bGVtZW50Ojp0b0RhdGFVUkwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rp
b25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmFsbCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQ2Fs
bGluZ0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50V3JpdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRWxlbWVu
dDo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVk
SXRlbXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRnJhbWVFbGVtZW50OjpzZXRMb2NhdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTZWxl
Y3RFbGVtZW50OjppbmRleFNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MVGVt
cGxhdGVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTFRlbXBsYXRl
RWxlbWVudDo6Y29udGVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSGlzdG9yeTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0hp
c3Rvcnk6OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHVzaFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0luc3BlY3RvckZyb250
ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNNZWRpYVNvdXJjZVN0YXRlczo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVNv
dXJjZVN0YXRlczo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0
ZXM6OmZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjph
c3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU291cmNlU3RhdGVzOjpmYWNp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFubmVsOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlSW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojp2aXNpdEFkZGl0
aW9uYWxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6ZGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uT2JzZXJ2ZXJPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWRO
b2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjpuYW1l
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6cmVwbGFj
ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05v
ZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVJdGVyYXRvcjo6
dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlTGlzdE93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JTdHJp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9Ob2RlT3JTdHJpbmdWZWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQYW5uZXJOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFubmVyTm9kZTo6
c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFubmVyTm9kZTo6c2V0RGlz
dGFuY2VNb2RlbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5W
aWV3QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEdldENhbGxEYXRhKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQb3BT
dGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSVENTdGF0c1Jlc3Bv
bnNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUlRDU3RhdHNSZXNwb25zZTo6bmFt
ZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NW
R0xlbmd0aDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnNldFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTU3RvcmFnZTo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1N0
b3JhZ2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Z2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N1
YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6
ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6c2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5
cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrQ3VlT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrQ3VlOjp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJh
Y2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjpzZXRLaW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGV4dFRyYWNrTGlzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UcmFjayk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVHJhY2tFdmVudDo6dHJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
VHJlZVdhbGtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZp
c2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlk
ZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFj
a0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrTGlzdDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRT
aGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTRmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWIyZnYp
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhB
dHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXI6OnBvc3RNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29ya2VyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
QWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFt
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0
b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRvbVdpbmRvd0Zyb21FeGVjU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1t
OgorICAgICAgICAoK1tET01Ob2RlIF9ub2RlRnJvbUpTV3JhcHBlcjpdKToKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW06CisgICAgICAgIChKU0M6OmNyZWF0ZURPTVdyYXBw
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgX2lzU2FmZVNjcmlwdF0pOgorICAgICAgICAoK1tXZWJTY3Jp
cHRPYmplY3QgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOm9yaWdpblJvb3RPYmplY3Q6cm9vdE9i
amVjdDpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbik6CisgICAg
ICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rp
b25FeGNpdGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25Bbm90aGVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZl
bnRDb25zdHJ1Y3RvckF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3Ry
dWN0b3JBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3du
ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZl
bnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbkRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRUYXJnZXRPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRUYXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFeGNlcHRpb25O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5hbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50
YWxTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0
cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZU93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6Zmlu
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFw
cGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpS
ZWFkT25seVRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQnl0ZUF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNpZ25lZFNo
b3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0T2JqQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEludGVncmFs
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aENhbGxXaXRoQW5k
U2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11dGFibGVQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialN0cmljdEZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5dGVBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28pOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
U3RyaWN0RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVu
Y2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RSZXR1cm5pbmdTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRo
YXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRTdGF0ZVZvaWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2Jq
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc051bGxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFj
a0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdM
aXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
R2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0NSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlv
bldpdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21p
c2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iak93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPYmo6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0
aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnNP
d25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
czo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2Fj
aGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTnVsbGFibGVBcnJheUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzT3duZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc2F0dHJpYnV0ZVJlYWRvbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
YXR0cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRl
Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRv
bmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHlPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1ldGhvZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3Rh
dGUpOgorCiAyMDE1LTEwLTI5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIG1pbi1jb250ZW50IHJvdyBkb2VzIG5v
dCBhbHdheXMgc2hyaW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMjI3NzQ0NDc1OTRhZWJlN2Q2MThl
ZDc5NjFkYmM1YjlkMzNkZTU1Mi4uMDMwYWUzMDVkYzk3YmFiMzlmY2FiYzZlM2NkOGM1NjdlMDcw
NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTExLTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVuYW1l
IEpTRE9NV3JhcHBlci5pbXBsIHRvIEpTRE9NV3JhcHBlci53cmFwcGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmlu
Zzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29ybGQ6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKHRvV2ViRnJhbWUpOgorCiAyMDE1LTExLTAx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZd
IFN1cHBvcnQgR2VuZXJhdG9yIFN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDVjOGEwMTg5ZjVl
Y2M4MzhlZTEwOWFmNDE1ODZlNGZmMGRkZTJlMDcuLmViOWYzYTM2NTk4NzMzOWRiNjMxODYxMDQ3
ODhiYzA5ZjAwMjNlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0x
MS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIFJlbmFtZSBKU0RPTVdyYXBwZXIuaW1wbCB0byBKU0RPTVdyYXBwZXIud3JhcHBlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0
V29ybGQpOgorCiAyMDE1LTEwLTIyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgTW92ZSBtZW51IGNyZWF0aW9uIHRvIFdlYlZpZXcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA1OTE0ZTNhMDY4NDIxYzk2NTQ3OWNmNzFjYTQzMTA2NDUyM2E1Njg0Li42ZTk2MDVmNzQ5MmJm
MzY4YTI0YzBiMGQwZTA5NmVkNGRjMjdmOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTUtMTEtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4K
KworICAgICAgICBSZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8gSlNET01XcmFwcGVyLndyYXBw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDYx
MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmZy
YW1lRm9yQ29udGV4dCk6IFJlbmFtaW5nIGltcGwoKSB0byB3cmFwcGVkKCkuCisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpjb3VudGVyVmFsdWUpOiBEaXR0by4KKwogMjAxNS0xMS0wMSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
VXNlIFJ1bkxvb3AgaW4gV29ya1F1ZXVlIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KaW5kZXggMTZiYjE4YmE1YjI2ZTE2OWZiY2VmYWM1ZTQ2YWM2ZTEyMzg5NTVkYi4uZTQ1
MzJjOGExNWZkNTYyOWQyYTE4NTg4Zjk3YjE1NGEyMDhmMGRiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbQpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqaXRlbSwgSlNDCiBKU0M6
OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEhUTUxW
aWRlb0VsZW1lbnQqIHBhcmVudCA9IGltcGwoKS5wYXJlbnRFbGVtZW50KCk7CisgICAgSFRNTFZp
ZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAo
IXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBKU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudDo6dGltZWRNZXRhRGF0YShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiBKU0M6OkpT
VmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9nKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgSFRNTFZpZGVvRWxl
bWVudCogcGFyZW50ID0gaW1wbCgpLnBhcmVudEVsZW1lbnQoKTsKKyAgICBIVE1MVmlkZW9FbGVt
ZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPnBsYXllcigpKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIApA
QCAtNDE2LDcgKzQxNiw3IEBAIEpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50OjphY2Nlc3NMb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zCiBKU0M6OkpTVmFsdWUg
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZXJyb3JMb2coSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBIVE1MVmlkZW9FbGVtZW50KiBw
YXJlbnQgPSBpbXBsKCkucGFyZW50RWxlbWVudCgpOworICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBh
cmVudCA9IHdyYXBwZWQoKS5wYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBh
cmVudC0+cGxheWVyKCkpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAppbmRleCA0MmYxMmYwZWQyZDEz
YzRlNzVlMDY0YTMzNmJiNzNjMGFkNTM1ZDM1Li5kNDVjZjZkMmM4YThlZTJhZDdjMzdhZGJkZTcw
OGY0ZGRlNGE1YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0
dHJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3Rv
bS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXR0
cjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS5vd25lckVsZW1lbnQoKSkKKyAgICBp
ZiAoRWxlbWVudCogZWxlbWVudCA9IHdyYXBwZWQoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1
c3RvbS5jcHAKaW5kZXggMWM5YzMyOGIxMjEyNWQ5YmJlMzkyY2UzMWUyNjM4MTZlMmYxMzRlZC4u
MzNmNzY4ZTNjODM0NTNkYWU5NzUwMmY1MzQ4M2NkM2RkMjliZTg3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Q3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWltcGwoKS5zZXRCdWZmZXIoYnVmZmVyKSkKKyAg
ICBpZiAoIXdyYXBwZWQoKS5zZXRCdWZmZXIoYnVmZmVyKSkKICAgICAgICAgc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsICJBdWRpb0J1ZmZl
ciB1bnN1cHBvcnRlZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCmluZGV4IDM2ZjMxZDlk
NjJlY2Q3OGZkMWFhZjE5MWMyMmI5YTU1MDAyMjc3M2QuLjE1MzE4MTVhYzYzNzVkOTYwZmViMjM3
NWY1ZmMzZTE1N2M2YTliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNBdWRpb1RyYWNrOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgp
KSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiB2
b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVk
KCkuc2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgSlNBdWRpb1RyYWNr
OjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8m
IHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldExh
bmd1YWdlKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldExhbmd1YWdlKHN0cmluZyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3Rv
bS5jcHAKaW5kZXggODMxZTQyNWM4NjVkNGI4NTdkM2FjNDBhOGVlOTdhZmJhYWQyNWMzYS4uNmZk
MWE1MDQwMjUwZTdkNDc3NmM2ZTk4ZjU0NjJlOTgzYjE1OGYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQXVkaW9UcmFja0xpc3Q6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS5lbGVtZW50KCkpKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuZWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCmluZGV4IGY2ZmE4NmY1YzM3NGZlYmJjMGI4MWJm
ZmNhZmM1ZWVkY2E0MWIzMWUuLjkyMWJhZWYzYmRlMjkzZDhhMTdjMjM2ZjI2NGUyMTFiOThiYzYw
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVy
Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRG
aWx0ZXJOb2RlQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEpTQmlxdWFkRmlsdGVy
Tm9kZTo6c2V0VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogI2lmIEVOQUJM
RShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAg
IHVpbnQzMl90IHR5cGUgPSB2YWx1ZS50b1VJbnQzMigmc3RhdGUpOwotICAgICAgICBpZiAoIWlt
cGwoKS5zZXRUeXBlKHR5cGUpKQorICAgICAgICBpZiAoIXdyYXBwZWQoKS5zZXRUeXBlKHR5cGUp
KQogICAgICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVR5
cGVFcnJvcigmc3RhdGUsICJJbGxlZ2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBKU0JpcXVhZEZpbHRlck5v
ZGU6OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgewogICAgICAgICBTdHJpbmcgdHlwZSA9IHZhbHVlLnRvU3RyaW5nKCZz
dGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgICAgIGlmICh0eXBlID09ICJsb3dwYXNzIiB8fCB0
eXBlID09ICJoaWdocGFzcyIgfHwgdHlwZSA9PSAiYmFuZHBhc3MiIHx8IHR5cGUgPT0gImxvd3No
ZWxmIiB8fCB0eXBlID09ICJoaWdoc2hlbGYiIHx8IHR5cGUgPT0gInBlYWtpbmciIHx8IHR5cGUg
PT0gIm5vdGNoIiB8fCB0eXBlID09ICJhbGxwYXNzIikgewotICAgICAgICAgICAgaW1wbCgpLnNl
dFR5cGUodHlwZSk7CisgICAgICAgICAgICB3cmFwcGVkKCkuc2V0VHlwZSh0eXBlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCmluZGV4IGZmMjYzMDc4ODMxZjNjOTcxMTljN2Ew
OTlhNDRkMDIyY2YzYjlhZTIuLjBkMzM3Nzc5NjkzMTEwZmNhOTdiY2ExY2MzMWU2OTgyMWQ4MWQ2
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNDU1NSdWxl
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmaW1wbCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSogcnVsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKaW5kZXgg
ODllOTkyMTUwNmZmNTBlODFlMGM4YjhiODM5ZjJlOTg2YmRhOTNiNC4uMDI4NDQ0ZmUzZGQ5MThi
YzBkMDgwNTBlOWRiYzI4NjI5MjdhNWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgYm9vbCBK
U0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGEKICAgICBKU0NTU1J1bGVMaXN0KiBqc0NTU1J1bGVMaXN0ID0ganND
YXN0PEpTQ1NTUnVsZUxpc3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgaWYgKCFq
c0NTU1J1bGVMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPmlt
cGwoKS5zdHlsZVNoZWV0KCkpCisgICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBq
c0NTU1J1bGVMaXN0LT53cmFwcGVkKCkuc3R5bGVTaGVldCgpKQogICAgICAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdHlsZVNoZWV0KSk7Ci0gICAgaWYgKENTU1J1
bGUqIGNzc1J1bGUgPSBqc0NTU1J1bGVMaXN0LT5pbXBsKCkuaXRlbSgwKSkKKyAgICBpZiAoQ1NT
UnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QtPndyYXBwZWQoKS5pdGVtKDApKQogICAgICAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChjc3NSdWxlKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggZGUyZjkwNzM0NWE3Njhm
NWNlZjM2ODg0OTYyN2NiNDJkNWU0NTFlYy4uOTFiYTMxMjI5OTA5ZDY0OGZjOTBhN2RmNDJmM2E1
ZTY5MjNjZTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0QWRkaXRp
b25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgm
d3JhcHBlZCgpKSk7CiB9CiAKIGNsYXNzIENTU1Byb3BlcnR5SW5mbyB7CkBAIC0yNzgsNyArMjc4
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGdldFByb3BlcnR5VmFsdWVGYWxsYmFjayhFeGVj
U3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXIKIHsKICAgICAvLyBJZiB0aGUgcHJvcGVydHkg
aXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwKICAgICAvLyBpdCBj
YW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT5pbXBsKCkuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUgY3NzUHJvcGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KEV4ZWNT
dGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNpZ25lZCBwcm9w
ZXJ0eUlEKQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9w
ZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0CiAgICAg
Ly8gcG9zVG9wIHJldHVybnMgIkNTUyB0b3AiIGFzIG51bWJlciB2YWx1ZSBpbiB1bml0IHBpeGVs
cyBfaWZfIGl0cyBhCiAgICAgLy8gcG9zaXRpb25lZCBlbGVtZW50LiBpZiBpdCBpcyBub3QgYSBw
b3NpdGlvbmVkIGVsZW1lbnQsIHJldHVybiAwCiAgICAgLy8gZnJvbSBNU0lFIGRvY3VtZW50YXRp
b24gRklYTUU6IElNUExFTUVOVCBUSEFUIChEaXJrKQotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9
IHRoaXNPYmotPmltcGwoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRo
aXNPYmotPndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwogICAgIGlmICh2KSB7CiAgICAgICAgIGlmICh2
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGlj
X3BvaW50ZXJfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odiktPmdldEZsb2F0VmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVj
LCBKU0NTU1N0CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5zaWduZWQgcHJv
cGVydHlJRCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlzT2JqLT5pbXBsKCkuZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3Bl
cnR5SUQpKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3Bl
cnR5SUQpKTsKICAgICBpZiAodikKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMs
IHYtPmNzc1RleHQoKSk7CiAKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJbmZvLnByb3BlcnR5
SUQpOwotICAgIGltcGwoKS5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1
ZSwgaW1wb3J0YW50LCBlYyk7CisgICAgd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJv
cGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTMsMTEgKzM1MywxMSBAQCBKU1Zh
bHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUm
IHN0YXRlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gaW1wbCgpLmdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNz
c1ZhbHVlID0gd3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoIWNzc1ZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBnbG9iYWxP
YmplY3QoKS0+d29ybGQoKS5tX2Nzc1ZhbHVlUm9vdHMuYWRkKGNzc1ZhbHVlLmdldCgpLCByb290
KCZpbXBsKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgor
ICAgIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5hZGQoY3NzVmFsdWUu
Z2V0KCksIHJvb3QoJndyYXBwZWQoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6
OmZpbmFsaXplKCkuCiAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoY3NzVmFsdWUpKTsKIH0KIApAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlCiAgICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1ZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVD
dXN0b20uY3BwCmluZGV4IGVkNTEyNTMzZWQzM2EzOTIyNTJiZjY0NTJjMjFlYmM5YWVhOWExNzYu
LmQ4ZjQ3MDVhZWJkMmFjNGY3MmFjYjA5YjAyOGJkNTM3MzIxMDJlYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw3
IEBAIGJvb2wgSlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiAgICAgaWYgKCFqc0NTU1ZhbHVlLT5oYXNDdXN0
b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAg
dm9pZCogcm9vdCA9IHdvcmxkLT5tX2Nzc1ZhbHVlUm9vdHMuZ2V0KCZqc0NTU1ZhbHVlLT5pbXBs
KCkpOworICAgIHZvaWQqIHJvb3QgPSB3b3JsZC0+bV9jc3NWYWx1ZVJvb3RzLmdldCgmanNDU1NW
YWx1ZS0+d3JhcHBlZCgpKTsKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7CkBAIC02MCw4ICs2
MCw4IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU0NTU1ZhbHVlKiBqc0NTU1Zh
bHVlID0ganNDYXN0PEpTQ1NTVmFsdWUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKLSAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLT5p
bXBsKCkpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+aW1wbCgpLCBq
c0NTU1ZhbHVlKTsKKyAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVl
LT53cmFwcGVkKCkpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+d3Jh
cHBlZCgpLCBqc0NTU1ZhbHVlKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1ZhbHVlKiB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAppbmRleCBiOTkzYmRjMjQyYjQyYzc5M2MyMWU5ZDA0NzIxOTQ2YjM5
MGNlN2I3Li5kYTc1ODAyZWRmZmExNjcwMjhlZDhlMGIxMjRhY2ExYzQ4NDMyM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC01Myw5ICs1Myw5IEBAIHN0YXRpYyBDYW52YXNT
dHlsZSB0b0hUTUxDYW52YXNTdHlsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlKQogICAgICAg
ICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
dmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTQ2FudmFzR3JhZGllbnQ6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzR3JhZGllbnQq
PihvYmplY3QpLT5pbXBsKCkpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoJmpzQ2FzdDxK
U0NhbnZhc0dyYWRpZW50Kj4ob2JqZWN0KS0+d3JhcHBlZCgpKTsKICAgICBpZiAob2JqZWN0LT5p
bmhlcml0cyhKU0NhbnZhc1BhdHRlcm46OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBDYW52YXNT
dHlsZSgmanNDYXN0PEpTQ2FudmFzUGF0dGVybio+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAg
IHJldHVybiBDYW52YXNTdHlsZSgmanNDYXN0PEpTQ2FudmFzUGF0dGVybio+KG9iamVjdCktPndy
YXBwZWQoKSk7CiAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiB9CiAKQEAgLTY3LDEyICs2Nywx
MiBAQCBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21taXQoRXhlY1N0YXRl
JikKIAogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoRXhl
Y1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCBpbXBsKCkuc3Ryb2tlU3R5bGUoKSk7CisgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnN0cm9rZVN0eWxlKCkpOwogfQogCiB2b2lkIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCYgY29udGV4dCA9
IGltcGwoKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcihhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZzdGF0ZSkpOwogICAgICAgICByZXR1cm47
CkBAIC04MiwxMiArODIsMTIgQEAgdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U3Ryb2tlU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIAogSlNWYWx1ZSBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLmZp
bGxTdHlsZSgpKTsKKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFw
cGVkKCkuZmlsbFN0eWxlKCkpOwogfQogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmICh2YWx1ZS5pc1N0
cmluZygpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGFzU3RyaW5nKHZhbHVlKS0+
dmFsdWUoJnN0YXRlKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Ondl
YmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgZGFzaCA9IGltcGwoKS5nZXRMaW5lRGFzaCgpOworICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIGRhc2ggPSB3cmFwcGVkKCkuZ2V0TGluZURhc2goKTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGxpc3Q7CiAgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
ZGFzaC5lbmQoKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAog
ICAgICAgICBkYXNoLmFwcGVuZChlbGVtKTsKICAgICB9CiAKLSAgICBpbXBsKCkuc2V0V2Via2l0
TGluZURhc2goZGFzaCk7CisgICAgd3JhcHBlZCgpLnNldFdlYmtpdExpbmVEYXNoKGRhc2gpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRl
eCBlNWRkNmU4ODEyNzZjODU2MGFmYmQ1ZDk1MTNiMjA3ZjIyMmRkZGZkLi43ZjUwNDM1ZjVhNjNk
MjU4ZDJjMDNmY2NhMGYzNzg1ZDZiOWY0YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmNhbnZhcygpKSk7
CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qod3JhcHBlZCgpLmNhbnZhcygpKSk7CiB9
CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKaW5k
ZXggY2I4MzFkMDRjZmI4ZWY4NTY4NDc2YmQ4ZmRlM2Y4ZjgyZTlhN2M5MS4uNjAxN2YxZjYwOWZj
NmRmM2ViZDk1M2U0ODUwMzM4YWJkM2Q5MWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCku
YmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5i
ZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00NSw3ICs0
NSw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkK
IEpTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNDaGFyYWN0
ZXJEYXRhOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6
OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAppbmRleCBiMDY1ZDVjZmYxY2YxYjUwNjQ3
NDU5NjJiZGNkOGQ2MWRmNzY3ZjUyLi41NWM3OTIxMmExMjQwZjJmYmJiODBmYjZmZTBmNTRjY2Rk
ZTJiN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRM
aW5lQVBJSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdGVkT2JqZWN0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdCogb2JqZWN0ID0gaW1wbCgpLmluc3BlY3RlZE9iamVjdCgpOworICAgIENvbW1hbmRM
aW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3QqIG9iamVjdCA9IHdyYXBwZWQoKS5pbnNwZWN0
ZWRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0Ojpn
ZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAogICAgIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4gbGlzdGVuZXJzQXJyYXk7
Ci0gICAgaW1wbCgpLmdldEV2ZW50TGlzdGVuZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJheSk7
CisgICAgd3JhcHBlZCgpLmdldEV2ZW50TGlzdGVuZXJzSW1wbChub2RlLCBsaXN0ZW5lcnNBcnJh
eSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRl
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc0FycmF5LnNpemUoKTsgKytp
KSB7CkBAIC0xMjksNyArMTI5LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6aW5z
cGVjdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPj0g
MikgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBvYmplY3Qoc3RhdGUudm0oKSwg
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBoaW50cyhzdGF0ZS52bSgpLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0gICAg
ICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpLCBo
aW50cy50b0luc3BlY3RvclZhbHVlKCZzdGF0ZSkpOworICAgICAgICB3cmFwcGVkKCkuaW5zcGVj
dEltcGwob2JqZWN0LnRvSW5zcGVjdG9yVmFsdWUoJnN0YXRlKSwgaGludHMudG9JbnNwZWN0b3JW
YWx1ZSgmc3RhdGUpKTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE0
Miw3ICsxNDIsNyBAQCBKU1ZhbHVlIEpTQ29tbWFuZExpbmVBUElIb3N0OjpkYXRhYmFzZUlkKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBKU0RhdGFiYXNlOjp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChkYXRhYmFzZSkK
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLmRhdGFiYXNl
SWRJbXBsKGRhdGFiYXNlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3Rh
dGUsIHdyYXBwZWQoKS5kYXRhYmFzZUlkSW1wbChkYXRhYmFzZSkpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgSlNWYWx1ZSBKU0NvbW1hbmRMaW5l
QVBJSG9zdDo6c3RvcmFnZUlkKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBTdG9yYWdlKiBzdG9y
YWdlID0gSlNTdG9yYWdlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIGlmIChzdG9yYWdlKQotICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRl
LCBpbXBsKCkuc3RvcmFnZUlkSW1wbChzdG9yYWdlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpKTsKIAog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwCmluZGV4IGQwN2JlYWNhMTVhNTQ3MmI0NjkwYWFjNDVjMWFk
NzU0Y2Y1ZDlhMzkuLjY4N2VjZDFiNWI1NzNmYmJiMmI1MDk5ZGM3ZWIxZjQ1ODc4OTZhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgSlNWYWx1ZSBKU0NyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLmdldFJhbmRvbVZhbHVlcyhhcnJheUJ1ZmZl
clZpZXcuZ2V0KCksIGVjKTsKKyAgICB3cmFwcGVkKCkuZ2V0UmFuZG9tVmFsdWVzKGFycmF5QnVm
ZmVyVmlldy5nZXQoKSwgZWMpOwogCiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvS2V5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvS2V5Q3VzdG9tLmNwcAppbmRleCBhZDgxZTRkNDViMWU2MWVhZTE4NzBhYWVjNzNkZTNhZTVk
YmM4OWY1Li41ODU5NGJlZjJkYjI5YTJmMDk3NWVjOTlmZmNhZjg0MDUxZGI5ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNDcnlwdG9LZXk6OmFs
Z29yaXRobShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgSlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyIGJ1aWxkZXIoJnN0YXRlKTsKLSAgICBpbXBsKCkuYnVpbGRBbGdvcml0aG1E
ZXNjcmlwdGlvbihidWlsZGVyKTsKKyAgICB3cmFwcGVkKCkuYnVpbGRBbGdvcml0aG1EZXNjcmlw
dGlvbihidWlsZGVyKTsKICAgICByZXR1cm4gYnVpbGRlci5yZXN1bHQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAK
aW5kZXggOWZkYjg5YmMyN2Y2OGEyMmEzMmQ5Yzk5NGJlZjI4ZGMxMjMyOTc5Zi4uYjRhZDA0NjIy
Y2ZmZGYyODgyNTAzZDU2Mjg5NTMwY2ExOTNjNWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwCkBAIC0zNCw4ICszNCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0NyeXB0b0tleVBhaXI6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KGltcGwoKS5wdWJsaWNLZXkoKSk7Ci0gICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KGltcGwoKS5wcml2YXRlS2V5KCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh3
cmFwcGVkKCkucHVibGljS2V5KCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh3cmFwcGVk
KCkucHJpdmF0ZUtleSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FdmVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcAppbmRleCBh
ZjE0OWRhYWYwNTQyNTEyM2ZlODg2OTQ5OWQ1YjdiZWY1ODAzZTVhLi5jNTU2YzllMmU1MDBhNTc1
N2I3MmMzMGJkYWY1YzYwYjUxYjBlMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBKU1ZhbHVlIEpTQ3VzdG9tRXZlbnQ6OmRldGFpbChFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogewotICAgIEN1c3RvbUV2ZW50JiBldmVudCA9IGltcGwoKTsKKyAg
ICBDdXN0b21FdmVudCYgZXZlbnQgPSB3cmFwcGVkKCk7CiAgICAgCiAgICAgaWYgKGV2ZW50LmRl
dGFpbCgpLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
CmluZGV4IGIyODdjNmI4OTk2MjdiNDE4MDg5OThiMjY3NmE5MWU1Yjc4MTI1MmEuLjYwYzU3Zjhk
M2ExOTNkODJkYzNjNjExNDUxZDQ4ZTYyNzIzM2JkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgICAgIGNhbGxUeXBlID0gbV9jdXN0b21SZXNv
bHZlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEobV9jdXN0b21SZXNvbHZlci5nZXQoKSwg
Y2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE0MzEyPiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJIENvbnNvbGUgTWVzc2FnZSBzaG91bGQg
aW5jbHVkZSBMaW5lLCBDb2x1bW4sIGFuZCBTb3VyY2VVUkwKLSAgICAgICAgICAgIGlmIChQYWdl
Q29uc29sZUNsaWVudCogY29uc29sZSA9IG1fZ2xvYmFsT2JqZWN0LT5pbXBsKCkuY29uc29sZSgp
KQorICAgICAgICAgICAgaWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxP
YmplY3QtPndyYXBwZWQoKS5jb25zb2xlKCkpCiAgICAgICAgICAgICAgICAgY29uc29sZS0+YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRl
cmFsKCJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBt
ZXRob2QuIikpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAzMDJjN2E5YTA2
NzRhMGY4ZTBkYTFjMWNlYzAzN2E1NGQ2MjQ5MzgwLi4yMGVmNjA5MTMxOTA2ZTM4ZjNkMjM3ZTcy
ZWM5YTI3ZjQzNWQzMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uLCBDYWNoZWRTY3JpcHQqIGNhY2hlZAogCiAg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKEpTRE9NV2luZG93
KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KSkgewot
ICAgICAgICBpZiAoIXdpbmRvdy0+aW1wbCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQorICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE1LDEyICs1MTUsMTIg
QEAgdWludDY0X3QgdG9VSW50NjQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRl
Z2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIAogRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3co
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCk7CiB9CiAKIERPTVdpbmRvdyYgZmly
c3RET01XaW5kb3coRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBhc0pTRE9NV2luZG93
KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdyhleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24gcmVwb3J0
aW5nT3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggMTNmZGI1MmQ2YzI1MzE5
YzE5MzhhNzQyOTIyNDIyMDZhY2ZlYzY3OC4uYjA0OGFmOTEzZDJmYjk2NzE2ZDUxNWFmMzA1ZWJi
OTQ2YjY2NzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01G
b3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01G
b3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgSFRNTEZvcm1FbGVtZW50KiB0b0hUTUxGb3JtRWxlbWVudE9yTnVsbChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKEpTSFRNTEZvcm1FbGVt
ZW50OjppbmZvKCkpID8gJmpzQ2FzdDxKU0hUTUxGb3JtRWxlbWVudCo+KGFzT2JqZWN0KHZhbHVl
KSktPmltcGwoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKEpTSFRNTEZv
cm1FbGVtZW50OjppbmZvKCkpID8gJmpzQ2FzdDxKU0hUTUxGb3JtRWxlbWVudCo+KGFzT2JqZWN0
KHZhbHVlKSktPndyYXBwZWQoKSA6IG51bGxwdHI7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNET01Gb3JtRGF0YShFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NCw5
ICs2NCw5IEBAIEpTVmFsdWUgSlNET01Gb3JtRGF0YTo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgICAgICAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpID49IDMgJiYgIXN0YXRlLmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdGF0ZS5hcmd1bWVudCgyKS50b1N0cmlu
Zygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgICAgICAgICAgaW1wbCgpLmFwcGVuZChuYW1l
LCBKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHdyYXBw
ZWQoKS5hcHBlbmQobmFtZSwgSlNCbG9iOjp0b1dyYXBwZWQodmFsdWUpLCBmaWxlbmFtZSk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW1wbCgpLmFwcGVuZChuYW1lLCB2YWx1ZS50b1N0
cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKKyAgICAgICAgICAgIHdyYXBwZWQoKS5hcHBl
bmQobmFtZSwgdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAppbmRleCA0MzEyYWUyNzY5
NWUyODZmNzc5MmI0MGUzZGQ1Yzc4NmU4MzY5YzAyLi43NThjYjU4ZDJiMGZjNmQwNWFmYWI1YjE5
NmJiYzZhOTczZWJkYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFp
dGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwCmlu
ZGV4IDBkZDU0NTEyMTdkYzgwOGRkM2U5ZjUyYWJkMmI0ZmZjZDY0ZjhiM2YuLjRmZjEyNjI5Mjdj
ZGNhZGMyYWEyYTllYmIwNmE0MWQ0MzA4MzA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNw
cApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgYXV0byBpdGVtID0gd3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5B
cnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcAppbmRleCAyNjY5ZDgzN2RmMjkzNDY1MjM1YTg5NDI1MTQyZWY2YzE3NDk4
MzA2Li41M2I0YjQ1NzMyNzNlNTIzNGRiMzY4ZDBiMDZiNTk1Y2IyOWRjNGRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNw
cApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBib29sIEpTRE9NUGx1
Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8g
aXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAppbmRl
eCAxYTc1ODZkYmZmYzAzMjNiODExYjU1N2UzOWY1NThiNzBiY2YwM2U3Li5jY2ZjYTM0OWYyZmRm
ODc0NGVkYTg4M2EwOTI5YWRlYWM1YjIxMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCkBAIC0yOSw3ICsyOSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBh
dXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKCFpdGVtKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCmluZGV4IGZkNDAxYjI5MDVmNjkxZjZkZmZmZGI1
ZDg1ZGQ0MjUzNGFkZjI4OWIuLjViZDMzY2IyZTUwMzgzY2I3M2VmYTdiMjFlZTVjNjFiN2I2ZWFh
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdM
aXN0Q3VzdG9tLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gSlNET01TdHJpbmdMaXN0Ojp0b1dyYXBwZWQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0RPTVN0cmlu
Z0xpc3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTRE9NU3RyaW5nTGlzdCo+
KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01T
dHJpbmdMaXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+d3JhcHBlZCgpOwogCiAgICAgaWYgKCFpc0pT
QXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAppbmRleCA5YWY4NDVj
MTgyMGI2YTQ0OTE4OTM0ZWUzMTAyMTVlNjhkNzRkMzU1Li4yMjcxZmQ5YWI5YTdjYWQwZTNhM2I1
OGM5YjkwZTM4N2YwODA5NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgSlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByCiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBuYW1lSXNWYWxpZDsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGl0ZW0gPSBpbXBsKCkuaXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
LCBuYW1lSXNWYWxpZCk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpdGVtID0gd3JhcHBlZCgp
Lml0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZUlzVmFsaWQpOwog
ICAgIGlmIChuYW1lSXNWYWxpZCkgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBp
dGVtKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEpTRE9N
U3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcAogewogICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NU3RyaW5nTWFwKj4ob2JqZWN0KTsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAg
ICB0aGlzT2JqZWN0LT5pbXBsKCkuZ2V0TmFtZXMobmFtZXMpOworICAgIHRoaXNPYmplY3QtPndy
YXBwZWQoKS5nZXROYW1lcyhuYW1lcyk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG5hbWVzW2ldKSk7CkBA
IC02NSw3ICs2NSw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBKU0RPTVN0cmluZ01h
cCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVN0cmluZ01hcCo+KGNlbGwpOwogICAgIGlmIChw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPmltcGwoKS5kZWxldGVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZGVsZXRlSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmRleCkKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1YKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUs
IGVjKTsKKyAgICB3cmFwcGVkKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgcmV0dXJuICFlYzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcAppbmRleCBiZGQ0ODc3ODQ5ZWNhN2NjYzkxYmI2ZGE1
YmM0M2QxNjYyOGRkZGNlLi41NGY3NWQwYTE5ZTY0ZTcyNWQ1NGIwOTQzMTA3ZjYwOWUyNTNiZDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RD
dXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBAIEpTVmFsdWUgSlNET01Ub2tlbkxpc3Q6OnRvZ2ds
ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIE9wdGlvbmFsPGJvb2w+IGZvcmNlID0gc3RhdGUuYXJn
dW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE51bGxvcHQgOiBPcHRpb25hbDxib29sPihzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbCgpLnRvZ2dsZSh0b2tlbiwgZm9yY2Us
IGVjKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4od3JhcHBlZCgpLnRvZ2dsZSh0
b2tlbiwgZm9yY2UsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCmluZGV4IDY0YWFiNmUwZDMzYTkwNmQzYzAyMTZiMWM3ZWNlOGY4ZTg4Yjk3
MTAuLmY4MDNkYmVjYjE5NGE1NjVmOThhY2U3ZWQ2NTc1MjA2NjhkMzhiNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNz
RnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coZXhlYywgYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KS0+aW1wbCgpKTsKKyAgICByZXR1cm4g
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGFzSlNE
T01XaW5kb3codGhpc09iamVjdCktPndyYXBwZWQoKSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBK
U0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKQEAgLTcw
LDcgKzcwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNl
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2gKIEpTRE9NV2luZG93QmFzZTo6SlNE
T01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9N
V2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgIDogSlNET01HbG9i
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJnNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKICAgICAsIG1fd2luZG93Q2xvc2VXYXRjaHBvaW50cygod2luZG93ICYmIHdp
bmRvdy0+ZnJhbWUoKSkgPyBJc1dhdGNoZWQgOiBJc0ludmFsaWRhdGVkKQotICAgICwgbV9pbXBs
KHdpbmRvdykKKyAgICAsIG1fd3JhcHBlZCh3aW5kb3cpCiAgICAgLCBtX3NoZWxsKHNoZWxsKQog
ICAgICwgbV9wcml2YXRlRnVuY3Rpb25zKHZtKQogewpAQCAtMTM0LDI1ICsxMzQsMjUgQEAgdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQoKQogewotICAgIEFTU0VSVChtX2ltcGwtPmRvY3VtZW50
KCkpOworICAgIEFTU0VSVChtX3dyYXBwZWQtPmRvY3VtZW50KCkpOwogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91
Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9j
dW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV9pbXBsLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBv
aW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRv
SlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01XaW5kb3dCYXNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbXBsLT5kb2N1bWVu
dCgpOworICAgIHJldHVybiBtX3dyYXBwZWQtPmRvY3VtZW50KCk7CiB9CiAKIHZvaWQgSlNET01X
aW5kb3dCYXNlOjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
CiB7Ci0gICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkuZnJhbWUoKSwgbWVzc2Fn
ZSk7CisgICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZSh3cmFwcGVkKCkuZnJhbWUoKSwgbWVz
c2FnZSk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyhjb25z
dCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7
Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJh
bWUqIGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBKU0RP
TVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmpl
Y3QpCiBib29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBK
U0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0g
ICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUq
IGZyYW1lID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTUsMTYgKzE5NSwxNiBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0VG9QcmV2ZW50SW5maW5pdGVSZWN1cnNpb25X
aGVuQ2xvc2luZ1BhZwogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlw
dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93
QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9i
amVjdCk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKTsKLSAgICBQYWdl
KiBwYWdlID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnBhZ2UoKTsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpOworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuZnJhbWUoKS0+cGFnZSgpOwogICAgIHJldHVybiBzaG91bGRJbnRlcnJ1
cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldoZW5DbG9zaW5nUGFnZShwYWdlKTsK
IH0KIAogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBjb25zdCBKU0RPTVdp
bmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2Uq
PihvYmplY3QpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKSk7Ci0gICAg
UGFnZSogcGFnZSA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT5wYWdlKCk7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKTsKKyAgICBQYWdlKiBwYWdlID0gdGhp
c09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnBhZ2UoKTsKIAogICAgIGlmIChzaG91bGRJbnRl
cnJ1cHRTY3JpcHRUb1ByZXZlbnRJbmZpbml0ZVJlY3Vyc2lvbldoZW5DbG9zaW5nUGFnZShwYWdl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBKU0RPTVdp
bmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNHbG9i
YWxPYmplY3QqIG8KIFJ1bnRpbWVGbGFncyBKU0RPTVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBjb25zdCBKU0RP
TVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jh
c2UqPihvYmplY3QpOwotICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPmltcGwoKS5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBSdW50aW1lRmxhZ3MoKTsKICAgICByZXR1
cm4gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVGbGFncygpOwpAQCAtMzI4LDcg
KzMyOCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2lu
dHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cpCiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBK
U0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZU5h
bWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSkKIHsKICAgICBKU0RPTVdpbmRvd0Jh
c2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmpl
Y3QpOwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1w
bCgpLmRvY3VtZW50KCkpCisgICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5t
b2R1bGVMb2FkZXIoKS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZU5hbWUsIGlt
cG9ydGVyTW9kdWxlS2V5KTsKICAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRl
ZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5l
ZCgpKTsKQEAgLTMzNyw3ICszMzcsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdp
bmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdAogSlNDOjpK
U0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUgbW9kdWxlS2V5KQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9
IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFJl
ZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZG9jdW1lbnQoKSkK
KyAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5m
ZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZUtleSk7CiAgICAgSlNDOjpKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWpl
Y3QoZXhlYywganNVbmRlZmluZWQoKSk7CkBAIC0zNDYsNyArMzQ2LDcgQEAgSlNDOjpKU0ludGVy
bmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xv
YmFsT2JqZWN0KgogSlNDOjpKU1ZhbHVlIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZh
bHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCkK
IHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3Vt
ZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmRvY3VtZW50KCkpCisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LCBleGVjLCBtb2R1bGVLZXksIG1vZHVsZVJlY29yZCk7CiAgICAgcmV0dXJuIEpTQzo6anNVbmRl
ZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKaW5kZXggMTA3NjQwYzE3NjhmYjdkODJlNzk0YjEwNmYwMjNiMjkxNDM4OWY5Zi4uZDY5OWE1
YWU1N2I3ZjcyMmVhYmE0ODgyNzA2YzFhNGUxMDFmM2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwog
Ci0gICAgICAgIERPTVdpbmRvdyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAg
ICAgICAgRE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsgfQog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2lu
ZG93IGZyb20gdGhlIEpTRE9NV2luZG93U2hlbGwuCkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSk7CiAgICAgICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OkpTVmFsdWUpOwogCi0gICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKKyAgICAg
ICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVkOwogICAgICAgICBKU0RPTVdpbmRvd1NoZWxs
KiBtX3NoZWxsOwogCiAgICAgICAgIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zIG1fcHJpdmF0
ZUZ1bmN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAppbmRleCAwYmMzMzc1NGFhMWZiYzVhMzY5MzE3MzRmN2QxNTllNDI0OTA0NDZl
Li4wMGU2MmE0MmI2NDliZjc4NTYzZDYwODhlYTM4ZGY4MTA1OTYyMzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MiwyMSAr
NjIsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTRE9NV2luZG93Ojp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gaW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQo
KS5mcmFtZSgpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZnJhbWUpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgY2hpbGRGcmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDYXN0
PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT53cmFwcGVkKCkuZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbmFtZWRJdGVt
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRo
aXNPYmogPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSk7Ci0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpc09iai0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdGhpc09iai0+d3JhcHBlZCgpLmZyYW1lKCktPmRvY3VtZW50KCk7CiAK
LSAgICBBU1NFUlQoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93
KGV4ZWMsIHRoaXNPYmotPmltcGwoKSkpOworICAgIEFTU0VSVChCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iai0+d3JhcHBlZCgpKSk7CiAg
ICAgQVNTRVJUKGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQpKTsKIAogICAgIEF0b21pY1N0cmlu
Z0ltcGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CkBA
IC05Niw5ICs5Niw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBuYW1lZEl0ZW1HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUganNET01XaW5kb3dXZWJLaXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTRE9NV2luZG93KiBj
YXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyhKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgY2Fz
dGVkVGhpcy0+aW1wbCgpLndlYmtpdE5hbWVzcGFjZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkud2Via2l0TmFtZXNwYWNlKCkpKTsKIH0KICNlbmRpZgogCkBAIC0xMTEsOSAr
MTExLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93SW5kZXhlZERCKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSB0
b0pTRE9NV2luZG93KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5kZXhlZERCRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3Rl
ZFRoaXMtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmluZGV4ZWREQigmaW1w
bCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjksNyAr
MTI5LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAvLyBXZSBkb24ndCB3YW50IGFu
eSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3NlIiBhbmQgImNsb3NlZCIgb24gYSBmcmFtZWxl
c3Mgd2luZG93IChpLmUuIG9uZSB3aG9zZSBwYWdlIGdvdCBjbG9zZWQsCiAgICAgLy8gb3Igd2hv
c2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGZ1bGx5
IG1hdGNoIEZpcmVmb3gsIHdoaWNoIGFsbG93cyBhdCBsZWFzdCB0b1N0cmluZyBpbiBhZGRpdGlv
biB0byB0aG9zZS4KLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSB7CisgICAg
aWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkgewogICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIGNvZGUgaXMgc2FmZSBmb3IgY3Jvc3MtZG9tYWluIGFuZCBzYW1lIGRvbWFpbiB1c2Uu
CiAgICAgICAgIC8vIEl0IGlnbm9yZXMgYW55IGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQg
YmUgc2V0IG9uIHRoZSBET01XaW5kb3cgKGluY2x1ZGluZyBhIGN1c3RvbSBwcm90b3R5cGUpLgog
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZWQp
IHsKQEAgLTE0NSwxNCArMTQ1LDE1IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAg
IC8vIG5vdCBhbGxvd2VkLiAKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNsb3Quc2V0V2F0Y2hwb2ludFNldCh0
aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMpOworICAgIH0KKworICAgIHNsb3Qu
c2V0V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMpOwog
CiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgY3Jvc3MtZG9tYWluIGFjY2VzcyBoZXJlIHdp
dGhvdXQgcHJpbnRpbmcgdGhlIGdlbmVyaWMgd2FybmluZyBtZXNzYWdlCiAgICAgLy8gYmVjYXVz
ZSB3ZSBhbHdheXMgYWxsb3cgYWNjZXNzIHRvIHNvbWUgZnVuY3Rpb24sIGp1c3QgZGlmZmVyZW50
IG9uZXMgZGVwZW5kaW5nIHdoZXRoZXIgYWNjZXNzCiAgICAgLy8gaXMgYWxsb3dlZC4KICAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGJvb2wgYWxsb3dzQWNjZXNzID0gc2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCksIGVycm9yTWVzc2FnZSk7
CisgICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4
ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKTsKICAgICAKICAgICAvLyBM
b29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxvb2tpbmcgYXQgYW55IG9mIG91ciBvd24gcHJvcGVy
dGllcywgYnV0IGlnbm9yZSBvdmVycmlkZXMgY29tcGxldGVseQogICAgIC8vIGlmIHRoaXMgaXMg
Y3Jvc3MtZG9tYWluIGFjY2Vzcy4KQEAgLTE3Niw3ICsxNzcsNyBAQCBib29sIEpTRE9NV2luZG93
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eQogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9N
V2luZG93UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSwgMj4pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuc2hvd01vZGFsRGlhbG9nKSB7Ci0gICAgICAgIGlmICghRE9NV2luZG93OjpjYW5TaG93TW9k
YWxEaWFsb2codGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKSB7CisgICAgICAgIGlmICghRE9N
V2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2codGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkp
KSB7CiAgICAgICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTIwNyw3ICsyMDgsNyBAQCBib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eQogICAgIH0KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkud2Via2l0ICYmIHRoaXNPYmpl
Y3QtPmltcGwoKS5zaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQodGhpc09iamVjdC0+
d29ybGQoKSkpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS53ZWJraXQgJiYgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3Bh
Y2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgewogICAgICAgICBzbG90LnNldENhY2hl
YWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBhbGxvd3NBY2Nlc3MgPyBEb250RGVsZXRlIHwgUmVhZE9u
bHkgOiBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwganNET01XaW5kb3dXZWJLaXQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzcsNyArMjM4LDcgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHkKICAgICAvLyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZs
aWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5v
dCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8g
aXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVl
KCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkp
IHsKKyAgICBpZiAodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRD
aGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAg
ICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTI0Nyw5ICsyNDgsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogCiAgICAgLy8gYWxsb3cg
d2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMpCiAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChpbmRleCAmJiBp
bmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRD
aGlsZENvdW50KCkpIHsKKyAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9u
dEVudW0sCi0gICAgICAgICAgICB0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgp
LT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgudmFsdWUoKSktPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpKSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFt
ZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgudmFsdWUoKSktPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjYwLDcgKzI2MSw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgfQogCiAgICAgLy8gQWxsb3cgc2hvcnRj
dXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBkb2N1bWVudC5pbWFnZXMuSW1hZ2UxCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCktPmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KSkgewog
ICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpOwogICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIGRvd25j
YXN0PEhUTUxEb2N1bWVudD4oKmRvY3VtZW50KS5oYXNXaW5kb3dOYW1lZEl0ZW0oKmF0b21pY1By
b3BlcnR5TmFtZSkpIHsKQEAgLTI3Niw3ICsyNzcsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAKLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSB7Cisg
ICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkgewogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYSBtZXNzYWdlIGhlcmUgdGhhdCBleHBsYWlucyB3aHkgdGhlIHBy
b3BlcnR5IGFjY2Vzcy9mdW5jdGlvbiBjYWxsIHdhcwogICAgICAgICAvLyBub3QgYWxsb3dlZC4g
CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CkBAIC0yODcsNyArMjg4LDcgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIHUKICAgICAvLyBiZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3Mg
dG8gc29tZSBmdW5jdGlvbiwganVzdCBkaWZmZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBh
Y2Nlc3MKICAgICAvLyBpcyBhbGxvd2VkLgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAg
Ym9vbCBhbGxvd3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRo
aXNPYmplY3QtPmltcGwoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9
IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgp
LCBlcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29r
aW5nIGF0IGFueSBvZiBvdXIgb3duIHByb3BlcnRpZXMsIGJ1dCBpZ25vcmUgb3ZlcnJpZGVzIGNv
bXBsZXRlbHkKICAgICAvLyBpZiB0aGlzIGlzIGNyb3NzLWRvbWFpbiBhY2Nlc3MuCkBAIC0zMDEs
NyArMzAyLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKICAgICAvLyBuYW1pbmcgZnJhbWVz
IHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8v
IGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBo
YXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmlt
cGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1l
KCktPnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTMyMyw5ICszMjQsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dQogICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KIAog
ICAgIC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQotICAgIGlm
IChpbmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGRD
b3VudCgpKSB7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkt
PnRyZWUoKS5zY29wZWRDaGlsZENvdW50KCkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwKLSAgICAgICAgICAgIHRv
SlMoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChp
bmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CisgICAgICAgICAgICB0b0pTKGV4ZWMs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQoaW5kZXgp
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTMzNiw3ICszMzcsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIH0KIAog
ICAgIC8vIEFsbG93IHNob3J0Y3V0cyBsaWtlICdJbWFnZTEnIGluc3RlYWQgb2YgZG9jdW1lbnQu
aW1hZ2VzLkltYWdlMQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPmltcGwo
KS5mcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIGlmIChpczxIVE1MRG9jdW1l
bnQ+KCpkb2N1bWVudCkpIHsKICAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eU5hbWUgaXMgZ2VuZXJh
dGVkIGJ5IElkZW50aWZpZXI6OmZyb20uCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gZ2VuZXJh
dGVzIElkZW50aWZpZXIgZnJvbSBTdHJpbmcgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBub24tc3lt
Ym9sIElkZW50aWZpZXIuCkBAIC0zNTQsMTIgKzM1NSwxMiBAQCBib29sIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgdQogdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihjZWxsKTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKQorICAg
IGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIE9wdGltaXphdGlvbjogYWNjZXNzIEphdmFTY3JpcHQgZ2xvYmFsIHZhcmlhYmxlcyBk
aXJlY3RseSBiZWZvcmUgaW52b2x2aW5nIHRoZSBET00uCiAgICAgaWYgKHRoaXNPYmplY3QtPkpT
R2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKGV4ZWMsIHByb3BlcnR5TmFtZSkp
IHsKLSAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgICAgICBpZiAoQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MzY3LDI2ICszNjgsMjYgQEAgdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogICAgIGlmIChsb29rdXBQ
dXQoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQ
cm9wSGFzaFRhYmxlLCBzbG90KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCkpKQorICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpT
RE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0RP
TVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwotICAgIGlm
ICghdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFw
cGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCk7CiAKICAgICAvLyBPcHRp
bWl6YXRpb246IGFjY2VzcyBKYXZhU2NyaXB0IGdsb2JhbCB2YXJpYWJsZXMgZGlyZWN0bHkgYmVm
b3JlIGludm9sdmluZyB0aGUgRE9NLgogICAgIGlmICh0aGlzT2JqZWN0LT5KU0dsb2JhbE9iamVj
dDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShleGVjLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAg
IGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
dGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3Q6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5k
ZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAg
ICAgQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIH0KIApAQCAtMzk0LDcgKzM5NSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihj
ZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTQw
Myw3ICs0MDQsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiB7CiAgICAgSlNET01XaW5kb3cq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFs
bG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC00MTIsNyArNDEzLDcgQEAg
dWludDMyX3QgSlNET01XaW5kb3c6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cg
dG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPmltcGwoKSkpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIEJhc2U6OmdldEVudW1lcmFibGVMZW5ndGgoZXhlYywgdGhpc09iamVj
dCk7CiB9CkBAIC00MjEsNyArNDIyLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0U3RydWN0dXJl
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFAKIHsKICAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7
CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpA
QCAtNDMwLDcgKzQzMSw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiB7CiAgICAgSlNET01X
aW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8v
IE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2Ft
ZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFw
cGVkKCkpKQogICAgICAgICByZXR1cm47CiAgICAgQmFzZTo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00MzksNyAr
NDQwLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxv
dyB0aGUgd2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4K
LSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtNDQ4LDcgKzQ0OSw3IEBAIHZvaWQgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBl
bnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+
aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KQEAgLTQ1Nyw3ICs0NTgsNyBAQCBib29sIEpTRE9NV2luZG93OjpkZWZp
bmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVj
LAogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
b2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IGRlZmluaW5nIHByb3BlcnRpZXMgaW4gdGhpcyB3
YXkgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbiwgYXMgaXQgYWxsb3dzIHNldHRlcnMgdG8g
YmUgaW50cm9kdWNlZC4KLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQorICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3Qt
PndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0IGFsbG93
IHNoYWRvd2luZyBsb2NhdGlvbiB1c2luZyBhY2Nlc3NvciBwcm9wZXJ0aWVzLgpAQCAtNDc2LDcg
KzQ3Nyw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgLy8gYSBwcm9wZXJ0eSBuYW1lZCAibG9jYXRpb24iIGluc3Rl
YWQgb2YgcGVyZm9ybWluZyBhIG5hdmlnYXRpb24gKDxyZGFyOi8vcHJvYmxlbS81Njg4MDM5Piku
CiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZURPTVdpbmRvdygmc3RhdGUpLmZy
YW1lKCkpIHsKICAgICAgICAgaWYgKGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygpLnVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2ZUZyYW1lLT50cmVlKCkucGFy
ZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coJnN0YXRlLCBpbXBsKCkpKQorICAgICAgICAgICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIHdyYXBwZWQoKSkp
CiAgICAgICAgICAgICAgICAgcHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC00ODcsNyArNDg4LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24g
PSBpbXBsKCkubG9jYXRpb24oKSkKKyAgICBpZiAoTG9jYXRpb24qIGxvY2F0aW9uID0gd3JhcHBl
ZCgpLmxvY2F0aW9uKCkpCiAgICAgICAgIGxvY2F0aW9uLT5zZXRIcmVmKGFjdGl2ZURPTVdpbmRv
dygmc3RhdGUpLCBmaXJzdERPTVdpbmRvdygmc3RhdGUpLCBsb2NhdGlvblN0cmluZyk7CiB9CiAK
QEAgLTUzMCw3ICs1MzEsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpvcGVuKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAotICAgIFJlZlB0cjxET01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IGltcGwo
KS5vcGVuKHVybFN0cmluZywgZnJhbWVOYW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZl
RE9NV2luZG93KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSkpOworICAgIFJlZlB0cjxE
T01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IHdyYXBwZWQoKS5vcGVuKHVybFN0cmluZywgZnJhbWVO
YW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93KCZzdGF0ZSksIGZpcnN0
RE9NV2luZG93KCZzdGF0ZSkpOwogICAgIGlmICghb3BlbmVkV2luZG93KQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdG9KUygmc3RhdGUsIG9wZW5lZFdpbmRvdy5n
ZXQoKSk7CkBAIC01ODUsNyArNTg2LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFs
RGlhbG9nKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBEaWFsb2dIYW5kbGVyIGhhbmRsZXIoc3Rh
dGUpOwogCi0gICAgaW1wbCgpLnNob3dNb2RhbERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1
cmVzU3RyaW5nLCBhY3RpdmVET01XaW5kb3coJnN0YXRlKSwgZmlyc3RET01XaW5kb3coJnN0YXRl
KSwgWyZoYW5kbGVyXShET01XaW5kb3cmIGRpYWxvZykgeworICAgIHdyYXBwZWQoKS5zaG93TW9k
YWxEaWFsb2codXJsU3RyaW5nLCBkaWFsb2dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93
KCZzdGF0ZSksIGZpcnN0RE9NV2luZG93KCZzdGF0ZSksIFsmaGFuZGxlcl0oRE9NV2luZG93JiBk
aWFsb2cpIHsKICAgICAgICAgaGFuZGxlci5kaWFsb2dDcmVhdGVkKGRpYWxvZyk7CiAgICAgfSk7
CiAKQEAgLTYzNSwxMiArNjM2LDEyIEBAIHN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdl
KERPTVdpbmRvdyYgaW1wbCwgRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9z
dE1lc3NhZ2UoaW1wbCgpLCBzdGF0ZSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHdy
YXBwZWQoKSwgc3RhdGUpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBpbXBsKCkuZG9jdW1lbnQoKSA/IGltcGwoKS5kb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/IHdyYXBwZWQo
KS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpj
cmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgY29udGVudFNlY3VyaXR5UG9s
aWN5KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNjUxLDcgKzY1Miw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRp
bWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpbnQgZGVsYXkgPSBzdGF0ZS5hcmd1bWVudCgx
KS50b0ludDMyKCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQg
cmVzdWx0ID0gaW1wbCgpLnNldFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5LCBlYyk7
CisgICAgaW50IHJlc3VsdCA9IHdyYXBwZWQoKS5zZXRUaW1lb3V0KFdURjo6bW92ZShhY3Rpb24p
LCBkZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJl
dHVybiBqc051bWJlcihyZXN1bHQpOwpAQCAtNjU5LDcgKzY2MCw3IEBAIEpTVmFsdWUgSlNET01X
aW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGltcGwoKS5kb2N1bWVudCgpID8gaW1wbCgp
LmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKKyAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1
bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIDog
bnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBT
Y2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBj
b250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02NjksNyArNjcwLDcgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJu
IGpzTnVtYmVyKDApOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3Vs
dCA9IGltcGwoKS5zZXRJbnRlcnZhbChXVEY6Om1vdmUoYWN0aW9uKSwgZGVsYXksIGVjKTsKKyAg
ICBpbnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBk
ZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVy
biBqc051bWJlcihyZXN1bHQpOwpAQCAtNjc3LDcgKzY3OCw3IEBAIEpTVmFsdWUgSlNET01XaW5k
b3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNET01XaW5kb3c6
OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBGcmFtZSogZnJhbWUg
PSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtNjg1
LDEzICs2ODYsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUmIHN0YXRlKQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2
ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9i
YWxPYmplY3QoKS0+d29ybGQoKSksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUp
KTsKKyAgICB3cmFwcGVkKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29y
bGQoKSksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC02OTksNyArNzAwLDcgQEAg
SlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBpbXBsKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgw
KS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVu
ZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3Qo
KS0+d29ybGQoKSkucHRyKCksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsK
KyAgICB3cmFwcGVkKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29y
bGQoKSkucHRyKCksIHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtNzA5LDkgKzcxMCw5IEBAIERPTVdpbmRvdyog
SlNET01XaW5kb3c6OnRvV3JhcHBlZChKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3Qt
PmluaGVyaXRzKEpTRE9NV2luZG93OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gJmpzQ2FzdDxK
U0RPTVdpbmRvdyo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNE
T01XaW5kb3cqPihvYmplY3QpLT53cmFwcGVkKCk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMo
SlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01X
aW5kb3dTaGVsbCo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNE
T01XaW5kb3dTaGVsbCo+KG9iamVjdCktPndyYXBwZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRl
eCA1NGNiNWU1NDA0MjAxNTA1ZDVkYTdlYTQ3ZTc0ZmEwYzJlZjBlMDY0Li4xMTIwNjY4NTIyMjI5
ZjdkMTZkZWY4NjlkZjkxNzk2N2Y1MWNhNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEpTRE9N
V2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93KQog
ewogICAgIC8vIFJlcGxhY2luZyBKU0RPTVdpbmRvdyB2aWEgdGVsbGluZyBKU0RPTVdpbmRvd1No
ZWxsIHRvIHVzZSB0aGUgc2FtZSBET01XaW5kb3cgaXQgYWxyZWFkeSB1c2VzIG1ha2VzIG5vIHNl
bnNlLAogICAgIC8vIHNvIHdlJ2QgYmV0dGVyIG5ldmVyIHRyeSB0by4KLSAgICBBU1NFUlQoIXdp
bmRvdygpIHx8IGRvbVdpbmRvdy5nZXQoKSAhPSAmd2luZG93KCktPmltcGwoKSk7CisgICAgQVNT
RVJUKCF3aW5kb3coKSB8fCBkb21XaW5kb3cuZ2V0KCkgIT0gJndpbmRvdygpLT53cmFwcGVkKCkp
OwogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlw
ZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9i
YWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0
cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCkBAIC05NCw5ICs5NCw5IEBA
IHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBk
b21XaW5kb3cpCiAvLyBKU0RPTVdpbmRvdyBtZXRob2RzCiAvLyAtLS0tCiAKLURPTVdpbmRvdyYg
SlNET01XaW5kb3dTaGVsbDo6aW1wbCgpIGNvbnN0CitET01XaW5kb3cmIEpTRE9NV2luZG93U2hl
bGw6OndyYXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiB3aW5kb3coKS0+aW1wbCgpOworICAg
IHJldHVybiB3aW5kb3coKS0+d3JhcHBlZCgpOwogfQogCiAvLyAtLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggY2VkYjU5YzczNTJhY2Rm
MTBhMzE3NmEwN2IyMTgzYWU3NTJjNjhhOC4uMDFmMDQ4ZDY3YTRmNWI4ZDBmMWVlOTY5ZDVkMjc1
NDVmMTI3NDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
REVDTEFSRV9JTkZPOwogCi0gICAgICAgIERPTVdpbmRvdyYgaW1wbCgpIGNvbnN0OworICAgICAg
ICBET01XaW5kb3cmIHdyYXBwZWQoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNET01XaW5k
b3dTaGVsbCogY3JlYXRlKEpTQzo6Vk0mIHZtLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IGU0
OTQxNWUyYmM0MjQ1ODBjMmJjOTAwYmQzMjNmNjdiMDgwOTUyMzUuLjI2MjZmNThhZWVhOTAyNDUx
MDBiZDJkYjlhZTEwN2RlMGMzM2RlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oCkBAIC01MiwxNiArNTIsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW1wbGVt
ZW50YXRpb25DbGFzcz4gY2xhc3MgSlNET01XcmFwcGVyIDogcHVibGljIEpTRE9NT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NT2JqZWN0IEJhc2U7CiAKLSAgICBJbXBsZW1lbnRh
dGlvbkNsYXNzJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIH5KU0RPTVdy
YXBwZXIoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQorICAg
IEltcGxlbWVudGF0aW9uQ2xhc3MmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PEltcGxlbWVudGF0aW9uQ2xhc3MmPihtX3dyYXBwZWQuZ2V0KCkpOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8SW1wbGVtZW50YXRpb25DbGFzcz4mJiBpbXBsKQog
ICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgICAgICwgbV9pbXBs
KCZpbXBsLmxlYWtSZWYoKSkgeyB9CisgICAgICAgICwgbV93cmFwcGVkKFdURjo6bW92ZShpbXBs
KSkgeyB9CiAKIHByaXZhdGU6Ci0gICAgSW1wbGVtZW50YXRpb25DbGFzcyogbV9pbXBsOworICAg
IFJlZjxJbXBsZW1lbnRhdGlvbkNsYXNzPiBtX3dyYXBwZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFD
dWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9t
LmNwcAppbmRleCA3YWIzMjQ1ZDBiYmMyYmQ3ZGY1N2YyYjc1OWIzNGIwNDgwZjMzNWExLi5iZTUz
ZWJlZDk1MTQxYmY2ODU2MTk3NWM0MTY3YWU1MmMwMWUyZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiBKU1ZhbHVlIEpT
RGF0YUN1ZTo6dmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1w
bCgpLnZhbHVlKCZzdGF0ZSk7CisgICAgcmV0dXJuIHdyYXBwZWQoKS52YWx1ZSgmc3RhdGUpOwog
fQogCiB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBpbXBsKCkuc2V0VmFsdWUoJnN0YXRlLCB2YWx1ZSk7CisgICAgd3JhcHBl
ZCgpLnNldFZhbHVlKCZzdGF0ZSwgdmFsdWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAppbmRleCAwYjBm
YTkwNzYwMTY1NjcxMzFjYjhkNzAzM2M5Yzg2MThjMGExZGU4Li5kZmM4ZDQ0Y2Y2NmQ1ZGUyZWQ5
MmQyZWNkYmExZjM2NTY2MjhlNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0RhdGFUcmFuc2Zlcjo6dHlwZXMoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyA9IGltcGwoKS50eXBlcygp
OworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gd3JhcHBlZCgpLnR5cGVzKCk7CiAgICAgcmV0
dXJuIHR5cGVzLmlzRW1wdHkoKSA/IGpzTnVsbCgpIDoganNBcnJheSgmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCB0eXBlcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKaW5k
ZXggODM4OWQ2MWU1ODMxMzg1NGY1NTYzM2MyYzkzZDUxMTczMGMzZWEwZS4uMGU5Yjk3NjdmYzMy
OWNkOWVjNTYzYmQ5YmU0YzFmZWZmMTY4NTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1
c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpT
VmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmlt
cGwoKSk7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCA3ZDgwZjZm
MWI4ZmVhMWQwYTc3ZWRmODg4NmIzZWQzMzBmNjZiZjAwLi43Mzc2MmNhYTEzYzU0ZmU1Y2ZiOTYz
NzgwOTE5MGY0OGM2Njg5ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IHN0YXRpYyBKU09iamVjdCogY3JlYXRlUm90YXRpb25SYXRlT2JqZWN0KGNvbnN0IERldmljZU1v
dGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSoKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojph
Y2NlbGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBEZXZpY2VNb3Rpb25F
dmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVk
KCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2NlbGVyYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBjcmVhdGVBY2NlbGVyYXRpb25PYmpl
Y3QoaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+YWNjZWxlcmF0aW9uKCksIHN0YXRlKTsKQEAgLTE0
NCw3ICsxNDQsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbihF
eGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAg
ICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU1vdGlvbkV2ZW50
JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAuZGV2aWNlTW90aW9uRGF0YSgpLT5hY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAg
ICByZXR1cm4gY3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCkt
PmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSwgc3RhdGUpOwpAQCAtMTUyLDcgKzE1Miw3
IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eShFeGVjU3RhdGUmIHN0YXRlKSBjb25zCiAKIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVu
dDo6cm90YXRpb25SYXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgRGV2aWNlTW90
aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VNb3Rpb25FdmVudCYgaW1wID0gd3Jh
cHBlZCgpOwogICAgIGlmICghaW1wLmRldmljZU1vdGlvbkRhdGEoKS0+cm90YXRpb25SYXRlKCkp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4gY3JlYXRlUm90YXRpb25SYXRl
T2JqZWN0KGltcC5kZXZpY2VNb3Rpb25EYXRhKCktPnJvdGF0aW9uUmF0ZSgpLCBzdGF0ZSk7CkBA
IC0xNjAsNyArMTYwLDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJh
dGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50
OjppbnRlcnZhbChFeGVjU3RhdGUmKSBjb25zdAogewotICAgIERldmljZU1vdGlvbkV2ZW50JiBp
bXAgPSBpbXBsKCk7CisgICAgRGV2aWNlTW90aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAg
ICBpZiAoIWltcC5kZXZpY2VNb3Rpb25EYXRhKCktPmNhblByb3ZpZGVJbnRlcnZhbCgpKQogICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5kZXZpY2VNb3Rp
b25EYXRhKCktPmludGVydmFsKCkpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEpTVmFsdWUgSlNEZXZp
Y2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgYm9vbCBpbnRlcnZhbFByb3ZpZGVkID0gIXN0YXRlLmFyZ3VtZW50KDYpLmlzVW5kZWZpbmVk
T3JOdWxsKCk7CiAgICAgZG91YmxlIGludGVydmFsID0gc3RhdGUuYXJndW1lbnQoNikudG9OdW1i
ZXIoJnN0YXRlKTsKICAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gZGV2aWNlTW90aW9uRGF0
YSA9IERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24sIGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHksIHJvdGF0aW9uUmF0ZSwgaW50ZXJ2YWxQcm92aWRlZCwgaW50ZXJ2YWwp
OwotICAgIGltcGwoKS5pbml0RGV2aWNlTW90aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2Vs
YWJsZSwgZGV2aWNlTW90aW9uRGF0YS5nZXQoKSk7CisgICAgd3JhcHBlZCgpLmluaXREZXZpY2VN
b3Rpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdl
dCgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAKaW5kZXggMTEyNzA1MmJjNjA1ZTdhY2RmNmQ1ZGE2NmRjNDI4ZjhhOGJmOGVjNi4uNTZh
YmQ5YjI0MTgwMjJlMTZlMzk4NGRjMzc1MGNiNTUyMjZmNzFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1
ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0g
ICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIERldmljZU9yaWVu
dGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWltcC5vcmllbnRhdGlvbigp
LT5jYW5Qcm92aWRlQWxwaGEoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVy
biBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+YWxwaGEoKSk7CkBAIC00OCw3ICs0OCw3IEBA
IEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphbHBoYShFeGVjU3RhdGUmKSBjb25z
dAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YShFeGVjU3RhdGUmKSBj
b25zdAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3Jp
ZW50YXRpb24oKS0+Y2FuUHJvdmlkZUJldGEoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwog
ICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+YmV0YSgpKTsKQEAgLTU2LDcg
KzU2LDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmJldGEoRXhlY1N0YXRl
JikgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmdhbW1hKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlR2FtbWEoKSkKICAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOwogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Z2FtbWEoKSk7
CkBAIC02NSw3ICs2NSw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1t
YShFeGVjU3RhdGUmKSBjb25zdAogI2lmIFBMQVRGT1JNKElPUykKIEpTVmFsdWUgSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUmKSBjb25zdAog
ewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZpY2VP
cmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50YXRp
b24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKICAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9yaWVudGF0aW9uKCktPmNvbXBhc3NIZWFkaW5n
KCkpOwpAQCAtNzMsNyArNzMsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
d2Via2l0Q29tcGFzc0hlYWRpbmcoRXhlY1N0YXRlJikgY29uc3QKIAogSlNWYWx1ZSBKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENvbXBhc3NBY2N1cmFjeShFeGVjU3RhdGUmKSBjb25z
dAogewotICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbXAub3JpZW50
YXRpb24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5jb21wYXNzQWNj
dXJhY3koKSk7CkBAIC04Myw3ICs4Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojp3ZWJraXRDb21wYXNzQWNjdXJhY3koRXhlY1N0YXRlJikgY29uc3QKICNpZiAhUExBVEZP
Uk0oSU9TKQogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFic29sdXRlKEV4ZWNT
dGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgp
OworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IHdyYXBwZWQoKTsKICAgICBpZiAo
IWltcC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQWJzb2x1dGUoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogICAgIHJldHVybiBqc0Jvb2xlYW4oaW1wLm9yaWVudGF0aW9uKCktPmFic29s
dXRlKCkpOwpAQCAtMTE0LDcgKzExNCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGJv
b2wgYWJzb2x1dGUgPSBzdGF0ZS5hcmd1bWVudCg2KS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBS
ZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBvcmllbnRhdGlvbiA9IERldmljZU9yaWVudGF0
aW9uRGF0YTo6Y3JlYXRlKGFscGhhUHJvdmlkZWQsIGFscGhhLCBiZXRhUHJvdmlkZWQsIGJldGEs
IGdhbW1hUHJvdmlkZWQsIGdhbW1hLCBhYnNvbHV0ZVByb3ZpZGVkLCBhYnNvbHV0ZSk7CiAjZW5k
aWYKLSAgICBpbXBsKCkuaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQodHlwZSwgYnViYmxlcywg
Y2FuY2VsYWJsZSwgb3JpZW50YXRpb24uZ2V0KCkpOworICAgIHdyYXBwZWQoKS5pbml0RGV2aWNl
T3JpZW50YXRpb25FdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5n
ZXQoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZWMwYjljMmJhMzBlODYw
ZjZlMmJhOTgwMTcwZDhmNzAyYjQ0NTJkNy4uMDk0Y2UzZTMyMmRiMGQ3MGIyMGE4ZGJhMzBlNGIx
MjM1OWM5ODQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1
bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRG9jdQog
SlNWYWx1ZSBKU0RvY3VtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNWYWx1ZSBKU0RvY3Vt
ZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVu
ZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlt
cGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBl
ZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0
b20uY3BwCmluZGV4IGMzNTJkNWRiOTdiYmNkZTBjNmNmYzk2MWRiYWVhNDgxY2I3MjE1YzUuLjdk
YTM4NDdjMTc2ZjA2NzBjN2NjZDU5MTJmMzY5MDJmZDljMDQ4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZhbHVlIEpTRG9jdW1lbnRG
cmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOworICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6
cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFw
cGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGltcGwoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3Jh
cHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNw
cAppbmRleCA4MzMzODcyMDFiYmY2MDJiNTU1MzYwOGJlYjU1MTA2MjljZWNiOTVhLi5hOTNkNjcx
NzNkOTQyNTU2YjBmMjI2MmNiNDA4MTkyMjBiM2ZlOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShF
eGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwo
KS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CisgICAgd3JhcHBlZCgp
LmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUp
CiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNEb2N1bWVu
dFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpy
ZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGltcGwoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKKyAgICB3cmFwcGVkKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCBmZWZkZTM1N2E3ZGNiNmViN2M1ZDZmNjYxZTdiNTdmNWMwMGU5NDMxLi4x
ZDY1MjQyZjE2MWE4YmU2NjJiZjczNmZmODJkNWY4YTY2ZTE5OGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVsZW1lbnQqIGUKIEpTVmFsdWUgSlNFbGVtZW50OjpiZWZvcmUoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuYmVm
b3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5iZWZv
cmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC03OSw3ICs3OSw3
IEBAIEpTVmFsdWUgSlNFbGVtZW50OjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIEpTVmFsdWUg
SlNFbGVtZW50OjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcGwoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKKyAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CkBAIC04OCw3ICs4OCw3IEBAIEpTVmFsdWUgSlNFbGVtZW50OjphZnRlcihFeGVjU3Rh
dGUmIHN0YXRlKQogSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnJlcGxhY2VXaXRo
KHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5yZXBsYWNl
V2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTk3LDcgKzk3
LDcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCiBK
U1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOworICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIEpTVmFsdWUgSlNFbGVtZW50
OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgp
LmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKKyAgICB3cmFwcGVkKCku
YXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAppbmRleCA1MWU5ZjBkOTMwZjZj
OWY2OThmZDIwYWNhOWI4MDFhNjg3YWY4N2UwLi42MDk5NTQxNjk1NmZiZGUxNTE4YTU5YWRkYzBh
NWY0MDY2OTVmNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNFdmVudDo6Y2xpcGJvYXJkRGF0YShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJl
dHVybiBpbXBsKCkuaXNDbGlwYm9hcmRFdmVudCgpID8gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCgpLCBpbXBsKCkuY2xpcGJvYXJkRGF0YSgpKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJu
IHdyYXBwZWQoKS5pc0NsaXBib2FyZEV2ZW50KCkgPyB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5jbGlwYm9hcmREYXRhKCkpIDoganNVbmRlZmluZWQoKTsKIH0KIAogI2Rl
ZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCAyODBjYTEy
ZGViZDBmMDBmODVlYWIzMGM5OGNkYjM3OGVkZjM3MGNiLi44M2VjYTk0YTQwN2UzYTEyOTljYWJm
NzI5ODgyNjQ3Y2VmNjg1Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAogCiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewog
ICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgaWYgKCF3aW5kb3ctPmltcGwoKS5pc0N1cnJlbnRseURpc3BsYXll
ZEluRnJhbWUoKSkKKyAgICAgICAgaWYgKCF3aW5kb3ctPndyYXBwZWQoKS5pc0N1cnJlbnRseURp
c3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgLy8gRklYTUU6
IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBjb250ZXh0cz8KLSAgICAgICAgU2NyaXB0
Q29udHJvbGxlciYgc2NyaXB0ID0gd2luZG93LT5pbXBsKCkuZnJhbWUoKS0+c2NyaXB0KCk7Cisg
ICAgICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdCA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1l
KCktPnNjcmlwdCgpOwogICAgICAgICBpZiAoIXNjcmlwdC5jYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Q3VzdG9tLmNwcAppbmRleCBjN2M3NDUwNWE2YTFmYWVmMGNjN2RhOWIyYzY2NTMyNGUyZDRm
NzljLi5lOGVhZDFjMWQ0MmYwZGRmZmVlOTY2ZTE4MjBlZDAyNTA4ODJmNGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogCiAjZGVmaW5lIFRSWV9UT19V
TldSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkgXAogICAgIGlmICh2YWx1ZS5pbmhl
cml0cyhKUyMjaW50ZXJmYWNlTmFtZTo6aW5mbygpKSkgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXR1cm4gJmpzQ2FzdDxKUyMjaW50ZXJmYWNlTmFtZSo+KGFzT2JqZWN0KHZhbHVl
KSktPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlMjI2ludGVyZmFjZU5hbWUqPihh
c09iamVjdCh2YWx1ZSkpLT53cmFwcGVkKCk7CiAKIEV2ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0
Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKaW5kZXggNTFmYmY0ZmExODJmNGMz
YmM0NmJhNThmYmRlMDdjNWVmNThmMTA2OS4uYTNjMDliMTgzMDQxMTlhOGVlOGRkNzdiNGQ3ZGZm
NTQ4MmQzYjA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
UmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVS
ZWFkZXJDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SlNWYWx1ZSBKU0ZpbGVSZWFkZXI6OnJlc3VsdChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewot
ICAgIEZpbGVSZWFkZXImIGltcCA9IGltcGwoKTsKKyAgICBGaWxlUmVhZGVyJiBpbXAgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKGltcC5yZWFkVHlwZSgpID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRB
c0FycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXAuYXJyYXlCdWZmZXJSZXN1bHQoKSkpOwogICAgIHJldHVybiBqc093
bmVkU3RyaW5nT3JOdWxsKCZzdGF0ZSwgaW1wLnN0cmluZ1Jlc3VsdCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggZWJj
NWJhN2FiNjMwY2ZhNTNkMDE1YjJjNmQzNDIzODk0NTI4MDkxNy4uYjAxYmU3ZGJkMGYwM2VjYTgw
YzZkMDk1ZjBhZWM4Yzc3NmU4NTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBKU1ZhbHVl
IEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsK
IAotICAgIGltcGwoKS5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNl
KCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxl
YXNlKCkpOworICAgIHdyYXBwZWQoKS5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFj
ay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0
aW9ucy5yZWxlYXNlKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0xMzYs
NyArMTM2LDcgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3Np
dGlvbk9wdGlvbnMpOwogCi0gICAgaW50IHdhdGNoSUQgPSBpbXBsKCkud2F0Y2hQb3NpdGlvbihw
b3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CisgICAgaW50IHdhdGNoSUQgPSB3cmFwcGVk
KCkud2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKHdhdGNoSUQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDI1OTJmNDY3
MmU4YTIxNzBlYmZmZWEyMmQ4MzM1NTgxMzM5ZjIxZjkuLjk0YmMzMjRhZWRlMzgwZjBhZDkyOWM4
NDM0YzViOWRhYTk5YjBjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUm
IHN0YXRlLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xs
ZWN0aW9uLT5pbXBsKCkubmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zID0gY29sbGVj
dGlvbi0+d3JhcHBlZCgpLm5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgLy8gRG8gbm90IHVzZSB0aGlzT2JqIGhlcmUuIEl0IGNhbiBiZSB0aGUgSlNIVE1MRG9j
dW1lbnQsIGluIHRoZSBkb2N1bWVudC5mb3JtcyhpKSBjYXNlLgogICAgIEpTSFRNTEFsbENvbGxl
Y3Rpb24qIGpzQ29sbGVjdGlvbiA9IGpzQ2FzdDxKU0hUTUxBbGxDb2xsZWN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpOwotICAgIEhUTUxBbGxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uID0ganNDb2xsZWN0
aW9uLT5pbXBsKCk7CisgICAgSFRNTEFsbENvbGxlY3Rpb24mIGNvbGxlY3Rpb24gPSBqc0NvbGxl
Y3Rpb24tPndyYXBwZWQoKTsKIAogICAgIC8vIEFsc28sIGRvIHdlIG5lZWQgdGhlIFR5cGVFcnJv
ciB0ZXN0IGhlcmUgPwogCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCpzdGF0ZS5h
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpLmltcGwoKSkpCi0gICAg
ICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5pdGVtKGluZGV4
LnZhbHVlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwg
d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgIHJldHVybiBuYW1lZEl0ZW1zKHN0
YXRlLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQo
MCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
CmluZGV4IGU2ZWM4ZGMzY2VhZjRmYWYxMzNlNDhlOTQ1OWI5OGE2Mjg4ZGM2ODEuLjE0YWQ5NWJi
MTc2MzUyODk3ODYwMzE3YzgyMDI4MWYwOGRmZDBiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGdldDNEQ29udGV4dEF0dHJpYnV0ZXMoRXhlY1N0YXRl
JiBzdGF0ZSwgUmVmUHRyPENhbnZhc0NvbnRleHRBdHRyaWJ1CiAKIEpTVmFsdWUgSlNIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIEhUTUxDYW52
YXNFbGVtZW50JiBjYW52YXMgPSBpbXBsKCk7CisgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZh
cyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgCiAgICAgUmVmUHRy
PENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzPiBhdHRyczsKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1
ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpT
VmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gaW1wbCgpOwor
ICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0
ZS5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAg
IGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9T
dHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiAKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IGltcGwoKTsKKyAg
ICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzID0gd3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogCiAgICAgY29uc3QgU3RyaW5nJiB0eXBlID0gdmFsdWVUb1N0cmluZ1dpdGhV
bmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
aW5kZXggNzI3OWE5NDUwYTE3MTM0MDUzZjY4MzAyNWMzYzEwODdkYTUwNzkwYi4uODg5NzA1YWZl
MGQ4MzZmYzZlYjViOTE4MjlmOTgwMDgzMTJhNmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQyLDEwICs0
MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUmIHZhbHVlKQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW1wbCgpLnR5cGUoKSAhPSBG
b3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUgc3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKLSAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGltcGwoKS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNo
b3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0Uod3JhcHBlZCgpLnR5cGUoKSAhPSBGb3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0aGUg
c3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHdyYXBwZWQo
KS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNob3VsZCBjYWxsIHRoZSBzdWJjbGFzcycgbmFt
ZUdldHRlciIpOwogCi0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwog
ICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNDMxNzQy
ODU0NjhhZWFmNzE4NzFlMDk2NGY0MjYxMTJlYzVhNjAwOS4uMTkxMmMwYjZiZTNiODk2MjQ0YzYy
YmUxNmZlMTUxOTk2NGZlMDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIEpTSFRN
TERvY3VtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZQogCiBib29sIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0g
ICAgYXV0byYgZG9jdW1lbnQgPSBpbXBsKCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSB3cmFwcGVk
KCk7CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpOwogICAgIGlmICghYXRvbWljUHJvcGVydHlOYW1lIHx8ICFkb2N1
bWVudC5oYXNEb2N1bWVudE5hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKSkKQEAgLTExNSw3
ICsxMTUsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKICAgICBpZiAodikKICAgICAgICAgcmV0dXJuIHY7CiAKLSAgICByZXR1cm4gdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuYWxsKCkpOworICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5hbGwoKSk7CiB9CiAKIHZvaWQgSlNIVE1M
RG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMTMy
LDcgKzEzMiw3IEBAIHN0YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGVjU3Rh
dGUmIHN0YXRlKQogICAgIGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coZnVuY3Rvci5jYWxsZXJGcmFtZSgpLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCkuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gYXNKU0RP
TVdpbmRvdyhmdW5jdG9yLmNhbGxlckZyYW1lKCktPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndy
YXBwZWQoKS5kb2N1bWVudCgpOwogfQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCkBAIC0xNDEsNyAr
MTQxLDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgYnJvd3NlcnMsIHBhc3Mgb3Bl
biBjYWxscyB3aXRoIG1vcmUgdGhhbiAyIHBhcmFtZXRlcnMgdG8gdGhlIHdpbmRvdy4KICAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID4gMikgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gaW1wbCgpLmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQo
KS5mcmFtZSgpKSB7CiAgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3cmFwcGVyID0gdG9K
U0RPTVdpbmRvd1NoZWxsKGZyYW1lLCBjdXJyZW50V29ybGQoJnN0YXRlKSk7CiAgICAgICAgICAg
ICBpZiAod3JhcHBlcikgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB3cmFw
cGVyLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm9wZW4iKSk7
CkBAIC0xNTcsMTAgKzE1NywxMCBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVuKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAKICAgICAvLyBkb2N1bWVudC5vcGVuIGNsb2JiZXJzIHRoZSBzZWN1cml0
eSBjb250ZXh0IG9mIHRoZSBkb2N1bWVudCBhbmQKICAgICAvLyBhbGlhc2VzIGl0IHdpdGggdGhl
IGFjdGl2ZSBzZWN1cml0eSBjb250ZXh0LgotICAgIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9
IGFzSlNET01XaW5kb3coc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gYXNKU0RPTVdpbmRvdyhzdGF0
ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCkuZG9jdW1lbnQoKTsKIAogICAgIC8v
IEluIHRoZSBjYXNlIG9mIHR3byBwYXJhbWV0ZXJzIG9yIGZld2VyLCBkbyBhIG5vcm1hbCBkb2N1
bWVudCBvcGVuLgotICAgIGltcGwoKS5vcGVuKGFjdGl2ZURvY3VtZW50KTsKKyAgICB3cmFwcGVk
KCkub3BlbihhY3RpdmVEb2N1bWVudCk7CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE2OCw3
ICsxNjgsNyBAQCBlbnVtIE5ld2xpbmVSZXF1aXJlbWVudCB7IERvTm90QWRkTmV3bGluZSwgRG9B
ZGROZXdsaW5lIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkb2N1bWVudFdyaXRlKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTSFRNTERvY3VtZW50KiB0aGlzRG9jdW1lbnQsIE5ld2xpbmVSZXF1aXJlbWVu
dCBhZGROZXdsaW5lKQogewotICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSAmdGhpc0RvY3Vt
ZW50LT5pbXBsKCk7CisgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9ICZ0aGlzRG9jdW1lbnQt
PndyYXBwZWQoKTsKICAgICAvLyBET00gb25seSBzcGVjaWZpZXMgc2luZ2xlIHN0cmluZyBhcmd1
bWVudCwgYnV0IGJyb3dzZXJzIGFsbG93IG11bHRpcGxlIG9yIG5vIGFyZ3VtZW50cy4KIAogICAg
IHNpemVfdCBzaXplID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzZDQ4ZGYwNDQ2
MDkzM2VjY2Y0NTUzNGJiN2NjYTE3YzNkNmM1NmY1Li41ODM2YTEwNzRiZTI5NTY3ZTE2Y2I4NmU1
NTQyZDNjYzIyMGQ4MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBKU1Njb3BlKiBKU0hUTUxFbGVtZW50OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCYg
ZWxlbWVudCA9IGltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IHdyYXBwZWQoKTsK
IAogICAgIC8vIFRoZSBkb2N1bWVudCBpcyBwdXQgb24gZmlyc3QsIGZhbGwgYmFjayB0byBzZWFy
Y2hpbmcgaXQgb25seSBhZnRlciB0aGUgZWxlbWVudCBhbmQgZm9ybS4KICAgICBzY29wZSA9IEpT
V2l0aFNjb3BlOjpjcmVhdGUoZXhlYywgYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3Qo
KSwgJmVsZW1lbnQuZG9jdW1lbnQoKSkpLCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwCmluZGV4IDhiNTVmYTdkZTM2ZTVjNjA3ODg5YzliMWU5YTUxYzNlYzhhNjhiNzYu
LjNhZmIzMjYwNzI2ZGRmNWYzNTgwZDJmNDJiNmY5YWJlZGYwNmY1YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJ
dGVtcyA9IGNvbGxlY3Rpb24tPmltcGwoKS5uYW1lZEl0ZW1zKG5hbWUpOworICAgIFZlY3RvcjxS
ZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBjb2xsZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVt
cyhuYW1lKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRl
bXNbMF0ucHRyKCkpOwogCi0gICAgQVNTRVJUKGNvbGxlY3Rpb24tPmltcGwoKS50eXBlKCkgPT0g
Rm9ybUNvbnRyb2xzKTsKLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChu
YW1lKS5nZXQoKSk7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24tPndyYXBwZWQoKS50eXBlKCkgPT0g
Rm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBjb2xsZWN0aW9uLT53cmFwcGVkKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlz
dChuYW1lKS5nZXQoKSk7CiB9CiAKIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCBlMzRjMDM1NDZkZGVhNmNhZGVkMWEzY2Fj
OWY3YmY3ZjMzODhiYmE0Li4zYWVkNzA1MmY0NjE1ZWYwYWM5MzU5ZTcxYTkxNTg3ODBiM2JkNTdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ym9vbCBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIFZlY3RvcjxSZWY8
RWxlbWVudD4+IG5hbWVkSXRlbXMgPSBpbXBsKCkubmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBu
YW1lZEl0ZW1zID0gd3JhcHBlZCgpLm5hbWVkRWxlbWVudHMocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBhYjAwMGY3MTMwMTll
OWI4YTBiZjU4ZTIzNWQ3NDEzYTlhY2I5NTQyLi42ZmQ1YTk3YjI1N2M2MDg1OGY4OTI5YjJlOWEy
OTkxYjU3ZGYxZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGFsbG93U2V0dGluZ0phdmFzY3JpcHRVUkwoRXhlY1N0YXRlJiBzdGF0ZSwgSFRN
TEZyYW1lRWxlbWVudCoKIAogdm9pZCBKU0hUTUxGcmFtZUVsZW1lbnQ6OnNldExvY2F0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSFRNTEZyYW1lRWxlbWVudCYg
aW1wID0gaW1wbCgpOworICAgIEhUTUxGcmFtZUVsZW1lbnQmIGltcCA9IHdyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbG9jYXRpb25WYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKCZzdGF0
ZSwgdmFsdWUpOwogCiAgICAgaWYgKCFhbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKHN0YXRlLCAm
aW1wLCBsb2NhdGlvblZhbHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDcwODU2ZTU1M2M0
ZmQ2YzdkMDIwZmI5NzM1ODk4NmEyNjUyNTM1NmEuLjEyNWFlZjdlYzFkNzMxZjIyZTExNjQwZTgw
ZjMyYmI3MGFhZWVhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYg
dmFsdWUpCiB7Ci0gICAgYXV0byogZnJhbWVFbGVtZW50ID0gaW1wbCgpLmNoaWxkcmVuKCktPm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBh
dXRvKiBmcmFtZUVsZW1lbnQgPSB3cmFwcGVkKCkuY2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXM8SFRNTEZy
YW1lRWxlbWVudD4oZnJhbWVFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCA4ZjQyZGJlZjUyNGZkNmZkOGNlM2RhYTExMTlkZGZkYjNiOWIwMTU1Li4z
NzJmMzQyOTgxNGNhODUyZmEzNWE3MjhkYWRjZmUwYmEzNjQ1ZjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAg
ICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKQEAgLTQ0LDcgKzQ0LDcg
QEAgSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFy
dChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBl
ZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOwogCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25TdGFydChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
CiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7CisgICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5I
YXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwog
CkBAIC02Miw3ICs2Miw3IEBAIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25F
bmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNl
dFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEhU
TUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlu
cHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNI
VE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlv
bihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0
ID0gaW1wbCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKIApAQCAtODAsNyArODAsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKIHZvaWQg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGltcGwo
KTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlu
cHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OwogICAgICAgICByZXR1cm47CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBpbXBsKCk7Cisg
ICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5j
YW5IYXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA0NDAwOTc2MWQxMzlkMTMxODY0NmI1YzhlNTFlMjViYWQw
ZWIxNDAzLi4yZjQxY2ZlNWUyNGJmOTg4MWI2MDNlMDVmNWQyZTNhOTc5YTBlNTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgdm9pZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldENv
bnRyb2xsZXIoRXhlY1N0YXRlJiwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyA0LjguMTAuMTEu
MiBNZWRpYSBjb250cm9sbGVyczogY29udHJvbGxlciBhdHRyaWJ1dGUuCiAgICAgLy8gT24gc2V0
dGluZywgaXQgbXVzdCBmaXJzdCByZW1vdmUgdGhlIGVsZW1lbnQncyBtZWRpYWdyb3VwIGF0dHJp
YnV0ZSwgaWYgYW55LCAKLSAgICBpbXBsKCkuc2V0TWVkaWFHcm91cChTdHJpbmcoKSk7CisgICAg
d3JhcHBlZCgpLnNldE1lZGlhR3JvdXAoU3RyaW5nKCkpOwogICAgIC8vIGFuZCB0aGVuIHNldCB0
aGUgY3VycmVudCBtZWRpYSBjb250cm9sbGVyIHRvIHRoZSBnaXZlbiB2YWx1ZS4KLSAgICBpbXBs
KCkuc2V0Q29udHJvbGxlcihKU01lZGlhQ29udHJvbGxlcjo6dG9XcmFwcGVkKHZhbHVlKSk7Cisg
ICAgd3JhcHBlZCgpLnNldENvbnRyb2xsZXIoSlNNZWRpYUNvbnRyb2xsZXI6OnRvV3JhcHBlZCh2
YWx1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggOTE1ZTAyODdjNzhj
ZGMwOTVkYjFhZGUzMzVkNzYwY2QzYjU4M2U3ZC4uOTIzNDVlNmI1N2ZjYzUwMzM4NmE5MGMzYTE3
Nzk0YzRjMTMxNjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGF1dG8gaXRlbSA9IHdyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTYxLDEzICs2MSwx
MyBAQCB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIG5ld0xlbmd0aCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsZW5ndGhWYWx1ZSk7CiAgICAgfQogICAgIGlmICghZWMpCi0gICAgICAgIGlt
cGwoKS5zZXRMZW5ndGgobmV3TGVuZ3RoLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZXRMZW5n
dGgobmV3TGVuZ3RoLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogfQog
CiB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleFNldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHNlbGVjdEluZGV4U2V0
dGVyKCZpbXBsKCkuc2VsZWN0RWxlbWVudCgpLCBleGVjLCBpbmRleCwgdmFsdWUpOworICAgIHNl
bGVjdEluZGV4U2V0dGVyKCZ3cmFwcGVkKCkuc2VsZWN0RWxlbWVudCgpLCBleGVjLCBpbmRleCwg
dmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoRXhl
Y1N0YXRlJiBzdGF0ZSkKQEAgLTc1LDkgKzc1LDkgQEAgSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbjo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgLy8gVGhlIGFyZ3VtZW50IGNh
biBiZSBhbiBIVE1MT3B0aW9uRWxlbWVudCBvciBhbiBpbmRleC4KICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYgKEhUTUxPcHRpb25FbGVtZW50KiBvcHRp
b24gPSBKU0hUTUxPcHRpb25FbGVtZW50Ojp0b1dyYXBwZWQoYXJndW1lbnQpKQotICAgICAgICBp
bXBsKCkucmVtb3ZlKG9wdGlvbik7CisgICAgICAgIHdyYXBwZWQoKS5yZW1vdmUob3B0aW9uKTsK
ICAgICBlbHNlCi0gICAgICAgIGltcGwoKS5yZW1vdmUoYXJndW1lbnQudG9JbnQzMigmc3RhdGUp
KTsKKyAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShhcmd1bWVudC50b0ludDMyKCZzdGF0ZSkpOwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGIzZGYx
M2Y3MmVhYThmYmFhMDc4NjA1ZjQ3NjMzOTI3ZWJlMDJjYzYuLjMwZTNlYmJiODlhNGVmMjNhNTk2
OTRjM2FiZWU1N2E4MGE2MjMxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNCw3ICszNCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEpTVmFsdWUgSlNIVE1MU2VsZWN0RWxlbWVu
dDo6cmVtb3ZlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNl
bGVjdCA9IGltcGwoKTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0ID0gd3JhcHBlZCgp
OwogCiAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgLy8gV2hlbiBj
YWxsZWQgd2l0aCBubyBhcmd1bWVudCwgd2Ugc2hvdWxkIGNhbGwgRWxlbWVudDo6cmVtb3ZlKCkg
dG8gZGV0YWNoLgpAQCAtNjksNyArNjksNyBAQCB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogCiB2
b2lkIEpTSFRNTFNlbGVjdEVsZW1lbnQ6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIHNlbGVjdEluZGV4
U2V0dGVyKCZpbXBsKCksIGV4ZWMsIGluZGV4LCB2YWx1ZSk7CisgICAgc2VsZWN0SW5kZXhTZXR0
ZXIoJndyYXBwZWQoKSwgZXhlYywgaW5kZXgsIHZhbHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3Rv
bS5jcHAKaW5kZXggMWJiODZkZjg4YzlkZWVhYjA5YmEwNmYzMjVkZTdiZGY2NmQ0NDhhZi4uOTdh
YmU3N2MwYjAzYWIxNjVkYjZkNDc2ZDhlYTE5OGQxODdiYzBjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20u
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSlNIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250
ZW50KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soJnN0
YXRlKTsKIAotICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRlbnQgPSBpbXBsKCkuY29udGVudCgp
OworICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRlbnQgPSB3cmFwcGVkKCkuY29udGVudCgpOwog
CiAgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdCgp
LT53b3JsZCgpLCBjb250ZW50KTsKICAgICBpZiAod3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCmluZGV4IGEyYzY5ZWJlZTNkYTg4YTM5
Yjc0ZTg3MmRiZTRjOTJkNzVmNWE5ZDIuLjJiZDJmNmQ4ZTM4NDdiMzA0ZmU5NThjNDI4MmYyMDE5
N2EyMzliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9y
eUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogICAgIC8v
IE91ciBjdXN0b20gY29kZSBpcyBvbmx5IG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBj
cm9zcy1kb21haW4gc2NoZW1lLCBzbyBpZiBhY2Nlc3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1
cm4gZmFsc2Ugc28gdGhlIG5vcm1hbCBsb29rdXAgd2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmlu
ZyBtZXNzYWdlOwotICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgaW1wbCgp
LmZyYW1lKCksIG1lc3NhZ2UpKQorICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhl
Yywgd3JhcHBlZCgpLmZyYW1lKCksIG1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZlbiB3
aGVuIGNhbGxlZCBjcm9zcy1kb21haW4uCkBAIC02OSwxNCArNjksMTQgQEAgYm9vbCBKU0hpc3Rv
cnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcHJpbnRFcnJv
ck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkuZnJhbWUoKSwgbWVzc2FnZSk7CisgICAgcHJpbnRFcnJv
ck1lc3NhZ2VGb3JGcmFtZSh3cmFwcGVkKCkuZnJhbWUoKSwgbWVzc2FnZSk7CiAgICAgc2xvdC5z
ZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBKU0hpc3Rvcnk6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogewotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGlt
cGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB3
cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVMKIGJvb2wgSlNI
aXN0b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0hpc3RvcnkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNIaXN0b3J5Kj4oY2VsbCk7Ci0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtOTIsNyArOTIsNyBAQCBib29sIEpT
SGlzdG9yeTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZQogYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewog
ICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hpc3RvcnkqPihjZWxsKTsKLSAg
ICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCku
ZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09i
amVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUpOwogfQpAQCAtMTAwLDE0ICsxMDAsMTQgQEAgYm9vbCBKU0hpc3Rvcnk6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHIK
IHZvaWQgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewogICAgIEpTSGlzdG9yeSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hp
c3RvcnkqPihvYmplY3QpOwotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNz
VG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6c3RhdGUoRXhlY1N0
YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBIaXN0b3J5JiBoaXN0b3J5ID0gaW1wbCgpOworICAg
IEhpc3RvcnkmIGhpc3RvcnkgPSB3cmFwcGVkKCk7CiAKICAgICBKU1ZhbHVlIGNhY2hlZFZhbHVl
ID0gbV9zdGF0ZS5nZXQoKTsKICAgICBpZiAoIWNhY2hlZFZhbHVlLmlzRW1wdHkoKSAmJiAhaGlz
dG9yeS5zdGF0ZUNoYW5nZWQoKSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBKU1ZhbHVlIEpTSGlzdG9y
eTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1
c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKCZzdGF0ZSwgaW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKCZzdGF0ZSwgd3JhcHBlZCgpLmZyYW1lKCkpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlT
dGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1l
bnQoMCksIDAsIDApOwpAQCAtMTQwLDcgKzE0MCw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNo
U3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpbXBsKCkuc3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0
aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKKyAgICB3cmFw
cGVkKCkuc3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0aXRsZSwgdXJs
LCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBAIC0xNTAsNyArMTUwLDcg
QEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogCiBKU1Zh
bHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYg
KCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCBpbXBsKCkuZnJhbWUoKSkpCisgICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB3cmFwcGVkKCkuZnJhbWUoKSkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
JnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CkBAIC0xNjksNyArMTY5LDcgQEAgSlNW
YWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS5zdGF0ZU9iamVjdEFkZGVkKGhp
c3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlw
ZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlT
dGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVw
bGFjZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIG1fc3Rh
dGUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKaW5kZXggOWRkNDAxZGUzMzM2YzkwNzk4ZDBhNzliMjlhMTYwNjI3ZWQ3
ODhlNy4uYThjYmEwM2M1ZWI2YmY1OTc2NTY0ZTAwODdhNGNjZjIzYzdkZjVhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShF
eGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuY3Jl
YXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgZWMpLmdldCgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBl
ZCgpLmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIGVjKS5n
ZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0xMTMsNyArMTEzLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihFeGVjU3RhdGUmIGV4ZWMpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZleGVjLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgp
LnRyYW5zYWN0aW9uKHNjcmlwdENvbnRleHQsIHNjb3BlLCBtb2RlLCBlYykuZ2V0KCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmZXhlYywgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS50
cmFuc2FjdGlvbihzY3JpcHRDb250ZXh0LCBzY29wZSwgbW9kZSwgZWMpLmdldCgpKTsKICAgICBz
ZXRET01FeGNlcHRpb24oJmV4ZWMsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cAppbmRleCAyOWM1ZWU0MDg2NTUxMGVmNjQ0OGUwYzhiYjAzYTliNGM2NGNjZTcxLi42ZWQ3ODQ1
MzE2NTIzYzhjZWNkM2YyZjdlNGUxNDc2N2M2MGQwMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBwdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGJv
b2wgb3ZlcndyaXRlKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5
cGVFcnJvcihzdGF0ZSwgIklEQk9iamVjdFN0b3JlIiwgInB1dCIpKTsKIAogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNJREJPYmplY3RTdG9yZTo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIHdyYXBwZWQg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUu
YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdzQ291bnQgPCAxKSkKQEAgLTY0
LDkgKzY0LDkgQEAgc3RhdGljIEpTVmFsdWUgcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBib29sIG92ZXJ3cml0ZSkKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNW
YWx1ZSByZXN1bHQ7CiAgICAgICAgIGlmIChvdmVyd3JpdGUpCi0gICAgICAgICAgICByZXN1bHQg
PSB0b0pTKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucHV0KHN0YXRl
LCB2YWx1ZSwgZWMpLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgd3JhcHBlZC5wdXQoc3RhdGUsIHZhbHVlLCBlYyku
Z2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB0b0pTKCZzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuYWRkKHN0YXRlLCB2YWx1ZSwgZWMpLmdl
dCgpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgd3JhcHBlZC5hZGQoc3RhdGUsIHZhbHVlLCBlYykuZ2V0KCkpOwogCiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTc1LDkgKzc1LDkgQEAgc3RhdGljIEpTVmFsdWUgcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBib29sIG92ZXJ3cml0ZSkKICAgICBhdXRvIGtleSA9IHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChvdmVyd3JpdGUpCi0gICAg
ICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1w
bC5wdXQoc3RhdGUsIHZhbHVlLCBrZXksIGVjKS5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IHRv
SlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgd3JhcHBlZC5wdXQoc3RhdGUs
IHZhbHVlLCBrZXksIGVjKS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSB0b0pT
KCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuYWRkKHN0YXRlLCB2YWx1
ZSwga2V5LCBlYykuZ2V0KCkpOworICAgICAgICByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIHdyYXBwZWQuYWRkKHN0YXRlLCB2YWx1ZSwga2V5LCBlYyku
Z2V0KCkpOwogCiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0xMjcsNyArMTI3LDcgQEAgSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleChFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBp
bXBsKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVu
dHJ5LCBlYykuZ2V0KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUygmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpLCB3cmFwcGVkKCkuY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwga2V5UGF0aCwg
dW5pcXVlLCBtdWx0aUVudHJ5LCBlYykuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmlu
ZGV4IGUyNmJiZTc4ZDlmYmJjNDkyMGNlMWVmY2I0YzM1MGZkN2ExMzI0YjguLjllNjllMWJmZDY2
NGI2NmE4YzNkYWRmMTcyNWZhNDg4Njk5Mzg4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAK
QEAgLTEwNyw3ICsxMDcsNyBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93
Q29udGV4dE1lbnUoRXhlY1N0YXRlJiBzdGF0ZSkKICNlbHNlCiAgICAgVmVjdG9yPENvbnRleHRN
ZW51SXRlbT4gaXRlbXMgPSBtZW51Lml0ZW1zKCk7CiAjZW5kaWYKLSAgICBpbXBsKCkuc2hvd0Nv
bnRleHRNZW51KGV2ZW50LCBpdGVtcyk7CisgICAgd3JhcHBlZCgpLnNob3dDb250ZXh0TWVudShl
dmVudCwgaXRlbXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4
IDEzMWUyODcwYmRiNTlkNjA1MzZhOTEwYTc3MWRkNTA3NzJjMDZlNDkuLjAwODNlMGNmMTU5Y2Mx
Zjg5MDBjZmExOGRkN2I0MjU1ZTA5MzQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIHNs
b3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzMsNyArNzMsNyBA
QCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcgogCiBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS5m
cmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBK
U0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3AKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1l
cyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
ZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dB
Y2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgSlNM
b2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwCiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMg
aW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4
ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTG9jYXRpb24qPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIGxvY2F0aW9u
IG9iamVjdCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCkpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9
CkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiBKU1ZhbHVl
IEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBG
cmFtZSogZnJhbWUgPSBpbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVk
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
JnN0YXRlLCBmcmFtZSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgcmV0
dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW1wbCgpLnRvU3RyaW5nKCkpOworICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS50b1N0cmluZygpKTsKIH0K
IAogYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVz
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0
ZXNDdXN0b20uY3BwCmluZGV4IDgwMThiMjYzM2I3OGU5Y2UxZGUyOTEzM2Q5ZDk0ZTY3MDJlYTM1
MWUuLjc1ZTljYWJiYzM4OTdlMTYwMWVkNmM2NTNjNDVmOWNiNWYyNTI3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0
b20uY3BwCkBAIC0zNyw1NCArMzcsNTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVl
IEpTTWVkaWFTb3VyY2VTdGF0ZXM6OndpZHRoKEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgaWYg
KCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1Nv
dXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBqc051
bWJlcihpbXBsKCkud2lkdGgoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS53aWR0
aCgpKTsKIH0KIAogSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0YXRl
JikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQorICAgIGlmICgh
d3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuaGVpZ2h0KCkpOworICAgIHJldHVy
biBqc051bWJlcih3cmFwcGVkKCkuaGVpZ2h0KCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OmZyYW1lUmF0ZShFeGVjU3RhdGUmKSBjb25zdAogewotICAgIGlmICghaW1wbCgp
Lmhhc1ZpZGVvU291cmNlKCkpCisgICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAgcmV0dXJuIGpzTnVtYmVy
KGltcGwoKS5mcmFtZVJhdGUoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5mcmFt
ZVJhdGUoKSk7CiB9CiAKIEpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8o
RXhlY1N0YXRlJikgY29uc3QKIHsKLSAgICBpZiAoIWltcGwoKS5oYXNWaWRlb1NvdXJjZSgpKQor
ICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuYXNwZWN0UmF0aW8o
KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5hc3BlY3RSYXRpbygpKTsKIH0KIAog
SlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKEV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0CiB7Ci0gICAgaWYgKCFpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBpZiAoIXdy
YXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IGltcGwoKS5mYWNpbmdNb2RlKCk7Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gd3JhcHBlZCgpLmZhY2luZ01vZGUoKTsKICAg
ICBpZiAobW9kZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGltcGwoKS5mYWNpbmdNb2Rl
KCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5mYWNp
bmdNb2RlKCkpOwogfQogCiBKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVj
U3RhdGUmKSBjb25zdAogewotICAgIGlmIChpbXBsKCkuaGFzVmlkZW9Tb3VyY2UoKSkKKyAgICBp
ZiAod3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIAotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkudm9sdW1lKCkpOworICAgIHJl
dHVybiBqc051bWJlcih3cmFwcGVkKCkudm9sdW1lKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwCmluZGV4IDAxOTY1ZTRiNDI3MjY2ZmZkMjc4OWM4YjliMjg0OGE5YWUy
ZGE4N2EuLjM3NWRkNGI1ZjAzNjM5M2ZhYmVmYzMzODg3N2E2N2JlZTI3ZmJiNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20u
Y3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTWVz
c2FnZUNoYW5uZWw6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gaW1wbCgpLnBvcnQxKCkpCisg
ICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gd3JhcHBlZCgpLnBvcnQxKCkpCiAgICAgICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9
IGltcGwoKS5wb3J0MigpKQorICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHdyYXBwZWQoKS5w
b3J0MigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApp
bmRleCA0NGQ5NTQ3ZjY3NmU5ODU2ZTlkNWE0MWI0NzQyNTIzZDRjNzIxNTMzLi5iNTVkYzRlYTI1
MjQ0MDJlNWJlNGE4MmQyMjU2NjEwMGY2MjMxYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBA
IEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgTWVzc2FnZUV2ZW50JiBl
dmVudCA9IGltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAgIGNh
c2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7CkBAIC03OCw3ICs3OCw3IEBA
IEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAog
ICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZToKICAg
ICAgICAgaWYgKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9
IGV2ZW50LmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRzID0gaW1wbCgpLnBvcnRzKCk7CisgICAgICAgICAgICBNZXNzYWdl
UG9ydEFycmF5IHBvcnRzID0gd3JhcHBlZCgpLnBvcnRzKCk7CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2h5IGRvZXMgdGhpcyBzdXBwcmVzcyBleGNlcHRpb25zPwogICAgICAgICAgICAgcmVzdWx0
ID0gc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCAm
cG9ydHMsIE5vblRocm93aW5nKTsKICAgICAgICAgfSBlbHNlCkBAIC0xMjQsNyArMTI0LDcgQEAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50
KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgTWVzc2FnZUV2ZW50JiBldmVudCA9
IGpzRXZlbnQtPmltcGwoKTsKKyAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0ganNFdmVudC0+d3Jh
cHBlZCgpOwogICAgIGV2ZW50LmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJn
LCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3Vy
Y2VBcmcsIFdURjo6bW92ZShtZXNzYWdlUG9ydHMpKTsKICAgICBqc0V2ZW50LT5tX2RhdGEuc2V0
KHN0YXRlLnZtKCksIGpzRXZlbnQsIGRhdGFBcmcuanNWYWx1ZSgpKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
UG9ydEN1c3RvbS5jcHAKaW5kZXggMjM5ZjQ3YWZkNmRhNWViZTUxOTBlN2NiYjU5M2UzM2JlYmY5
MWUxZi4uNmIyMTI0NDk4NzVlNzhlOGNiYmRkNzJmYzIzZDBmNjliODM5NjkwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAg
LTQ4LDEzICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIEpTTWVzc2FnZVBvcnQ6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIC8v
IElmIHdlIGhhdmUgYSBsb2NhbGx5IGVudGFuZ2xlZCBwb3J0LCB3ZSBjYW4gZGlyZWN0bHkgbWFy
ayBpdCBhcyByZWFjaGFibGUuIFBvcnRzIHRoYXQgYXJlIHJlbW90ZWx5IGVudGFuZ2xlZCBhcmUg
bWFya2VkIGluLXVzZSBieSBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoKS4KLSAgICBpZiAo
TWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKKyAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSB3cmFwcGVkKCkubG9jYWxseUVudGFuZ2xlZFBvcnQoKSkK
ICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCiBKU0M6OkpTVmFsdWUg
SlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJmltcGwoKSk7CisgICAgcmV0dXJuIGhh
bmRsZVBvc3RNZXNzYWdlKHN0YXRlLCAmd3JhcHBlZCgpKTsKIH0KIAogdm9pZCBmaWxsTWVzc2Fn
ZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgTWVz
c2FnZVBvcnRBcnJheSYgcG9ydEFycmF5LCBBcnJheUJ1ZmZlckFycmF5JiBhcnJheUJ1ZmZlcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAppbmRleCBjNDY4YWFkNmE2MTRlNDlmMmE3
ZmM5OTIyZWMyYmFkMjQyNDJlYzVkLi5kZWFiYzU0MWRiMDZmMTA5ZTRkMGJmYzZjNzE5NDA5YjUx
ODliOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgdXNpbmcgRGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uUG9pbnQ7CiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lv
blBvaW50KEV4ZWNTdGF0ZSYpIGNvbnN0CiB7Ci0gICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBv
aW50ID0gaW1wbCgpLmRlY2lzaW9uUG9pbnQoKTsKKyAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9u
UG9pbnQgPSB3cmFwcGVkKCkuZGVjaXNpb25Qb2ludCgpOwogICAgIHN3aXRjaCAoZGVjaXNpb25Q
b2ludCkgewogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3Q6CiAg
ICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0OgpAQCAtNjksNyArNjksNyBAQCB2
b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbAogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGRE
YXRhOgogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGE6CiAg
ICAgY2FzZSBEZWNpc2lvblBvaW50OjpOZXZlcjoKLSAgICAgICAgaW1wbCgpLnNldERlY2lzaW9u
UG9pbnQoZGVjaXNpb25Qb2ludCk7CisgICAgICAgIHdyYXBwZWQoKS5zZXREZWNpc2lvblBvaW50
KGRlY2lzaW9uUG9pbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcsNyArMTA3
LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpk
ZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAogewotICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgp
LmRlY2lzaW9uKCkpOworICAgIHJldHVybiB0b0pTVmFsdWUod3JhcHBlZCgpLmRlY2lzaW9uKCkp
OwogfQogCiB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZvaWQg
SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaW1wbCgpLnNldERlY2lzaW9uKGRlY2lzaW9uKTsKKyAgICB3cmFwcGVk
KCkuc2V0RGVjaXNpb24oZGVjaXNpb24pOwogfQogCiBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbihFeGVjU3RhdGUmKSBjb25zdAogewot
ICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgpLnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSk7Cisg
ICAgcmV0dXJuIHRvSlNWYWx1ZSh3cmFwcGVkKCkudW5ibG9ja1JlcXVlc3REZWNpc2lvbigpKTsK
IH0KIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTEzMCw3ICsxMzAs
NyBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKUwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW1wbCgpLnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgd3JhcHBlZCgpLnNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24odW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CiB9CiAKIH07IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0
aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAzODA1NTcyNDcyMDI2YjJhNDhkNDIzMzZhNmNi
MDlkNDhiZGE2Yjg1Li5jNmM1NzI0MDNhZTZiNzgzMjQ2MmUwNjFiNmMzMjYxMzI0NDMyN2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlKiBleGVjKQogCiBib29s
IEpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25P
YnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+aW1wbCgpOworICAgIE11dGF0aW9u
T2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlcio+KGhhbmRsZS5z
bG90KCktPmFzQ2VsbCgpKS0+d3JhcHBlZCgpOwogICAgIGF1dG8gb2JzZXJ2ZWROb2RlcyA9IG9i
c2VydmVyLmdldE9ic2VydmVkTm9kZXMoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBvYnNlcnZlZE5v
ZGVzLmJlZ2luKCksIGVuZCA9IG9ic2VydmVkTm9kZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAodmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCgqaXQpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cAppbmRleCA4NDZjZjhmYWE4YzUxMWVmODIxNTE3MDFiNGEwMDhiYWZhMWJmY2QxLi5hMzFlNDZh
ODQzMjE4Yzk4NmE4NDEyYTQ4MDc2ZjA5ODliYjg0NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZh
bHVlKQogewotICAgIGF1dG8gaXRlbSA9IGltcGwoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgYXV0byBpdGVtID0gd3JhcHBlZCgp
LmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
ICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDNkNWZlMTI0ODY0
ODYzNGE2NGExZDg5NzVjNGFjMWJjM2QxYmQ5YjguLmYyNGMwNTVmYzg5YjlkZTdiOWE1NWM0ZTYw
ZTQ5MDcyY2FkOTU2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05h
dmlnYXRvckN1c3RvbS5jcHAKQEAgLTY4LDEzICs2OCwxMyBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9y
Ojp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgaWYgKCFpbXBsKCkuZnJhbWUoKSkgeworICAgIGlm
ICghd3JhcHBlZCgpLmZyYW1lKCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
Tk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CiAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBwcm90ZWN0IHRoZSBjb250ZXh0IChpLmUuIGRv
Y3VtZW50KSBoZXJlIGFzIFVzZXJNZWRpYVJlcXVlc3QgaXMgb2JzZXJ2aW5nIGNvbnRleHQgZGVz
dHJ1Y3Rpb24gYW5kIHdpbGwgY2hlY2sgdmFsaWRpdHkgYmVmb3JlIHJlc29sdmluZy9yZWplY3Rp
bmcgcHJvbWlzZS4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCkuZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3cmFwcGVkKCkuZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKIAogICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOjpj
cmVhdGUoYXNPYmplY3Qoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBnbG9iYWxPYmplY3Qo
KSk7CiAgICAgYXV0byByZXNvbHZlQ2FsbGJhY2sgPSBbc3VjY2Vzc0NhbGxiYWNrLCBkb2N1bWVu
dF0oY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFtPiYgc3RyZWFtKSBtdXRhYmxlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDJjMWE5ZjgzMGUzNTI3
MTU1YTZjZjM3ZDY3N2RjYjIwMmQxMzZjZTguLjMxMjNjOTQ2MDk1NGViZGIzNWQyMjhmOThkOTYx
Y2Y0N2ZjM2YyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcApAQCAtMTA4LDEzICsxMDgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVhY2hhYmxl
RnJvbURPTShOb2RlKiBub2RlLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIGJvb2wgSlNOb2RlT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNOb2RlKiBqc05v
ZGUgPSBqc0Nhc3Q8SlNOb2RlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIHJldHVy
biBpc1JlYWNoYWJsZUZyb21ET00oJmpzTm9kZS0+aW1wbCgpLCB2aXNpdG9yKTsKKyAgICByZXR1
cm4gaXNSZWFjaGFibGVGcm9tRE9NKCZqc05vZGUtPndyYXBwZWQoKSwgdmlzaXRvcik7CiB9CiAK
IEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmluc2VydEJlZm9yZShK
U05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFwcGVkKHN0
YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkuaW5zZXJ0QmVm
b3JlKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0b1dyYXBw
ZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAt
MTI0LDcgKzEyNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBz
dGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLnJlcGxhY2VD
aGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5hcmd1bWVudCgwKSksIEpTTm9kZTo6dG9XcmFw
cGVkKHN0YXRlLmFyZ3VtZW50KDEpKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVkKCkucmVw
bGFjZUNoaWxkKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgSlNOb2RlOjp0
b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMSkpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAgcmV0dXJuIHN0YXRlLmFyZ3VtZW50KDEp
OwpAQCAtMTM0LDcgKzEzNCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0
YXRlJiBzdGF0ZSkKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRl
KQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgb2sgPSBpbXBsKCkucmVt
b3ZlQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7CisgICAg
Ym9vbCBvayA9IHdyYXBwZWQoKS5yZW1vdmVDaGlsZChKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS5h
cmd1bWVudCgwKSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAg
aWYgKG9rKQogICAgICAgICByZXR1cm4gc3RhdGUuYXJndW1lbnQoMCk7CkBAIC0xNDQsNyArMTQ0
LDcgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1Zh
bHVlIEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBib29sIG9rID0gaW1wbCgpLmFwcGVuZENoaWxkKEpTTm9kZTo6
dG9XcmFwcGVkKHN0YXRlLmFyZ3VtZW50KDApKSwgZWMpOworICAgIGJvb2wgb2sgPSB3cmFwcGVk
KCkuYXBwZW5kQ2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgIGlmIChvaykKICAgICAgICAg
cmV0dXJuIHN0YXRlLmFyZ3VtZW50KDApOwpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTU2NvcGUqIEpT
Tm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogbm9k
ZSkgY29uc3QKIAogdm9pZCBKU05vZGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkp
OworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKSkpOwogfQogCiBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCmlu
ZGV4IDJiNDA0MGUzZDk2ZjE2N2U4NjViNjY4MDVhZjNkOTlhMDNiNDMwOGYuLmIzZjAzNjEzOWZh
MGZiMTgwNjQ4NGE2MTBkODRhYzVhYzU3Y2E0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUl0ZXJhdG9yOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChOb2RlRmls
dGVyKiBmaWx0ZXIgPSBpbXBsKCkuZmlsdGVyKCkpCisgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRl
ciA9IHdyYXBwZWQoKS5maWx0ZXIoKSkKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGZp
bHRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1
c3RvbS5jcHAKaW5kZXggZjdkODYzYjhlMzk1ZGJmY2YxMTNjYzY4NmIzNWY0Njg3NGQ1MDBhMi4u
YmEwNjJiZWEyOWI0NjAzZDRiNzE5YmNkNzdmYjZmMjcxZTMxZDA0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTQyLDEyICs0Miwx
MiBAQCBib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxpc3Qg
PSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBpZiAo
IWpzTm9kZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNMaXZlTm9kZUxpc3QoKSkKLSAgICAgICAg
cmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8TGl2ZU5v
ZGVMaXN0Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChqc05v
ZGVMaXN0LT5pbXBsKCkuaXNDaGlsZE5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2aXNpdG9y
LmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PENoaWxkTm9kZUxpc3QmPihqc05v
ZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7Ci0gICAgaWYgKGpzTm9kZUxpc3QtPmltcGwo
KS5pc0VtcHR5Tm9kZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFx
dWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8RW1wdHlOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmltcGwo
KSkub3duZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzTGl2ZU5v
ZGVMaXN0KCkpCisgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290
KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPndyYXBwZWQoKSkub3duZXJO
b2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC0+d3JhcHBlZCgpLmlzQ2hpbGROb2RlTGlzdCgp
KQorICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNf
Y2FzdDxDaGlsZE5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+d3JhcHBlZCgpKS5vd25lck5vZGUoKSkp
OworICAgIGlmIChqc05vZGVMaXN0LT53cmFwcGVkKCkuaXNFbXB0eU5vZGVMaXN0KCkpCisgICAg
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PEVt
cHR5Tm9kZUxpc3QmPihqc05vZGVMaXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVPclN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVP
clN0cmluZy5jcHAKaW5kZXggMzQzNjFhZjQ5NmE4ZGM5N2VjN2IzNDZhNWMwNDNkOTZmY2RiYjk1
Zi4uNDQ3YzVkNzAwZDU2NTFlYWRmMTQwNGJkM2E3YjFmNDg2MTEzMzI2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBWZWN0b3I8Tm9kZU9yU3RyaW5nPiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUmIHN0
YXRlKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7CiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKTsKICAgICAg
ICAgaWYgKGF1dG8qIG5vZGUgPSBqc0R5bmFtaWNDYXN0PEpTTm9kZSo+KHZhbHVlKSkKLSAgICAg
ICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoJm5vZGUtPmltcGwoKSk7CisgICAgICAgICAg
ICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCZub2RlLT53cmFwcGVkKCkpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUp
OwogICAgICAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAppbmRleCA5
OGM4ODE0OWYzOWUyYjBjYmE4MWQzNTJlNWI5YmRiMjkwNWNiMjk3Li4zYWRmODAyMjVjNDNiZmIz
ZGRiNTY3YjE2OTVjYWU3ZDAyNmJlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIE9zY2lsbGF0b3JOb2RlJiBpbXAg
PSBpbXBsKCk7CisgICAgT3NjaWxsYXRvck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVO
QUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcAppbmRl
eCA4NmMwM2VkM2ZiODkyNTlhY2Y5OGNlMzMyYTY5MjQyODdlZTNiMDFkLi42NzkwZjg0YTdjZWU5
ZjE2NjEyNmNmNjQxNDUwYzFiNDM0Njg0MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUGFubmVyTm9kZSYgaW1wID0gaW1w
bCgpOworICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShMRUdB
Q1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CkBAIC02Myw3ICs2Myw3
IEBAIHZvaWQgSlNQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIAogdm9pZCBKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBQYW5uZXJOb2RlJiBpbXAgPSBp
bXBsKCk7CisgICAgUGFubmVyTm9kZSYgaW1wID0gd3JhcHBlZCgpOwogCiAjaWYgRU5BQkxFKExF
R0FDWV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
CmluZGV4IGM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRjODRkYTkwY2EuLjgzMGMzMDU1
ODg0MWMwMjIyYmRmMmQ4ODEzZWRkN2IyMTc5MDVkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5W
aWV3QmFzZShIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRQogCiBzdGF0aWMgSlNPYmplY3QqIHBs
dWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxF
bGVtZW50KQogewotICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+aW1w
bCgpOworICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0ganNIVE1MRWxlbWVudC0+d3JhcHBlZCgp
OwogICAgIGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHBsdWdpblNj
cmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShKU0hUTUxFbGVtZW50KiBqc0hUTUxFbGVtZQog
CiBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MRWxl
bWVudCoganNIVE1MRWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRN
TEVsZW1lbnQtPmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpzSFRNTEVsZW1l
bnQtPndyYXBwZWQoKTsKICAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50KSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBDYWxsVHlwZSBw
bHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgQ2FsbERhdGEm
IGNhbGxEYXRhKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogICAgIH0KICAgICAKLSAg
ICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT5pbXBsKCkpOwor
ICAgIEluc3RhbmNlKiBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGVsZW1lbnQtPndyYXBwZWQo
KSk7CiAgICAgaWYgKCFpbnN0YW5jZSB8fCAhaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVmYXVs
dE1ldGhvZCgpKQogICAgICAgICByZXR1cm4gQ2FsbFR5cGVOb25lOwogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxQbHVnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA1Zjg2OWE5MTJlMDY2ZTQ5
YjUyZWU4YTBmMTRiZjY0NzVkYTJhOGE4Li45NWEwZmI3ODI1Y2IzMDZiMDQ4YmM3ODNjZmYxYzZi
OWExMTdiMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0
YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9w
U3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgSlNWYWx1ZSBKU1BvcFN0YXRl
RXZlbnQ6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gaW1wbCgpOwor
ICAgIFBvcFN0YXRlRXZlbnQmIGV2ZW50ID0gd3JhcHBlZCgpOwogCiAgICAgaWYgKCFldmVudC5z
dGF0ZSgpLmhhc05vVmFsdWUoKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBh
IFBvcFN0YXRlRXZlbnQgZG9lcyBub3QgbGVhayBvYmplY3RzIGluIGl0cyBzdGF0ZSBwcm9wZXJ0
eSBhY3Jvc3MgaXNvbGF0ZWQgRE9NIHdvcmxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCmluZGV4IDllZjVlOTNl
ZDFjZTVhZmFiYmQ5YWRjYjBkY2I2YTM4YjRmNGFkMTEuLjQwZTViOTBjYzI3ZThjNGUxMzMwMDJi
NjJkOGExMThhMDE3NDU3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNSVENTdGF0c1Jlc3BvbnNlOjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUp
CiB7Ci0gICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBhdXRvIGl0ZW0gPSB3cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICgh
aXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRleCBi
MzM2NGQyNjQ1MTQ1MjZiNTdiZmVlMGVkMThkZjVkNmQwNDBjODI0Li4zZWFlZjI2MTI1YmZhYjhm
N2Q1MmE1MjEzNjAyZGYwZjMxZmUyOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTQ3LDE3
ICs0NywxNyBAQCBKU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUm
IHN0YXRlKQogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBUWVBFX01JU01BVENIX0VS
Uik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBpZiAoaW5kZXgg
PCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSBpbXBsKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAoaW5k
ZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSB3cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5ERVhfU0laRV9FUlIpOwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKIAotICAgIHVuc2lnbmVkIG51bUNvbHVtbnMgPSBpbXBs
KCkuY29sdW1uTmFtZXMoKS5zaXplKCk7CisgICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IHdyYXBw
ZWQoKS5jb2x1bW5OYW1lcygpLnNpemUoKTsKICAgICB1bnNpZ25lZCB2YWx1ZXNJbmRleCA9IGlu
ZGV4ICogbnVtQ29sdW1uczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29sdW1u
czsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IGltcGwoKS52YWx1ZXMo
KVt2YWx1ZXNJbmRleCArIGldOworICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSB3cmFw
cGVkKCkudmFsdWVzKClbdmFsdWVzSW5kZXggKyBpXTsKICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVl
OwogCiAgICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CkBAIC03NCw3ICs3NCw3IEBAIEpT
VmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBp
bXBsKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7
CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCB3cmFwcGVkKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAK
aW5kZXggOTVhOGRmY2U4NWEzMjZiYjMxNWIwZGYyYmVmMWU4NDQwYmExNTFmZi4uNzQyMTI1NmIw
NDZhOGQ3MjY4ZTIzNjdkYzJlMTNjZmFhYzIyNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTEwOSw3ICsx
MDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCkuZXhl
Y3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHdyYXBwZWQoKS5leGVjdXRlU1FMKHNxbFN0
YXRlbWVudCwgc3FsVmFsdWVzLCBjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVs
ZWFzZSgpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NW
R0xlbmd0aEN1c3RvbS5jcHAKaW5kZXggYjZmMGNmODM2MTVmNzFlNjU1ODhjZTNkZTNmY2JiYWRk
MTViNmVkZS4uNjRlMTEyODQ2Zjg3ZTI2YmE0NWY0MDMxMzA2ODNjODRiMGJhYTdlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcApAQCAt
MzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6
OnZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Ci0gICAgU1ZHTGVuZ3RoJiBwb2RJbXAg
PSBpbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICBTVkdMZW5ndGgmIHBvZEltcCA9IHdy
YXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVsZW1lbnQo
KSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5jb250ZXh0
RWxlbWVudCgpKTsKICAgICBmbG9hdCB2YWx1ZSA9IHBvZEltcC52YWx1ZShsZW5ndGhDb250ZXh0
LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVj
KTsKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6dmFsdWUoRXhlY1N0YXRl
JiBzdGF0ZSkgY29uc3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoaW1wbCgpLmlzUmVhZE9ubHkoKSkgewor
ICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC01NywyNyArNTcsMjcgQEAgdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAg
U1ZHTGVuZ3RoJiBwb2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4
dChpbXBsKCkuY29udGV4dEVsZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhD
b250ZXh0KHdyYXBwZWQoKS5jb250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuc2V0VmFsdWUo
dmFsdWUudG9GbG9hdCgmc3RhdGUpLCBsZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGltcGwoKS5jb21taXRDaGFuZ2UoKTsKKyAgICB3cmFwcGVkKCkuY29tbWl0
Q2hhbmdlKCk7CiB9CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVu
aXRzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGltcGwoKS5pc1JlYWRPbmx5KCkpIHsK
KyAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBTVkdMZW5ndGgmIHBvZEltcCA9IGltcGwoKS5w
cm9wZXJ0eVJlZmVyZW5jZSgpOworICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnBy
b3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKQEAgLTg3LDE0ICs4NywxNCBAQCBKU1Zh
bHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3RhdGUmIHN0YXRl
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChpbXBsKCkuY29udGV4dEVs
ZW1lbnQoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHdyYXBwZWQoKS5j
b250ZXh0RWxlbWVudCgpKTsKICAgICBwb2RJbXAuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5p
dFR5cGUsIGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICB9CiAKLSAgICBpbXBsKCkuY29tbWl0Q2hhbmdlKCk7CisgICAgd3JhcHBlZCgpLmNvbW1pdENo
YW5nZSgpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCA1ODVkNzI0N2I2MWJhMDkw
ZDQxZDA4NjE2ZTUyZjI1MTBlM2Y0ZDNmLi5iODQyMzRiMTdlNWIxYjQ2NTEwYjBlZTVjZTIyNTlj
MjEwOWFhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1
c3RvbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgYm9vbCBKU1N0b3JhZ2U6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcg
aXRlbSA9IGltcGwoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSks
IGVjKTsKKyAgICBTdHJpbmcgaXRlbSA9IHdyYXBwZWQoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OwogCiAgICAgaWYgKGl0ZW0uaXNOdWxsKCkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSlNTdG9y
YWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgdGhpc09iamVjdC0+aW1wbCgpLnJlbW92ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgZWMpOworICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5yZW1vdmVJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsMTIgKzgzLDEyIEBAIHZv
aWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aChlYyk7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aChlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCkua2V5KGksIGVjKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5r
ZXkoaSwgZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOCw3
ICsxMTgsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLnNldEl0ZW0ocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKKyAgICB3cmFwcGVk
KCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1
ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20u
Y3BwCmluZGV4IDBhNjlhMmU2ZmQyM2MyOTgzZjc5OGY0ZDA1ZjI2MTcxNzFhZjYzNDAuLmNiOTM5
N2VmN2QzMWQ5NmUwNjVjMDJmNGY0OTA3YzYxNGMzZTgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNTdHlsZVNoZWV0Ojp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KCZpbXBsKCkpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9v
dCgmd3JhcHBlZCgpKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCogc3R5bGVTaGVldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAKaW5kZXggZDFjNjA2NWE5NzU4MGYyOTdlNmVjMjQ3YmZmZjgxNzRiODk5NTZjMS4u
YzQyMjJhOWUzNGFmMjY1NTU4YmVlZWU3ZTg1MTJjMzU2MjExNWY0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKICAgICBpZiAocHJvcGVydHlO
YW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGl0ZW0g
PSBpbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIGF1dG8qIGl0ZW0gPSB3cmFwcGVkKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0
b0N1c3RvbS5jcHAKaW5kZXggZjViYTRkMzAyOWNkNjg4ZjkzNWVmZTMwYjc5ZDc5YmUyMjM0N2Yy
OS4uYTUwZjgzOTliYTU4NjRkMDFhYjEzMGM4ZmNkNTFkZTRlYmRlZTZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAt
MTUyLDcgKzE1Miw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBp
ZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKLSAgICAgICAgaW1wbCgp
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2Vu
Y3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
S2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CiAgICAgICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQpAQCAtMjA1LDcgKzIwNSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlw
dG86OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRGVjcnlw
dCkpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2Fn
ZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOworICAgICAgICB3cmFwcGVkKCkuZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZGVjcnlwdCci
KSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjU3LDcgKzI1Nyw3IEBA
IEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENy
eXB0b0tleVVzYWdlU2lnbikpIHsKLSAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxp
dGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOworICAgICAgICB3cmFw
cGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVk
ZSAnc2lnbiciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JU
RURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMzA5LDcg
KzMwOSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRl
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAogICAgIGlmICgha2V5
LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpKSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVu
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnknIikp
OworICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdl
cyBkbyBub3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CkBAIC02NDYsNyArNjQ2LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3JhcEtl
eShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKIAogICAgIGlmICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBLZXkp
KSB7Ci0gICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2Vz
IGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKKyAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikp
OwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBK
U1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBpbmdL
ZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKLSAgICAgICAgaW1wbCgpLmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3Vud3Jh
cEtleSciKSk7CisgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJL
ZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOwogICAgICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA1N2Y4OGI5NTVjZjU4NTE4OGMyYTZiZWU0ZGY3
NzRmNGYyOTUxYmVmLi5kZWI0NDBiM2FiZWFiN2I4ZmU0MjIwYjdiYWFkMTAyMjBhNDk3YjhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0
b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgSlNUZXh0
VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBK
U1RleHRUcmFja0N1ZSoganNUZXh0VHJhY2tDdWUgPSBqc0Nhc3Q8SlNUZXh0VHJhY2tDdWUqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGV4dFRyYWNrQ3VlJiB0ZXh0VHJhY2tDdWUg
PSBqc1RleHRUcmFja0N1ZS0+aW1wbCgpOworICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNrQ3Vl
ID0ganNUZXh0VHJhY2tDdWUtPndyYXBwZWQoKTsKIAogICAgIC8vIElmIHRoZSBjdWUgaXMgZmly
aW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKICAg
ICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBs
aXN0ZW5lcnMuCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUqIGN1ZSkKIAogdm9pZCBK
U1RleHRUcmFja0N1ZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gaW1wbCgpLnRyYWNrKCkpCisg
ICAgaWYgKFRleHRUcmFjayogdGV4dFRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCkpCiAgICAgICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHRleHRUcmFjaykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggZWIxOWYy
NTc4NzE5OWYxZTcwZTk5YWY3YWQyZmIwNDI3Y2U5Zjc1ZC4uN2ZjZTZhZDJhZTVkNGYxZTFiMzEy
MDc4OTU1ZWEwZjY4NDBhY2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZpbXBsKCkp
KTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKIHZv
aWQgSlNUZXh0VHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBKU1RleHRUcmFjazo6c2V0S2luZChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZz
dGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCku
c2V0S2luZChzdHJpbmcpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6OnNl
dExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXV0byYgc3Ry
aW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFuZ3Vh
Z2Uoc3RyaW5nKTsKKyAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAK
aW5kZXggZTFiOGM2MzA5OTI2MWQxZjJiOWY1ZTdhNGZmNWRiNjUyYTkwYTg1NC4uM2Y0NmY0MzMx
YmJiZTY2ODEyNzcxMTRmYjNiNDJmMjRiZmU5Y2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1RleHRUcmFja0xpc3Q6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLmVsZW1lbnQoKSkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5lbGVtZW50KCkpKTsKIH0KICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3Rv
bS5jcHAKaW5kZXggOTc1MTQ2NzI0ZGIwMjY5MDU0NDQ1ODlhZGQ5MmY0MWJiNDUzMDhjNS4uOWE5
NDM2YWY4MDlhY2ZhYjZkYzUwOTg4NjhjNmU1OTZmODBkZjhmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQCBUcmFj
a0Jhc2UqIHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNUZXh0VHJhY2s6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiAmanNDYXN0PEpTVGV4dFRyYWNrKj4ob2JqZWN0KS0+aW1w
bCgpOworICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU1RleHRUcmFjayo+KG9iamVjdCktPndyYXBw
ZWQoKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0F1ZGlvVHJhY2s6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiAmanNDYXN0PEpTQXVkaW9UcmFjayo+KG9iamVjdCktPmltcGwoKTsKKyAg
ICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwog
ICAgIGlmIChvYmplY3QtPmluaGVyaXRzKEpTVmlkZW9UcmFjazo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuICZqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICBy
ZXR1cm4gJmpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihvYmplY3QpLT53cmFwcGVkKCk7CiAKICAgICBy
ZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJh
Y2tFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZl
bnRDdXN0b20uY3BwCmluZGV4IGY1MWQzYjk2M2M4MTgwM2NmZTcxYjk0N2I0MmM5ZGJkMDJiYjg1
YmUuLmVhYjZmZjIxMzhjNTNkN2UzZmViNjQ0OWIwNmQ3MWIzZGYyZTVjMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNUcmFja0V2ZW50Ojp0
cmFjayhFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIFRyYWNrQmFzZSogdHJhY2sgPSBp
bXBsKCkudHJhY2soKTsKKyAgICBUcmFja0Jhc2UqIHRyYWNrID0gd3JhcHBlZCgpLnRyYWNrKCk7
CiAgICAgaWYgKCF0cmFjaykKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAppbmRleCBjMWU2
ODFkNDk3YjQ0YzBiNDhlMzdhN2ZlYTA4MWIxMmQwZmMzNWQ3Li4yYmUwOGE5OTFmN2RkMTRlZjlh
MmE2MmQxOGYzMWQ5Y2YxNzE1M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlND
OjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0g
aW1wbCgpLmZpbHRlcigpKQorICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSB3cmFwcGVkKCku
ZmlsdGVyKCkpCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcAppbmRleCA4ZmM2ZWY4ZmIzMGQyMGIz
OWJkMDk4ZTJmMTkzMDU5MmZmNDI4YWZiLi5hZGY0OTM2NDczYjQyM2RjMTJkZWM3YWQ4MGRiZjcy
MGFiM2VhOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
aWYgKFVzZXJNZXNzYWdlSGFuZGxlciogaGFuZGxlciA9IGltcGwoKS5oYW5kbGVyKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIGdsb2JhbE9iamVjdCgpLT53b3JsZCgp
KSkgeworICAgIGlmIChVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSB3cmFwcGVkKCkuaGFu
ZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxPYmpl
Y3QoKS0+d29ybGQoKSkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGFuZGxl
cikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA2ZjBhZjVhZjVhOGVhMWUx
ZWE3ZTVmZTE5MWUwYzgwN2MyMDQxZTkwLi5kODI4ZTEyZmEwYzYyZTA4M2IwMzZiOWM3NDNmMDQw
ZTRjNjdmOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJmltcGwoKSkpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAogdm9pZCBKU1Zp
ZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUp
LT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGltcGwoKS5zZXRLaW5kKHN0cmluZyk7CisgICAgd3JhcHBlZCgpLnNldEtp
bmQoc3RyaW5nKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odmFsdWUpOwpAQCAtNTksNyArNTksNyBAQCB2b2lkIEpTVmlkZW9UcmFjazo6c2V0TGFu
Z3VhZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBhdXRvJiBzdHJpbmcg
PSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS5zZXRMYW5ndWFnZShz
dHJpbmcpOworICAgIHdyYXBwZWQoKS5zZXRMYW5ndWFnZShzdHJpbmcpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCmlu
ZGV4IDY2ZDdiZWEzZTAwZTBkZTNhZjAxODE1ZGE2YjkyMWRlZGRiYzEzMTQuLmEyYTM2MTg0YTRl
ZWQ0OTU1Mjk1YTFlNTg3N2I5ZGU0MDFlNjYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkuZWxlbWVudCgpKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3Qod3JhcHBlZCgpLmVsZW1lbnQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA5OWZmNzAzYzQ2NDlhNjMwNGU2
ODhiZmRhMDFlNmY4YjEwZmNmNDZiLi43YzRlYzA4MTg3ODFjODcyMWVjZmJkNzU1MGZkNjE2ODFi
ZjJhMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3Rh
dGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFdlYkcKIAogdm9pZCBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZp
c2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJndy
YXBwZWQoKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRl
cm5hbGZvcm1hdFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC05OSw3ICs5OSw3IEBAIEpT
VmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDIpCiAgICAgICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRl
eHQgPSBpbXBsKCk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCA9IHdyYXBw
ZWQoKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
SW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCmluZGV4IDRl
NGU1Y2E5OGZjMTQ5MDJhMmNjMDAwYjZhYjA2Mzg5MGEyMWIxNjUuLjgzMWNmNTkxZWQ3ZDA4ZTlh
MDhlMTY0MmE5NWEzMWM0NjYxZmRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNw
cApAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRlcihK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRlJiBzCiAgICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+aW1wbCgpOworICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPndyYXBwZWQoKTsKICAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZz
dGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbgog
CiB2b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZp
bXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVj
U3RhdGUmIHN0YXRlKQpAQCAtMjczLDcgKzI3Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJH
TFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTI5Niw3ICsy
OTYsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5zaW9u
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCi0gICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpAQCAtMzE1LDcgKzMxNSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlCiAgICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2lnbmVk
IHRhcmdldCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsKICAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpAQCAtMzM5LDcgKzMzOSw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTM1Nyw3ICsz
NTcsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBh
cmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQgPSBpbXBsKCk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dl
YkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwpAQCAtMzgzLDcg
KzM4Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
YXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5p
bmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRlcjo6
dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKQEAgLTQwMCw3ICs0MDAsNyBA
QCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IGltcGwoKTsKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmIChjb250ZXh0LmlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIFZlY3RvcjxTdHJpbmc+
IHZhbHVlID0gY29udGV4dC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CkBAIC00MjEsNyArNDIx
LDcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0ID0gaW1wbCgpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQg
PSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06
OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFt
ICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTY5MSw3NyArNjkxLDc3IEBA
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJp
eFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0xZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJl
dHVybiBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTF2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1
cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0xdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpT
Qzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTF2
LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0xdiwg
c3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVy
biBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTJ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4g
ZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0ydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTJ2LCBz
dGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0ydiwgc3Rh
dGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0zZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25mKGZfdW5pZm9ybTN2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0
YUZ1bmN0aW9uZihmX3VuaWZvcm0zdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTN2LCBzdGF0
ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwgc3RhdGUs
IHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBkYXRh
RnVuY3Rpb25mKGZfdW5pZm9ybTR2LCBzdGF0ZSwgaW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1
bmN0aW9uZihmX3VuaWZvcm00diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlKQogewotICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTR2LCBzdGF0ZSwg
aW1wbCgpKTsKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm00diwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgyZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4MmZ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJmdiwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXgzZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4M2Z2LCBzdGF0ZSwgaW1wbCgpKTsKKyAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNmdiwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm1NYXRyaXg0ZnYoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBk
YXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4NGZ2LCBzdGF0ZSwgaW1wbCgpKTsKKyAg
ICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDRmdiwgc3RhdGUsIHdy
YXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZlcnRleEF0dHJpYjFmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRh
dGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJu
IGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIxdiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAK
IEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjJm
dihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92
ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYo
Zl92ZXJ0ZXhBdHRyaWIydiwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjNmdihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIzdiwg
c3RhdGUsIGltcGwoKSk7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWIz
diwgc3RhdGUsIHdyYXBwZWQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZlcnRleEF0dHJpYjRmdihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIGltcGwoKSk7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl92ZXJ0ZXhBdHRyaWI0diwgc3RhdGUsIHdyYXBw
ZWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cAppbmRleCBiNmQzOWFjMDcwZjU5NzczNzg5ODkxMjk5ZGRlMDAyMzU3MjU4MGQyLi5lZGU1YmI5
N2E4NjhhNDIxZjM1NzlmNDg3Zjc1OTlkYzg3NGU1ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgdmlzaXRvci5hZGRPcGFxdWVSb290KCZpbXBsKCkpOworICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdCgmd3JhcHBlZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmluZGV4
IDA1YTllNzAyZTdjODE5YmY3Yjc1MWQ5YmU3N2MxMTJiZTM1OTRmYjMuLjBlZmJkMTJmMDMzNDk2
ZWMzY2UyY2QwNmYxOTE3YjZmMWZkM2ViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsICZpbXBsKCkp
OworICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgJndyYXBwZWQoKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRl
KiBleGVjKQpAQCAtNTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgLy8gU2VlIHNlY3Rpb24gNC44LjIgc3RlcCAxNCBv
ZiBXZWJXb3JrZXJzIGZvciB3aHkgdGhpcyBpcyB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gCi0g
ICAgRE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPmltcGwoKTsKKyAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFzSlNET01XaW5kb3co
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d3JhcHBlZCgpOwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgQVNTRVJUKHdpbmRvdy5kb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApp
bmRleCBhY2Q2MTdlODY5ODkyOTA3NTM3NmU1ODMyYWIyODNmMmQyZmE3OTAwLi41OGRhNzVlOGU3
MzI5NDk1OWRlMWJhNjM3NjczYjNjNzg4NTJmOGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAKIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKICAgICA6IEpTRE9N
R2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKQotICAgICwgbV9pbXBsKGltcGwpCisgICAgLCBtX3dyYXBwZWQoaW1w
bCkKIHsKIH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAg
IHJldHVybiBtX2ltcGwuZ2V0KCk7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0KIAog
Ym9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0ds
b2JhbE9iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAppbmRleCAwMzE1MzBl
ZTU4NjEzOWZjNWFiNmY4Yjg4NTE0YjU4NDgxMWM3MmRlLi4yZGU4Y2M0ZmEwNjhlZDM0NDIwNmYx
MDA4YjRjYTZhN2U2Yjc2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAotICAgICAgICBXb3JrZXJHbG9i
YWxTY29wZSYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAqbV93cmFwcGVkOyB9CiAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dDsKIAogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX2ltcGw7CisgICAgICAgIFJlZlB0cjxXb3JrZXJH
bG9iYWxTY29wZT4gbV93cmFwcGVkOwogICAgIH07CiAKICAgICAvLyBSZXR1cm5zIGEgSlNXb3Jr
ZXJHbG9iYWxTY29wZSBvciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCAxMjg5OGNjOTc1
YmVmNTAwYjNiMTBkYmFmMWY2NTBhODZkYzNjMzAyLi5hOTQ1NzczMmQyMjhjZmE5YWNhODAzNTVm
ZTNmNDJkN2RmYTE1OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtNTMsOSArNTMsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFdvcmtlckxvY2F0
aW9uKiBsb2NhdGlvbiA9IGltcGwoKS5vcHRpb25hbExvY2F0aW9uKCkpCisgICAgaWYgKFdvcmtl
ckxvY2F0aW9uKiBsb2NhdGlvbiA9IHdyYXBwZWQoKS5vcHRpb25hbExvY2F0aW9uKCkpCiAgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChsb2NhdGlvbik7Ci0gICAgaWYgKFdvcmtlck5hdmln
YXRvciogbmF2aWdhdG9yID0gaW1wbCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkpCisgICAgaWYgKFdv
cmtlck5hdmlnYXRvciogbmF2aWdhdG9yID0gd3JhcHBlZCgpLm9wdGlvbmFsTmF2aWdhdG9yKCkp
CiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChuYXZpZ2F0b3IpOwogfQogCkBAIC04MCwz
MSArODAsMzEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAg
aW1wbCgpLmltcG9ydFNjcmlwdHModXJscywgZWMpOworICAgIHdyYXBwZWQoKS5pbXBvcnRTY3Jp
cHRzKHVybHMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0
VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVs
ZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFs
T2JqZWN0KCktPndvcmxkKCksIGltcGwoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9u
OjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmICghYWN0aW9uKQogICAgICAgICByZXR1
cm4ganNOdW1iZXIoMCk7CiAgICAgaW50IGRlbGF5ID0gc3RhdGUuYXJndW1lbnQoMSkudG9JbnQz
Migmc3RhdGUpOwotICAgIHJldHVybiBqc051bWJlcihpbXBsKCkuc2V0VGltZW91dChXVEY6Om1v
dmUoYWN0aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNldFRp
bWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAKIEpTVmFsdWUgSlNXb3JrZXJH
bG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0
ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBpbXBsKCkuY29udGVudFNlY3VyaXR5
UG9saWN5KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9
IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCks
IHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIWFjdGlv
bikKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogICAgIGludCBkZWxheSA9IHN0YXRlLmFy
Z3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKLSAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLnNl
dEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSkpOworICAgIHJldHVybiBqc051bWJl
cih3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5KSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggOTE1YjA2Mjg3NDBlNzdlYTBk
YTcwYTdmYmJlY2RiNzE4MGNiYTZiZC4uODliM2JjZmJiMmM2NGIyZTNiOGVmMWJmOGY2Mzc5NmQ2
YjhiMjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTU4LDE2ICs1OCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxv
YWQgPSBpbXBsKCkub3B0aW9uYWxVcGxvYWQoKSkKKyAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxv
YWQqIHVwbG9hZCA9IHdyYXBwZWQoKS5vcHRpb25hbFVwbG9hZCgpKQogICAgICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QodXBsb2FkKTsKIAotICAgIGlmIChEb2N1bWVudCogcmVzcG9uc2VEb2N1
bWVudCA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCisgICAgaWYgKERvY3VtZW50KiBy
ZXNwb25zZURvY3VtZW50ID0gd3JhcHBlZCgpLm9wdGlvbmFsUmVzcG9uc2VYTUwoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlRG9jdW1lbnQpOwogCi0gICAgaWYgKEFy
cmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyID0gaW1wbCgpLm9wdGlvbmFsUmVzcG9uc2VB
cnJheUJ1ZmZlcigpKQorICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9
IHdyYXBwZWQoKS5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKICAgICAgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCi0gICAgaWYgKEJsb2IqIHJl
c3BvbnNlQmxvYiA9IGltcGwoKS5vcHRpb25hbFJlc3BvbnNlQmxvYigpKQorICAgIGlmIChCbG9i
KiByZXNwb25zZUJsb2IgPSB3cmFwcGVkKCkub3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKICAgICAg
ICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJlc3BvbnNlQmxvYik7CiB9CiAKQEAgLTc3LDcgKzc3
LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKLSAgICBjb25zdCBVUkwmIHVybCA9IGltcGwoKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbXBsZXRlVVJMKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5n
KCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgIGNvbnN0IFVSTCYgdXJsID0gd3JhcHBlZCgp
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CiAgICAgU3RyaW5nIG1l
dGhvZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTg4LDEzICs4OCwxMyBA
QCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAg
ICAgICAgICAgaWYgKCFzdGF0ZS5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAg
ICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soJnN0
YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCg0KSk7Ci0gICAgICAgICAgICAgICAgaW1wbCgp
Lm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgZWMpOworICAgICAgICAg
ICAgICAgIHdyYXBwZWQoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dvcmQs
IGVjKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGltcGwoKS5vcGVuKG1l
dGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIHdyYXBwZWQoKS5v
cGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAgICAg
d3JhcHBlZCgpLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYyk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGltcGwoKS5vcGVuKG1ldGhvZCwgdXJsLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5vcGVu
KG1ldGhvZCwgdXJsLCBlYyk7CiAKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMzgsMzAgKzEzOCwzMCBAQCBwcml2YXRlOgog
CiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoaW1wbCgp
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLnVybCgpKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qod3JhcHBlZCgpLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgd3JhcHBlZCgpLnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIEpTVmFsdWUgdmFsID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgaWYgKHZh
bC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICBpbXBsKCkuc2VuZChlYyk7CisgICAgICAg
IHdyYXBwZWQoKS5zZW5kKGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNEb2N1bWVu
dDo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVkKHZh
bCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNlbmQoSlNEb2N1bWVudDo6dG9XcmFwcGVkKHZh
bCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQotICAg
ICAgICBpbXBsKCkuc2VuZChKU0Jsb2I6OnRvV3JhcHBlZCh2YWwpLCBlYyk7CisgICAgICAgIHdy
YXBwZWQoKS5zZW5kKEpTQmxvYjo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2
YWwuaW5oZXJpdHMoSlNET01Gb3JtRGF0YTo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQo
SlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKKyAgICAgICAgd3JhcHBlZCgpLnNl
bmQoSlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbCksIGVjKTsKICAgICBlbHNlIGlmICh2YWwu
aW5oZXJpdHMoSlNBcnJheUJ1ZmZlcjo6aW5mbygpKSkKLSAgICAgICAgaW1wbCgpLnNlbmQodG9B
cnJheUJ1ZmZlcih2YWwpLCBlYyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHRvQXJyYXlCdWZm
ZXIodmFsKSwgZWMpOwogICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0FycmF5QnVmZmVyVmll
dzo6aW5mbygpKSkgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB2aWV3ID0gdG9B
cnJheUJ1ZmZlclZpZXcodmFsKTsKLSAgICAgICAgaW1wbCgpLnNlbmQodmlldy5nZXQoKSwgZWMp
OworICAgICAgICB3cmFwcGVkKCkuc2VuZCh2aWV3LmdldCgpLCBlYyk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGltcGwoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpLCBl
Yyk7CisgICAgICAgIHdyYXBwZWQoKS5zZW5kKHZhbC50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpLCBlYyk7CiAKICAgICBTZW5kRnVuY3RvciBmdW5jdG9yOwogICAgIHN0YXRlLml0ZXJh
dGUoZnVuY3Rvcik7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5kTGluZUFuZENvbHVtbk51bWJlcihm
dW5jdG9yLmxpbmUoKSwgZnVuY3Rvci5jb2x1bW4oKSk7Ci0gICAgaW1wbCgpLnNldExhc3RTZW5k
VVJMKGZ1bmN0b3IudXJsKCkpOworICAgIHdyYXBwZWQoKS5zZXRMYXN0U2VuZExpbmVBbmRDb2x1
bW5OdW1iZXIoZnVuY3Rvci5saW5lKCksIGZ1bmN0b3IuY29sdW1uKCkpOworICAgIHdyYXBwZWQo
KS5zZXRMYXN0U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xNjksNyArMTY5LDcg
QEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiBKU1Zh
bHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGVjU3RhdGUmIHN0YXRlKSBjb25z
dAogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyB0ZXh0ID0gaW1wbCgp
LnJlc3BvbnNlVGV4dChlYyk7CisgICAgU3RyaW5nIHRleHQgPSB3cmFwcGVkKCkucmVzcG9uc2VU
ZXh0KGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE4MCwyNSArMTgwLDI1IEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0CiBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSBDYWNoZWRBdHRyaWJ1dGUgZm9yIG90aGVy
IHR5cGVzIHRoYW4gSlNPTiBhcyB3ZWxsLgotICAgIGlmIChtX3Jlc3BvbnNlICYmIGltcGwoKS5y
ZXNwb25zZUNhY2hlSXNWYWxpZCgpKQorICAgIGlmIChtX3Jlc3BvbnNlICYmIHdyYXBwZWQoKS5y
ZXNwb25zZUNhY2hlSXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9yZXNwb25zZS5nZXQoKTsK
IAotICAgIGlmICghaW1wbCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgaW1wbCgpLnJlc3BvbnNl
VHlwZUNvZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQorICAgIGlmICgh
d3JhcHBlZCgpLmRvbmVXaXRob3V0RXJyb3JzKCkgJiYgd3JhcHBlZCgpLnJlc3BvbnNlVHlwZUNv
ZGUoKSA+IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVUZXh0KQogICAgICAgICByZXR1cm4g
anNOdWxsKCk7CiAKLSAgICBzd2l0Y2ggKGltcGwoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKKyAg
ICBzd2l0Y2ggKHdyYXBwZWQoKS5yZXNwb25zZVR5cGVDb2RlKCkpIHsKICAgICBjYXNlIFhNTEh0
dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEZWZhdWx0OgogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6
OlJlc3BvbnNlVHlwZVRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUpOwog
CiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlSlNPTjoKICAgICAgICAgewot
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIGltcGwoKS5yZXNw
b25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBKU09OUGFyc2UoJnN0YXRlLCB3cmFwcGVkKCkucmVzcG9uc2VUZXh0SWdub3JpbmdSZXNw
b25zZVR5cGUoKSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIHZh
bHVlID0ganNOdWxsKCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldChzdGF0ZS52bSgpLCB0
aGlzLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGltcGwoKS5kaWRDYWNoZVJlc3BvbnNlSlNPTigp
OworICAgICAgICAgICAgd3JhcHBlZCgpLmRpZENhY2hlUmVzcG9uc2VKU09OKCk7CiAKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQpAQCAtMjA2LDcgKzIwNiw3IEBAIEpTVmFs
dWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVEb2N1bWVudDoKICAgICAgICAgewog
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBpbXBsKCkucmVzcG9uc2VYTUwoZWMpOworICAgICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gd3JhcHBlZCgpLnJlc3BvbnNlWE1MKGVjKTsKICAgICAgICAgICAgIGlmIChl
YykgewogICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBAIEpT
VmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QK
ICAgICAgICAgfQogCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlQmxvYjoK
LSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLnJlc3Bv
bnNlQmxvYigpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwg
d3JhcHBlZCgpLnJlc3BvbnNlQmxvYigpKTsKIAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJl
c3BvbnNlVHlwZUFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpLCBpbXBsKCkucmVzcG9uc2VBcnJheUJ1ZmZlcigpKTsKKyAgICAgICAgcmV0dXJu
IHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3BvbnNlQXJyYXlCdWZm
ZXIoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCmluZGV4IDI0MTZk
Njc5MDgxMzkxM2YxM2VjMGE1MTljNWYxMDg2YzI2MzU4NTYuLjVkMzQ4NmU4NTljNjQyNTY2Nzdj
ZDg3YmNhYmZjN2I2YTE2MDM0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdm9pZCBKU1hQYXRoUmVzdWx0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8mIHZhbHVlID0gaW1wbCgpLnZh
bHVlKCk7CisgICAgYXV0byYgdmFsdWUgPSB3cmFwcGVkKCkudmFsdWUoKTsKICAgICBpZiAodmFs
dWUuaXNOb2RlU2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogdmFsdWUudG9Ob2Rl
U2V0KCkpCiAgICAgICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlLmdldCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29y
Q3VzdG9tLmNwcAppbmRleCAzMzFiOWYxYjBiYmY1NzlhYzQ1MmQwN2VkYzFiOWY2NThmY2Y2MTVm
Li4xNTJiODczNzAwYjlhMGRjNDY4Y2MwM2ZiMDllMWE0MzI0ZGM3NjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihFeGVj
U3RhdGUmIHN0YXRlKQogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBs
b2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyB2YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDIpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnNldFBhcmFt
ZXRlcihuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOworICAgIHdyYXBwZWQoKS5zZXRQ
YXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nv
cjo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpOwotICAgIFN0cmluZyB2YWx1ZSA9IGltcGwoKS5nZXRQYXJhbWV0ZXIobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUpOworICAgIFN0cmluZyB2YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJhbWV0
ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZp
bmVkKCZzdGF0ZSwgdmFsdWUpOwogfQogCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNYU0xU
UHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgU3Ry
aW5nIGxvY2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgaW1wbCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSk7CisgICAgd3JhcHBlZCgpLnJlbW92ZVBhcmFtZXRlcihuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDA1OGM5MWM5
MjQ0YTVjODBhZTllOGYwZmI2NGFlMGE4NDZhM2Q1ZDMuLmZlYmQyOTAwZTYyNWU3Y2UzNmZjNzI5
MzM3YTQ5MmI4Mzk2ZDVkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLmZyYW1l
KCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKEFi
b3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAwNDMw
YmE3ZmQ1M2NhYzJjNTQyZTg2MzIwNGRhYmFjNWZhMGJhZjE1Li4xY2NjZjhhZjIxMDBmMDdmNTA1
ZmU2N2JmYzAwYjU5NDQ4OTk0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBT
Y3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogICAgICAgICAgICAg
d2luZG93U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ctPnZtKCksIHdpbmRvdyk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBmcmFtZS5kb2N1bWVudCgp
LT5kb21XaW5kb3coKTsKLSAgICAgICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5p
bXBsKCkgPT0gZG9tV2luZG93KQorICAgICAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2luZG93
KCktPndyYXBwZWQoKSA9PSBkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZG9tV2luZG93KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjE2MWU2
NmY4ZDkyYzgwYzRmYzhiMmI3MjZiYzI0ODY1N2RkNTJkOS4uNjI5YzQyMTNhZThmYTFiNmU5ZDI2
ZGUwMDNmZjRlMTBiNjZlOWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmNsZWFyV2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29p
bmdJbnRvUAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93U2hlbGxzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gd2luZG93U2hl
bGxzW2ldLmdldCgpOwogCi0gICAgICAgIGlmICgmd2luZG93U2hlbGwtPndpbmRvdygpLT5pbXBs
KCkgPT0gbmV3RE9NV2luZG93KQorICAgICAgICBpZiAoJndpbmRvd1NoZWxsLT53aW5kb3coKS0+
d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50IHdp
bmRvdyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KQEAgLTM5MSw3ICszOTEsNyBAQCB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6
OnBhaXI8SlNDOjpFeGVjU3RhdGUqLAogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBtX3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgp
OyArK2l0ZXIpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBpdGVyLT52YWx1ZS0+
d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9
IGl0ZXItPnZhbHVlLT53aW5kb3coKS0+aW1wbCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCk7CisgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBpdGVyLT52YWx1ZS0+d2luZG93
KCktPndyYXBwZWQoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICByZXN1
bHQuYXBwZW5kKHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4oZXhl
Yywgb3JpZ2luKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwCmluZGV4IGFlM2M3Mjk3NmZmOTcwYWFlMmNkMzUxOWFiODYxYTA1OGI5NGJjZGUu
LjI2Y2FiM2M0YTI3MWRjYWI3MGEzNzZhMDA5MDJmYWFkMzQ4MDRiODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9NV2lu
ZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkK
ICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0cyhKU0RP
TVdpbmRvd0Jhc2U6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+aW1wbCgpOwor
ICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+
d3JhcHBlZCgpOwogfQogCiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNjNmNmI1
NTJkMDRiOTU5NGJmMWUzMjk1M2NlNTFkYmZkOTg4Yzk4OC4uNDM1MmViNGUwZWI4YTlkZDM0ODI0
Y2JhMzgzNTk0YmJiZTIyNzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAg
LTU3MSw3ICs1NzEsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRh
cmdldCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFvYmplY3QtPmluaGVyaXRzKEpTTm9kZTo6aW5m
bygpKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFdlYkNvcmU6Ok5vZGUmIG5vZGUgPSBq
c0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+aW1wbCgpOworICAgIFdlYkNvcmU6Ok5vZGUmIG5vZGUg
PSBqc0Nhc3Q8SlNOb2RlKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogICAgIHJldHVybiBraXQoJm5v
ZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0
aWxpdHkubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW0KaW5k
ZXggZmIxN2YwZDNkODZiMTBkYTU4MDhkMTg4Y2VjOTA0YzA5ODYyNzlhMS4uMWMzYzdjZmVlMjUz
ZDA3NThkNTRiMzg0OWNmZjRiM2U1Y2Y3MzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NVXRpbGl0eS5tbQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIGlkIGNy
ZWF0ZURPTVdyYXBwZXIoSlNDOjpKU09iamVjdCogb2JqZWN0KQogewogICAgICNkZWZpbmUgV1JB
UChjbGFzc05hbWUpIFwKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoV2ViQ29yZTo6SlMj
I2NsYXNzTmFtZTo6aW5mbygpKSkgXAotICAgICAgICAgICAgcmV0dXJuIGtpdCgmc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SlMjI2NsYXNzTmFtZSo+KG9iamVjdCktPmltcGwoKSk7CisgICAgICAgICAg
ICByZXR1cm4ga2l0KCZzdGF0aWNfY2FzdDxXZWJDb3JlOjpKUyMjY2xhc3NOYW1lKj4ob2JqZWN0
KS0+d3JhcHBlZCgpKTsKIAogICAgIFdSQVAoQ1NTUnVsZSkKICAgICBXUkFQKENTU1J1bGVMaXN0
KQpAQCAtMTIxLDEwICsxMjEsMTAgQEAgc3RhdGljIGlubGluZSBpZCBjcmVhdGVET01XcmFwcGVy
KEpTQzo6SlNPYmplY3QqIG9iamVjdCkKICAgICAjdW5kZWYgV1JBUAogCiAgICAgaWYgKG9iamVj
dC0+aW5oZXJpdHMoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbCo+KG9iamVj
dCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6OkpT
RE9NV2luZG93U2hlbGwqPihvYmplY3QpLT53cmFwcGVkKCkpOwogCiAgICAgaWYgKG9iamVjdC0+
aW5oZXJpdHMoV2ViQ29yZTo6SlNET01JbXBsZW1lbnRhdGlvbjo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuIGtpdCgmc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SlNET01JbXBsZW1lbnRhdGlvbio+KG9i
amVjdCktPmltcGwoKSk7CisgICAgICAgIHJldHVybiBraXQoJnN0YXRpY19jYXN0PFdlYkNvcmU6
OkpTRE9NSW1wbGVtZW50YXRpb24qPihvYmplY3QpLT53cmFwcGVkKCkpOwogCiAgICAgcmV0dXJu
IG5pbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KaW5kZXggNTdmMzIwMmE4YzJkNjAxNGVlMWUxYWM4ZmNmN2U1YmQwNjJhNzdjOC4uZmI2
ZGYyNWE0YzdiZjQ3OGZhMzMxMTM5NzIxMmM3MWM2ZjA1NzZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTI1Miw3ICsyNTIsNyBA
QCBzdGF0aWMgdm9pZCBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoRXhlY1N0YXRlKiBleGVjKQogICAg
IC8vIEpTRE9NV2luZG93QmFzZSogaXNuJ3QgdGhlIHJpZ2h0IG9iamVjdCB0byByZXByZXNlbnQg
dGhlIGN1cnJlbnRseSBleGVjdXRpbmcKICAgICAvLyBKYXZhU2NyaXB0LiBJbnN0ZWFkLCB3ZSBz
aG91bGQgdXNlIEV4ZWNTdGF0ZSwgbGlrZSB3ZSBkbyBlbHNld2hlcmUuCiAgICAgSlNET01XaW5k
b3dCYXNlKiB0YXJnZXQgPSBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4ocm9vdC0+Z2xvYmFsT2Jq
ZWN0KCkpOwotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCksIHRhcmdldC0+aW1wbCgpKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0LT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB0YXJnZXQtPndyYXBwZWQoKSk7CiB9CiAKIC0g
KEpTR2xvYmFsQ29udGV4dFJlZilfZ2xvYmFsQ29udGV4dFJlZgpAQCAtNTQxLDcgKzU0MSw3IEBA
IHN0YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkg
KmFycmF5LCBSb290T2JqZWN0KiByb290CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMo
SlNIVE1MRWxlbWVudDo6aW5mbygpKSkgewogICAgICAgICAgICAgLy8gUGx1Z2luIGVsZW1lbnRz
IGNhY2hlIHRoZSBpbnN0YW5jZSBpbnRlcm5hbGx5LgotICAgICAgICAgICAgaWYgKE9iamNJbnN0
YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihwbHVnaW5JbnN0YW5j
ZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KG9iamVjdCktPmltcGwoKSkpKQorICAgICAgICAgICAg
aWYgKE9iamNJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihw
bHVnaW5JbnN0YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KG9iamVjdCktPndyYXBwZWQoKSkp
KQogICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CiAgICAgICAg
IH0gZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cyhPYmpDUnVudGltZU9iamVjdDo6aW5mbygpKSkg
ewogICAgICAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNf
Y2FzdDxPYmpDUnVudGltZU9iamVjdCo+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDc1NmI1OWQ1MzEwMDkx
MmJiMGRjMzIxMzAwZTFkNGNkODUxYmVmZTguLmJjNTcxMWQzYWE5NDBjNjE1ZWNiZmQ4NTlmMDc2
NzYxYWMyOWU1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsNyArNDIxLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3du
UHJvcGVydHlTbG90Qm9keQogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+c2ln
bmF0dXJlLT50eXBlIGVxICJET01TdHJpbmciKSB7CiAgICAgICAgICAgICBwdXNoKEBnZXRPd25Q
cm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4KSB7XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAg
aWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+
aW1wbCgpLmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
U2xvdEltcGwsICIgICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgp
IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IG9wdGlvbmFsSW5kZXgudmFsdWUoKTtcbiIpOwogICAgICAgICAjIEFzc3VtZSB0aGF0IGlm
IHRoZXJlJ3MgYSBzZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCkBAIC0xMTg4LDkg
KzExODgsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmIChOZWVkc0ltcGxlbWVudGF0
aW9uQ2xhc3MoJGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKCRoYXNQYXJlbnQpIHsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUmIGltcGwoKSBj
b25zdFxuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbnRlcmZh
Y2VOYW1lJiB3cmFwcGVkKCkgY29uc3RcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSY+KEJhc2U6OmltcGwoKSk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSY+KEJhc2U6OndyYXBwZWQoKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNzU5LDkgKzE3NTksOSBAQCBzdWIgR2V0SW5kZXhlZEdldHRlckV4cHJlc3Npb24KIHsKICAg
ICBteSAkaW5kZXhlZEdldHRlckZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgaWYgKCRpbmRleGVkR2V0
dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICBy
ZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRoaXNPYmplY3QtPmltcGwoKS5pdGVt
KGluZGV4KSkiOworICAgICAgICByZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkiOwogICAgIH0KLSAgICByZXR1cm4gInRv
SlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCku
aXRlbShpbmRleCkpIjsKKyAgICByZXR1cm4gInRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpIjsKIH0KIAogc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KQEAgLTIyMjgsNyArMjIyOCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rp
b24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSB7
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3Ro
KCkpIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAjIEFzc3VtZSB0aGF0IGlmIHRoZXJlJ3MgYSBz
ZXR0ZXIsIHRoZSBpbmRleCB3aWxsIGJlIHdyaXRhYmxlCiAgICAgICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsK
QEAgLTIzMjgsOSArMjMyOCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CiAgICAgICAgICAgICAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7CiAgICAgICAgICAgICAgICAg
ICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEJ5U2V0dGluZyJ9KSAuICJFbmFibGVk
IjsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0
ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMt
PmltcGwoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2V0dGluZ3MuJGVuYWJsZV9mdW5jdGlvbigpKVxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMjM0Myw3ICsyMzQzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0
eSJ9ICYmCiAgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCiAgICAgICAgICAgICAgICAgISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1
cml0eU9uR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0
ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIH0KIApAQCAtMjM2MSw3ICsyMzYxLDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkZXhjZXB0aW9u
Q29kZSA9ICRnZXR0ZXJFeGNlcHRpb25zID8gImVjIiA6ICIwIjsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBiaW5kaW5nTmFtZShcIiRpbnRlcmZhY2VOYW1lLiRuYW1lXCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7XG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJG1lbW9pemVkVHlwZSBtZW1vaXpl
ZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwoKS4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4g
am9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgICRtZW1vaXplZFR5cGUgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwg
QGFyZ3VtZW50cykgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8JG1lbW9pemVk
VHlwZT4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgJGV4Y2Vw
dGlvbkNvZGUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAibWVtb2l6ZWRSZXN1bHQiLCAiY2FzdGVkVGhpcyIp
IC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBz
ZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTtcbiIpIGlmICRnZXR0ZXJFeGNlcHRpb25zOwpAQCAt
MjM4NSw3ICsyMzg1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSkpO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
aGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
SlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIg
LiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKCkpID8gIiAuIE5hdGl2ZVRvSlNWYWx1
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZSgpIiwgImNhc3RlZFRoaXMiKSAuICIgOiBqc051bGwoKSk7XG4iKTsK
ICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudEhhbmRsZXIiKSB7CiAgICAgICAg
ICAgICAgICAgbXkgJGdldHRlciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IldpbmRvd0V2ZW50SGFuZGxlciJ9ID8gIndpbmRvd0V2ZW50SGFuZGxlckF0dHJp
YnV0ZSIKQEAgLTIzOTMsNyArMjM5Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgIDogImV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7CiAgICAgICAgICAg
ICAgICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZSgkYXR0
cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0oc3RhdGUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgkZ2V0dGVyKGNhc3RlZFRoaXMtPmltcGwoKSwgJGV2
ZW50TmFtZSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSgkZ2V0dGVyKGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgJGV2
ZW50TmFtZSkpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICBteSAkY29uc3Ry
dWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAg
ICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKQEAgLTI0MjEsOSArMjQyMSw5
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgQGNhbGxX
aXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgIkpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKSIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRzdmdMaXN0UHJvcGVy
dHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpT
VmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPmltcGwoKS4kaW1wbEdldHRlckZ1bmN0
aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0ZWRUaGlz
IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPndyYXBwZWQoKS4kaW1wbEdldHRl
ckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0
ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgZXEg
ImZsb2F0IikgeyAjIFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5h
dGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAi
aW1wbCIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CkBAIC0yNDQ2LDcgKzI0NDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAg
ICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRoQXJncyk7CiAg
ICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2JqID0g
JGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgb2JqLmdldCgpKTtcbiIpOwpAQCAtMjQ3MiwxMCArMjQ3MiwxMCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2Vu
ZXJhdGVDYWxsV2l0aCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWxsV2l0aCJ9LCBcQGltcGxDb250ZW50LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpIikpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVy
dHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhpcy0+d3JhcHBlZCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3Vs
dCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJm
YWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFs
dWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAs
ICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigi
LCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTI1MTcsNyArMjUxNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgZGllIGlmICFDb25zdHJ1Y3RvclNo
b3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhzdGF0ZSwgZG9tT2JqZWN0LT5pbXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9iamVjdC0+d3JhcHBlZCgpKSlcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAgLTI1NDksOSAr
MjU0OSw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKVxuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVk
KCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3Rh
dGUsIGNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShz
dGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47
XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTI2NjEsOSArMjY2MSw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAmJiAhJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0pIHsKICAg
ICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPmltcGwo
KSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGNh
c3RlZFRoaXMtPndyYXBwZWQoKSkpXG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93
QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkpKVxuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSkpXG4i
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgfQpAQCAtMjY3NiwxMyArMjY3Niwx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICMgRklYTUU6
IEZpbmQgYSB3YXkgdG8gZG8gdGhpcyBzcGVjaWFsIGNhc2Ugd2l0aG91dCBoYXJkY29kaW5nIHRo
ZSBjbGFzcyBhbmQgYXR0cmlidXRlIG5hbWVzIGhlcmUuCiAgICAgICAgICAgICAgICAgaWYgKCgo
JGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIG9yICgkaW50ZXJmYWNlTmFtZSBlcSAiV29y
a2VyR2xvYmFsU2NvcGUiKSkgYW5kICRuYW1lIGVxICJvbmVycm9yIikgewogICAgICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0Vycm9ySGFuZGxlci5oIn0gPSAxOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5pbXBsKCkuc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcihz
dGF0ZSwgdmFsdWUsIGNhc3RlZFRoaXMpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcihzdGF0ZSwgdmFsdWUs
IGNhc3RlZFRoaXMpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogICAgICAg
ICAgICAgICAgICAgICBteSAkc2V0dGVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiV2luZG93RXZlbnRIYW5kbGVyIn0gPyAic2V0V2luZG93RXZlbnRIYW5k
bGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICAgICAgOiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb2N1bWVudEV2ZW50SGFuZGxlciJ9ID8gInNl
dERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICAgICAg
OiAic2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHNldHRlcigqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlz
LT5pbXBsKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkc2V0dGVyKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKSwgJGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKQEAgLTI3MDUsMTggKzI3MDUsMTggQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBs
R2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRu
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3
YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0o
KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFJlZlB0cjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghZm9yd2FyZGVkSW1w
bClcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gKmZvcndhcmRlZEltcGw7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBBdHRyaWJ1dGUgaXMgbm90IG51bGxhYmxlLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZXhwZWN0
ZWQgdG8gcmV0dXJuIGEgcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFJlZjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZjwk
e2F0dHJpYnV0ZVR5cGV9PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLiR7
aW1wbEdldHRlckZ1bmN0aW9uTmFtZX0oKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBmb3J3YXJkZWRJbXBsLmdl
dCgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAkYXR0cmlidXRlID0gJGNvZGVHZW5lcmF0b3ItPkdldEF0dHJpYnV0ZUZyb21JbnRlcmZh
Y2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlLCAkcHV0Rm9yd2FyZHMp
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlv
bjsKQEAgLTI4MjMsMTMgKzI4MjMsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwk
e2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwog
ICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0
LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpXG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tKHN0YXRlLCBpKSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJG5hbWVkR2V0
dGVyRnVuY3Rpb24pIHsKICAgICAgICAgICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGFkZCBh
biBJREwgZXh0ZW5kZWQgYXR0cmlidXRlIGF0IHNvbWUgcG9pbnQgaWYgYW4gaW50ZXJmYWNlIG5l
ZWRzIGVudW1lcmFibGUgbmFtZWQgcHJvcGVydGllcy4KICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkge1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yIChhdXRvJiBwcm9w
ZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT5pbXBsKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKVxu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yIChhdXRvJiBw
cm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1l
cygpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIHByb3BlcnR5TmFt
ZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAg
ICAgICAgfQpAQCAtMjkzMCwxNCArMjkzMCwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT5p
bXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRl
LCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRpc0N1
c3RvbSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWUgLiAiKCpzdGF0ZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW1wbC5pc1JlYWRPbmx5KCkpIHtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTtcbiIpOwpA
QCAtMjk5MSwxMSArMjk5MSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0gfHwgJGludGVy
ZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB0aGlzT2JqZWN0LT5pbXBsKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0
b3IpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0
LT53cmFwcGVkKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CiAgICAgICAg
IH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4odmlzaXRvcik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBvcnRFeHRyYU1lbW9yeUNvc3QifSkgewotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZp
c2l0ZWQodGhpc09iamVjdC0+aW1wbCgpLm1lbW9yeUNvc3QoKSk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVk
KHRoaXNPYmplY3QtPndyYXBwZWQoKS5tZW1vcnlDb3N0KCkpO1xuIik7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCRudW1DYWNoZWRBdHRyaWJ1dGVzID4gMCkgewogICAgICAgICAgICAgZm9yZWFj
aCAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewpAQCAtMzAzNyw3ICszMDM3LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhl
cml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkgewog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFjZU5h
bWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTtcbiIpOwogICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmhhc1Bl
bmRpbmdBY3Rpdml0eSgpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNF
eHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiRXZlbnRUYXJnZXQiKSkgewpAQCAtMzA0NSw3
ICszMDQ1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8
SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CiAgICAg
ICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgp
LmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmlzRmlyaW5nRXZl
bnRMaXN0ZW5lcnMoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiTm9kZSIpKSB7CkBAIC0zMDY0LDM0
ICszMDY0LDM0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15
ICRyb290U3RyaW5nOwogICAgICAgICAgICAgaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGlu
dGVyZmFjZSkgZXEgIkltcGwiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAg
ICAke2ltcGxUeXBlfSogcm9vdCA9ICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKTtcbiI7Cisg
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICAke2ltcGxUeXBlfSogcm9vdCA9ICZq
cyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChH
ZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0IikgewotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+
aW1wbCgpLmNvbnRleHQoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRl
cmZhY2VOYW1lfS0+d3JhcHBlZCgpLmNvbnRleHQoKSk7XG4iOwogICAgICAgICAgICAgfSBlbHNp
ZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbEZyYW1lIikgewot
ICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRnJhbWUqIHJvb3QgPSBXVEY6Omdl
dFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5mcmFtZSgpKTtcbiI7CisgICAgICAgICAg
ICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBGcmFtZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtp
bnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmZyYW1lKCkpO1xuIjsKICAgICAgICAgICAgICAgICAk
cm9vdFN0cmluZyAuPSAiICAgIGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RT
dHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYg
KEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxEb2N1bWVudCIpIHsK
LSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0gV1RG
OjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuZG9jdW1lbnQoKSk7XG4iOworICAg
ICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRG9jdW1lbnQqIHJvb3QgPSBXVEY6Omdl
dFB0cihqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBwZWQoKS5kb2N1bWVudCgpKTtcbiI7CiAgICAg
ICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICBpZiAoIXJvb3QpXG4iOwogICAgICAgICAg
ICAgICAgICRyb290U3RyaW5nIC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7CiAgICAgICAg
ICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBs
RWxlbWVudFJvb3QiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRWxlbWVudC5o
In0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZUN1c3RvbS5oIn0g
PSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRWxlbWVudCogZWxlbWVu
dCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmVsZW1lbnQoKSk7XG4i
OworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgRWxlbWVudCogZWxlbWVudCA9
IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmVsZW1lbnQoKSk7XG4i
OwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFlbGVtZW50KVxuIjsK
ICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7XG4i
OwogICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgdm9pZCogcm9vdCA9IFdlYkNv
cmU6OnJvb3QoZWxlbWVudCk7XG4iOwogICAgICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siRWxlbWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IkpTTm9kZUN1c3RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIg
ICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCku
Y2FudmFzKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQq
IHJvb3QgPSBXZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLmNhbnZh
cygpKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRp
bnRlcmZhY2UpIGVxICJJbXBsT3duZXJOb2RlUm9vdCIpIHsKICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0g
IiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwo
KS5vd25lck5vZGUoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAg
dm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCku
b3duZXJOb2RlKCkpO1xuIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
JHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdCgmanMke2ludGVy
ZmFjZU5hbWV9LT5pbXBsKCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAi
ICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KCZqcyR7aW50ZXJmYWNlTmFtZX0tPndyYXBw
ZWQoKSk7XG4iOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJHJvb3RTdHJpbmcpOwpAQCAtMzExMSw3ICszMTExLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpT
JHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLCBq
cyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCksIGpz
JHtpbnRlcmZhY2VOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOwogICAgIH0KIApAQCAtMzIwNiw3ICszMjA2LDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiJGltcGxUeXBlKiAke2NsYXNzTmFtZX06OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSAiIC4gR2V0Q2Fz
dGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKHZhbHVlKSlcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBudWxscHRyO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAg
fQpAQCAtNDI1NSw3ICs0MjU1LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICAgICAg
aWYgKCRzZWxmSXNUZWFyT2ZmVHlwZSkgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJTVkdNYXRyaXhUZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAgICAg
ICMgRklYTUU6IEJsaW5rOiBEb24ndCBjcmVhdGUgYSBuZXcgb25lIGV2ZXJ5dGltZSB3ZSBhY2Nl
c3MgdGhlIG1hdHJpeCBwcm9wZXJ0eS4gVGhpcyBtZWFucywgZS5nLCA9PT0gd29uJ3Qgd29yay4K
LSAgICAgICAgICAgICAgICAkdmFsdWUgPSAiU1ZHTWF0cml4VGVhck9mZjo6Y3JlYXRlKGNhc3Rl
ZFRoaXMtPmltcGwoKSwgJHZhbHVlKSI7CisgICAgICAgICAgICAgICAgJHZhbHVlID0gIlNWR01h
dHJpeFRlYXJPZmY6OmNyZWF0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksICR2YWx1ZSkiOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZH
U3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAgICAg
ICR0ZWFyT2ZmVHlwZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmPCRpbnRlcmZhY2VOYW1lLCAvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCA5OWUxMjJkM2Q3NTQxYTJmNTZhMDE5ZTAwZDk5NGFiY2VjZDQzMmFkLi5iMGQxMmMz
ODkzYWZlMjdiNDRiNzI1ODgwMjIxZTc4MzljZmE3Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTQ5LDkgKzE0OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFj
dGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+
KHNsb3RCYXNlKTsKLSAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+
d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmV4Y2l0aW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqLCBFbmMKICAgICBKU1Rl
c3RBY3RpdmVET01PYmplY3QqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZl
RE9NT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZG9tT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc3RhdGUsIGRvbU9i
amVjdC0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhzdGF0ZSwgZG9tT2JqZWN0LT53cmFwcGVkKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMTc5LDkgKzE3OSw5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVu
Y3Rpb25FeGNpdGluZ0Z1bmN0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0
IiwgImV4Y2l0aW5nRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbygpKTsKLSAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhp
cy0+aW1wbCgpKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBOb2RlKiBuZXh0Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMCkpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01P
YmplY3Q6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQKIHsKICAgICBh
dXRvKiBqc1Rlc3RBY3RpdmVET01PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0QWN0aXZlRE9NT2JqZWN0LT5pbXBsKCksIGpzVGVzdEFjdGl2ZURPTU9iamVjdCk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RBY3RpdmVET01PYmplY3QtPndyYXBw
ZWQoKSwganNUZXN0QWN0aXZlRE9NT2JqZWN0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKQEAgLTI2OSw3ICsyNjksNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RBY3RpdmVETwogVGVz
dEFjdGl2ZURPTU9iamVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RBY3RpdmVET01PYmplY3QqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+
aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKaW5kZXggMDlkNmFhYjgyNGUxMWQ3
Y2U0YzlkNzE5ZDdmZjliOWNkZGJkOTJlMC4uY2FhZGJjMWYwYjU3ZGQ1MTBlYmJhZTA2YzhhMGQz
MTFlOTUwNTRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAg
dm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0MKIHsKICAgICBhdXRvKiBqc1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0LT5pbXBsKCksIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LT53cmFwcGVkKCksIGpzVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKQEAgLTE4NCw3ICsxODQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdXN0b21DbwogVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCi0gICAgICAgIHJldHVy
biAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRl
ci5jcHAKaW5kZXggMzdjMWU1ODEyZjQxYTU1MjU1NDlmMzQwMzMxZTVmOGU3NjliNTA2OS4uOTk0
ZjM2NmVmNDRjMWU4NDA5OTY5YWE4MDMwYTQ5ODI0NGI5NmUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5v
dGhlckZ1bmMKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsICJhbm90
aGVyRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3Rh
dGUpLT52YWx1ZShzdGF0ZSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm8KIHsKICAgICBhdXRvKiBqc1Rlc3RDdXN0b21OYW1lZEdldHRlciA9IGpzQ2FzdDxKU1Rl
c3RDdXN0b21OYW1lZEdldHRlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyLT5pbXBsKCksIGpz
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLT53cmFwcGVkKCksIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyKTsK
IH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RDdXN0b21OYQogVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih2
YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4g
JndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDFhOWZlYTdjMTE3YzcwNGZhM2JjNjYzYjRm
MzUwYzIzYTg2OTgzOGQuLjhkZjkyZDlmZDE4NzM1M2MyN2ZmNjAzOWRhYThjYjg0MjA5ZDAxYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50
Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjEoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTg0LDcgKzE4NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZl
bnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0yMTQsNyArMjE0
LDcgQEAgdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3RFdmVudENv
bnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFdmVudENv
bnN0cnVjdG9yLT5pbXBsKCksIGpzVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgpLCBqc1Rlc3RF
dmVudENvbnN0cnVjdG9yKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAg
LTI2NCw3ICsyNjQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudENvbgogVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50
Q29uc3RydWN0b3IqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggOTc4ZDkyYTY0NWQyYzQ4MjExYTIw
NjhmOGJmYjlmM2UxNWNiYmI1Ny4uNGVkZWFjODY5M2Q2YTI3ZTJlMjdjMDllOWYyNTU2NzY5Mzk5
MzExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNDUsMTAgKzE0NSwxMCBAQCBi
b29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKLSAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBv
cHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCkpIHsKKyAg
ICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25h
bEluZGV4LnZhbHVlKCk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBEb250RGVsZXRl
IHwgUmVhZE9ubHk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRl
cywgdG9KUyhzdGF0ZSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmplY3QtPmlt
cGwoKS5pdGVtKGluZGV4KSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0
dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGlmIChnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRUYXJnZXQsIEJhc2U+KHN0
YXRlLCBKU1Rlc3RFdmVudFRhcmdldFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQpAQCAtMTcxLDkgKzE3MSw5IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlm
IChpbmRleCA8IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKSkgeworICAgIGlmIChpbmRleCA8
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzID0gRG9udERlbGV0ZSB8IFJlYWRPbmx5OwotICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLCB0aGlzT2JqZWN0LT5pbXBsKCkuaXRlbShpbmRleCkpKTsKKyAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
QnlJbmRleCh0aGlzT2JqZWN0LCBzdGF0ZSwgaW5kZXgsIHNsb3QpOwpAQCAtMTkxLDEwICsxOTEs
MTAgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLAogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBj
b3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3Ro
KCk7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tKHN0YXRlLCBpKSk7CiAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+aW1w
bCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQog
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwpAQCAtMjEyLDcgKzIxMiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRU
YXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25BZGRFdmVu
dExpc3RlbmVyKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgImFkZEV2ZW50
TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlz
dGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW4KICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJyZW1vdmVFdmVudExpc3RlbmVyIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRh
cmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5l
ciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMjU5LDcgKzI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZl
bnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkRpc3BhdGNoRXZlbnQoRXhlCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0RXZlbnRUYXJnZXQiLCAiZGlzcGF0Y2hFdmVudCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBA
IC0yNzcsMTMgKzI3NywxMyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHRoaXNPYmplY3QtPmltcGwoKS52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnZpc2l0SlNF
dmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogYm9vbCBKU1Rlc3RFdmVudFRhcmdldE93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIGpzVGVzdEV2
ZW50VGFyZ2V0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oaGFuZGxlLnNsb3QoKS0+YXND
ZWxsKCkpOwotICAgIGlmIChqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLmlzRmlyaW5nRXZlbnRM
aXN0ZW5lcnMoKSkKKyAgICBpZiAoanNUZXN0RXZlbnRUYXJnZXQtPndyYXBwZWQoKS5pc0Zpcmlu
Z0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFVOVVNFRF9QQVJB
TSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBK
U1Rlc3RFdmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY28KIHsKICAgICBhdXRvKiBqc1Rlc3RFdmVudFRhcmdldCA9IGpzQ2Fz
dDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50VGFyZ2V0LT5pbXBsKCksIGpzVGVzdEV2
ZW50VGFyZ2V0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2ZW50VGFyZ2V0
LT53cmFwcGVkKCksIGpzVGVzdEV2ZW50VGFyZ2V0KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKQEAgLTM0Myw3ICszNDMsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudFRhcgog
VGVzdEV2ZW50VGFyZ2V0KiBKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RXZlbnRUYXJnZXQqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCAzNWRhMGU3NTllNDgzOWIxMjNmOWU1MjNj
ZGQyNjE1OWYxOTJhMWU1Li5jYWQ2ZTk5ZGU0YzUwMTMwODc5ZTEzNTAwMjYyZGIwOTA5YWEwMDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEV4Y2Vw
dGlvbio+KHNsb3RCYXNlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5uYW1lKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEpTVGVz
dEV4Y2VwdGlvbk93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udAogewogICAgIGF1dG8qIGpzVGVzdEV4Y2VwdGlvbiA9IGpzQ2FzdDxKU1Rl
c3RFeGNlcHRpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQg
PSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc1Rlc3RFeGNlcHRpb24tPmltcGwoKSwganNUZXN0RXhjZXB0aW9uKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV4Y2VwdGlvbi0+d3JhcHBlZCgpLCBq
c1Rlc3RFeGNlcHRpb24pOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAt
MjE5LDcgKzIxOSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV4Y2VwdGlvCiBUZXN0RXhjZXB0aW9uKiBK
U1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggNTczYTA5MGFjZjdhODcwZTBiYjcxOWJmZjdm
MTVjMTljZTFlNjM1OC4uYzc0MDZhYzE5NTRlOTA5MmJhNTVmMzI0YWYxYmNlMWQ1Y2RjY2Q1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiBib29sIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUqIHJvb3QgPSAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+aW1wbCgpOworICAgIFRl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiByb290ID0gJmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUt
PndyYXBwZWQoKTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7
CiB9CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsCiB7CiAgICAg
YXV0byoganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+aW1wbCgpLCBqc1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUtPndyYXBwZWQoKSwganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiB9
CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0xODEsNyArMTgxLDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0R2VuZXJhdGUKIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Kj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKaW5kZXggZDJkN2I4MDEzNDhmZDZjYzRjNjFhOTE5ZTdiMTIwMzBjNjZi
NjEyOS4uZmQ4Y2VhMzVkYzJlZmZmMGQ1NGFlZTMxMzY2MTQyMmUzNWMwYmMxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJh
cwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIx
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIxKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
ImltcGxlbWVudHNTdHIyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIy
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTUxMiw3ICs1
MTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNOb2RlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmltcGxlbWVudHNOb2RlKCkpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEIKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIxIik7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbFN0cjEoJmltcGwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CkBAIC01NzQsNyArNTc0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0
cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0
cjIoJmltcGwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC02
MDUsNyArNjA1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
Tm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxOb2RlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbE5vZGUoJmltcGwpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNTdHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm47CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW4KICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c05vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTczNyw3ICs3MzcsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1l
bnRhbFN0cjIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbE5vZGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTc5NSw3ICs3OTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEoRQogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmltcGxlbWVudHNNZXRob2QxKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTgxMCw3ICs4
MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdElu
dGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtODYxLDcgKzg2
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMSgmaW1w
bCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTg3
Niw3ICs4NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMgogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC05
MjIsNyArOTIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG8KIGJvb2wgSlNUZXN0SW50ZXJm
YWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byog
anNUZXN0SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKLSAgICBpZiAoanNUZXN0SW50ZXJmYWNlLT5pbXBsKCkuaGFzUGVuZGluZ0Fj
dGl2aXR5KCkpCisgICAgaWYgKGpzVGVzdEludGVyZmFjZS0+d3JhcHBlZCgpLmhhc1BlbmRpbmdB
Y3Rpdml0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRv
cik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgSlNUZXN0SW50
ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiBjb250CiB7CiAgICAgYXV0byoganNUZXN0SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdElu
dGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpz
dGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBl
cih3b3JsZCwgJmpzVGVzdEludGVyZmFjZS0+aW1wbCgpLCBqc1Rlc3RJbnRlcmZhY2UpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0SW50ZXJmYWNlLT53cmFwcGVkKCksIGpzVGVz
dEludGVyZmFjZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEludGVyZmFjZSog
aW1wbCkKQEAgLTk2MSw3ICs5NjEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZhYwogVGVzdElu
dGVyZmFjZSogSlNUZXN0SW50ZXJmYWNlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDFmNDBjY2RlNWQy
YWNjZGE1MzVhMTgwYTZmZjVkMTIzYWUyZmY3NjUuLmQwNjExZTVlZWNhNTc2ZTg3OTI3Yzk2NGEy
MjBlOTdhNWFlNjcwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZAogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogewogICAgIGF1dG8qIGpzVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIgPSBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXItPmltcGwoKSwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLT53cmFwcGVkKCksIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOwogfQogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjA2LDcgKzIwNiw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE1lZGlhUXVlCiBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcio+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjFkZTM5MjRhYjljMjQ3MTkx
MGJiYTNkYjQyNDMwODMzY2MwNTdlMC4uYzhhNjE2NDZiODJkZDkxYTVjNjM3OTI2YWQ1NDNmOWEx
YjI4MDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0TmFtZWRDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiBib29sIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3Iq
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgaWYgKGpzVGVzdE5hbWVkQ29uc3RydWN0
b3ItPmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICBpZiAoanNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci0+d3JhcHBlZCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTczLDcgKzE3Myw3IEBAIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pCiB7CiAgICAgYXV0byoganNU
ZXN0TmFtZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgpLCBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKKyAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPndyYXBwZWQo
KSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRF
R1JJVFkpCkBAIC0yMjMsNyArMjIzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb24KIFRlc3RO
YW1lZENvbnN0cnVjdG9yKiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXIt
PmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA3OWNkNTFiNDk3YmY4OTdjMDE5OTdkMDVi
MmUyZjY0OTJkMTBkN2VmLi5kMGVhYTMxNzg4ZjcwMTI5NmRmMDFmMGRjMDI1MDYzMDlkNzRkMWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWwKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRl
LCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5u
YW1lKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1Miw3
ICsxNTIsNyBAQCB2b2lkIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aAogICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHZvaWQgSlNUZXN0Tm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Tm9kZSo+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHRoaXNP
YmplY3QtPmltcGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+d3JhcHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuaAppbmRleCA4ZmQwZDNkMjJjZDQ1ZDc5Y2NhN2NjYWEzYWRiYTEzN2Q4MDY3OTA1Li4wYzcy
YTMxYmRiNmJjYmY5YjE3YTdkNmJjMTE5ZTViMzQ4NDYwMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKQEAgLTQ5LDkg
KzQ5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAotICAgIFRlc3ROb2RlJiBpbXBs
KCkgY29uc3QKKyAgICBUZXN0Tm9kZSYgd3JhcHBlZCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdE5vZGUmPihCYXNlOjppbXBsKCkpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VGVzdE5vZGUmPihCYXNlOjp3cmFwcGVkKCkpOwogICAgIH0KIHByb3Rl
Y3RlZDoKICAgICBKU1Rlc3ROb2RlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
LCBSZWY8VGVzdE5vZGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCmlu
ZGV4IDVjMGE1N2E3YzFlMzY3ZTJlMDExZmJmZTY1OWMyOTliOGYxYjk5OWQuLjE5MmFlMDhhYmNi
NDQ0Y2U1ZjMwYzI2NjE5NDI3ZDkzNDg3NDFhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYy5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cihFeGVjU3RhdGUqIHN0YQog
ICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUo
IlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVy
aW5nKCkpIHsKLSAgICAgICAgaW50IG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhpcy0+aW1wbCgp
Lm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoKTsKKyAgICAgICAgaW50IG1lbW9pemVkUmVz
dWx0ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIo
KTsKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PGludD4+KGJp
bmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgMCk7CiAgICAgICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoRXhl
Y1N0YXRlKiBzdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubm9uZGV0ZXJtaW5pc3RpY1Jl
YWRvbmx5QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xODksNyArMTg5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3QKICAgICBJbnB1dEN1cnNv
ciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJt
aW5pc3RpYy5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAg
ICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJt
aW5pc3RpY1dyaXRlYWJsZUF0dHIoKTsKKyAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKCk7CiAg
ICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5k
aW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIwNCw3ICsyMDQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dy
aXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjI2LDcgKzIyNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0
cihFeGVjU3RhdGUqIHN0CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+
aW5wdXRDdXJzb3IoKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBiaW5kaW5nTmFtZSgiVGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY0V4
Y2VwdGlvbkF0dHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBp
ZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0
ID0gY2FzdGVkVGhpcy0+aW1wbCgpLm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKCk7Cisg
ICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5ub25k
ZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigpOwogICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8
TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1l
bW9pemVkUmVzdWx0LCAwKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0yNDEsNyArMjQxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3QK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5vbmRldGVybWluaXN0
aWNFeGNlcHRpb25BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgIElucHV0
Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05hbWUoIlRlc3ROb25k
ZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmlu
ZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPmltcGwo
KS5ub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihlYyk7CisgICAgICAgIFN0cmlu
ZyBtZW1vaXplZFJlc3VsdCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGlj
R2V0dGVyRXhjZXB0aW9uQXR0cihlYyk7CiAgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1v
aXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6
ZWRSZXN1bHQsIGVjKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY0dldHRl
ckV4Y2VwdGlvbkF0dHIoZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMDQsNyArMzA0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJF
eGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2Jq
ZWN0LT5pbnB1dEN1cnNvcigpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlz
dGljU2V0dGVyRXhjZXB0aW9uQXR0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVt
b2l6ZWRSZXN1bHQgPSBjYXN0ZWRUaGlzLT5pbXBsKCkubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4
Y2VwdGlvbkF0dHIoKTsKKyAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCk7CiAgICAg
ICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxTdHJpbmc+PihiaW5kaW5n
TmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwogICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTMxOSw3ICszMTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwubm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQg
c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBT
dHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJu
b25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0
cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgc2V0
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
KEV4ZWNTdGF0ZSogc3RhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQyNyw3
ICs0MjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWlu
aXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaQogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQ7CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IHN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmlucHV0Q3Vyc29yKCk7CkBAIC00NjIsNyArNDYy
LDcgQEAgdm9pZCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2kKIHsKICAgICBhdXRvKiBqc1Rlc3ROb25kZXRl
cm1pbmlzdGljID0ganNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROb25kZXRl
cm1pbmlzdGljLT5pbXBsKCksIGpzVGVzdE5vbmRldGVybWluaXN0aWMpOworICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy0+d3JhcHBlZCgpLCBqc1Rlc3RO
b25kZXRlcm1pbmlzdGljKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAg
LTUxMiw3ICs1MTIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb25kZXRlcgogVGVzdE5vbmRldGVybWlu
aXN0aWMqIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRl
dGVybWluaXN0aWMqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCA2OTM1YzczYzliMTY3NGUyZDQ0NjEwNzI5ODg5MWY1Y2JmYzUy
MTIzLi43N2JhNGVkOGM4NjlmZDU4YWJmNTNmMGI3NTI3Mzc5NTJkNDNlOWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtNzQxLDcgKzc0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cmVhZE9ubHlMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVhZE9ubHlM
b25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC03
NTgsNyArNzU4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25s
eVN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC03NzUsNyArNzc1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVh
ZE9ubHlUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5VGVzdE9iakF0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwucmVhZE9ubHlU
ZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtODE3LDkgKzgxNyw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKICAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2UpOwotICAgIGlmICghY2FzdGVk
VGhpcy0+aW1wbCgpLmZyYW1lKCkpCisgICAgaWYgKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUoKS0+c2V0dGlu
Z3MoKTsKKyAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJh
bWUoKS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIXNldHRpbmdzLnRlc3RTZXR0aW5nRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTgzNyw3ICs4MzcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKUwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmVudW1BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTg1NCw3ICs4NTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKUwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZUF0
dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtODcxLDcg
Kzg3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im9jdGV0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04ODgsNyArODg4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEoKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuc2hvcnRB
dHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTkwNSw3
ICs5MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9y
dEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05MjIsNyArOTIy
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25n
QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLmxvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTkzOSw3ICs5MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpM
b25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZAog
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTG9u
Z0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtOTU2
LDcgKzk1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRM
b25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExv
bmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC05NzMsNyArOTczLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
bmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0
cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05OTAsNyAr
OTkwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIp
OwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ0ZXN0T2JqQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC50ZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
WE1MT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwueG1sT2JqQXR0cigpKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmEKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihp
bXBsLmlzQ3JlYXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTEwNDEsNyArMTA0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3lt
Ym9sQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cmVhZE9ubHlTeW1ib2xBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5U3ltYm9sQXR0ciIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBTeW1ib2w6OmNyZWF0ZShzdGF0
ZS0+dm0oKSwgKihpbXBsLnJlYWRPbmx5U3ltYm9sQXR0cigpKS51aWQoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZmFzdEdldEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmEKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTEwMiw3ICsxMTAyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBs
LmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWdu
ZWRpbnRlZ3JhbGF0dHJBdHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTExMTksNyArMTExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxl
Y3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFu
KGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xl
YW5hdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTExMzYsNyArMTEzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVm
bGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJB
dHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTE1Myw3
ICsxMTUzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRT
dHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGlt
cGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJp
bmdBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTExNzAsNyArMTE3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3Rv
bUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21D
b250ZW50SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTExODcsNyArMTE4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9t
VVJMQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjIxLDcgKzEyMjEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuYwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRy
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnR5
cGVkQXJyYXlBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0xMjM5LDcgKzEyMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTI1Nyw3ICsxMjU3LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3QKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTEyNzUsNyArMTI3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTI5Myw3ICsxMjkzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xMzEwLDcgKzEzMTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RUeXBlQ2hl
Y2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3Ry
aWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5zdHJp
Y3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTEzMzgsNyArMTMzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im9uZm9vIik7CiAgICAgfQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShldmVudEhhbmRsZXJBdHRyaWJ1dGUoY2FzdGVkVGhpcy0+aW1wbCgpLCBl
dmVudE5hbWVzKCkuZm9vRXZlbnQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50
SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29F
dmVudCkpOwogfQogCiAKQEAgLTEzNTMsNyArMTM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMzcwLDcgKzEzNzAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0
aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0
cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwud2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUo
KnN0YXRlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTM5
MCw3ICsxMzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICBhdXRvKiBzY3JpcHRD
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRl
eHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDA4LDcgKzE0MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplYwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgZWMpKSk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTQzMCw3ICsxNDMwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGEKICAg
ICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgZWMp
KSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShF
eGVjU3QKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgq
c3RhdGUsIHNjcmlwdENvbnRleHQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygKICAg
ICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3Rh
dGUsIHNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0OTMsNyArMTQ5Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmliCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTEwLDcgKzE1MTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNTI4LDcgKzE1MjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Y29uZGl0aW9uYWxBdHRyMSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRp
dGlvbmFsQXR0cjIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1NjYsNyArMTU2Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHIzIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuY29uZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNjIyLDcgKzE2MjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRo
aXMtPm1fY2FjaGVkQXR0cmlidXRlMS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gKGltcGwuY2FjaGVkQXR0cmlidXRlMSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDog
aW1wbC5jYWNoZWRBdHRyaWJ1dGUxKCkuanNWYWx1ZSgpKTsKICAgICBjYXN0ZWRUaGlzLT5tX2Nh
Y2hlZEF0dHJpYnV0ZTEuc2V0KHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2NDIsNyArMTY0Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVl
ID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5jYWNoZWRBdHRyaWJ1dGUyKCkuaGFzTm9WYWx1ZSgpID8g
anNOdWxsKCkgOiBpbXBsLmNhY2hlZEF0dHJpYnV0ZTIoKS5qc1ZhbHVlKCkpOwogICAgIGNhc3Rl
ZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMi5zZXQoc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMsIHJl
c3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTY2MCw3ICsx
NjYwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKICAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYW55QXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IChpbXBsLmFueUF0dHJpYnV0ZSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgp
IDogaW1wbC5hbnlBdHRyaWJ1dGUoKS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2NzIsNyArMTY3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RC
YXNlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
aG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5jb250ZW50RG9jdW1lbnQoKSkgPyB0
b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5j
b250ZW50RG9jdW1lbnQoKSkpIDoganNOdWxsKCkpOwogfQogCkBAIC0xNjg4LDcgKzE2ODgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRh
YmxlUG9pbnQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBTVkdQb2ludD46OmNyZWF0ZShpbXBs
LCBpbXBsLm11dGFibGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBvaW50KSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE3MDUsNyArMTcwNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
aW1tdXRhYmxlUG9pbnQiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJs
ZVBvaW50KCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MTcyMiw3ICsxNzIyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdiZXJyeShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJh
d2JlcnJ5Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ibHVlYmVycnkoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTczOSw3ICsxNzM5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLnN0cmljdEZsb2F0KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KQEAgLTE3NTYsNyArMTc1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRl
c2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5kZXNjcmlwdGlv
bigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzczLDcg
KzE3NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlCiAgICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5pZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xNzkwLDcgKzE3OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImhh
c2giKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiaGFzaCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5oYXNoKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE4MDcsNyArMTgwNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVw
bGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xODI1LDcgKzE4MjUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNO
dWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bGwoKSk7CkBAIC0xODQ1LDcgKzE4NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpO
dWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYQog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJu
dWxsYWJsZUxvbmdBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
Lm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE4NjUsNyArMTg2NSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKQEAgLTE4ODUsNyArMTg4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFs
c2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CiAg
ICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7
CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xOTI2LDcgKzE5
MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgIH0KICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVTdHJpbmdWYWx1ZShp
c051bGwsIGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgaWYgKGlz
TnVsbCkKQEAgLTE5NDYsNyArMTk0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiYXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5h
dHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MTk2Myw3ICsxOTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJl
c2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRy
aWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTgwLDcg
KzE5ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRz
QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnB1dEZvcndhcmRzQXR0cmlidXRlKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xOTk3LDcgKzE5OTcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFi
bGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5wdXRGb3J3YXJkc051bGxh
YmxlQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcg
bmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjA2OSw3ICsyMDY5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50OF90IG5hdGl2
ZVZhbHVlID0gdG9JbnQ4KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIw
ODksNyArMjA4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1CiAgICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1aW50OF90IG5hdGl2
ZVZhbHVlID0gdG9VSW50OChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0y
MTA5LDcgKzIxMDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50MTZfdCBuYXRp
dmVWYWx1ZSA9IHRvSW50MTYoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjEyOSw3ICsyMTI5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2QKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWlu
dDE2X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMTQ5LDcgKzIxNDksNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIxNjksNyArMjE2OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBs
b25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b0ludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxODksNyArMjE4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRM
b25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUludDY0KHN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMDksNyArMjIwOSw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9T
dHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMjksNyArMjIyOSw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjQ5LDcgKzIyNDksNyBAQCB2b2lkIHNldEpTVGVz
dE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1ZhbAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMjY5LDcgKzIyNjksNyBAQCB2b2lkIHNldEpTVGVzdE9iakNyZWF0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dAogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
cmVhdGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyODks
NyArMjI4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5n
IG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsIHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjMwOSw3ICsyMzA5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEUKICAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50
ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjMyOSw3ICsyMzI5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8K
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVm
bGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbmF0aXZlVmFsdWUgPSB0b1VJbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0g
dmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM2OSw3ICsyMzY5LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3Ry
aW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMzg5LDcgKzIzODksNyBAQCB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MDksNyAr
MjQwOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI0MjksNyArMjQyOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
Qm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC0yNDQ5LDcgKzI0NDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVS
TEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3Rv
bVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3Rh
dGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ2OSw3ICsyNDY5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUeXBl
ZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2Rl
ZEoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
dHlwZWRBcnJheUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbmF0aXZlVmFsdWUgPSB0b0Zsb2F0MzJB
cnJheSh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI0ODksNyArMjQ4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QsCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUwOSw3ICsyNTA5LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogYmFzZU9iamVjdCwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMjUzMSw3
ICsyNTMxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI1NTEsNyArMjU1MSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRp
dmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMjU3Myw3ICsyNTczLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VPYmoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWSgh
dmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlNUZXN0T2JqOjpp
bmZvKCkpKSkgewogICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIsICJUZXN0T2JqIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTI2MDksNyArMjYwOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqT25mb28oRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9uZm9v
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRl
KCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPmltcGwoKSwgZXZlbnROYW1lcygpLmZv
b0V2ZW50LCB2YWx1ZSk7CisgICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKCpzdGF0ZSwgKmNh
c3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgZXZlbnROYW1lcygpLmZvb0V2ZW50LCB2
YWx1ZSk7CiB9CiAKIApAQCAtMjYyNSw3ICsyNjI1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2
ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0y
NjY1LDcgKzI2NjUsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY4OCw3ICsyNjg4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2UK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNzA4LDcgKzI3MDgsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBu
YXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjczMSw3ICsy
NzMxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3QKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjc1NCw3ICsyNzU0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjc3Nyw3ICsyNzc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MDAsNyArMjgwMCw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRy
aWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTI4MjEsNyArMjgyMSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0yODQzLDcgKzI4NDMsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjg2NSw3ICsyODY1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyMyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI5MzEsNyArMjkzMSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNW
CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFu
eUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZSA9IHsgc3RhdGUtPnZt
KCksIHZhbHVlIH07CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI5NTEsNyArMjk1MSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTXV0
YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVk
SlNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpT
U1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NzEsNyArMjk3MSw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJh
c2VPYmplY3QsIEVuY29kZWRKCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4q
IG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5MSw3
ICsyOTkxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwMTEsNyAr
MzAxMSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGZsb2F0IG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwMzEsNyArMzAzMSw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzA2OCw3ICszMDY4LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDg4LDcgKzMwODgsNyBAQCB2
b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuYwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRv
SW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEwOCw3ICszMTA4
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTMxMzAsNyArMzEzMCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0
cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmPFRlc3ROb2RlPiBmb3J3
YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7Cisg
ICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1
dEZvcndhcmRzQXR0cmlidXRlKCk7CiAgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0z
MTUxLDcgKzMxNTEsNyBAQCB2b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxl
QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmUHRyPFRlc3ROb2Rl
PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLnB1dEZvcndhcmRzTnVsbGFibGVB
dHRyaWJ1dGUoKTsKKyAgICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwogICAgIGlmICgh
Zm9yd2FyZGVkSW1wbCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIGltcGwgPSAqZm9yd2Fy
ZGVkSW1wbDsKQEAgLTMxNzQsNyArMzE3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW1wbC52b2lkTWV0aG9kKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTMxODYsNyArMzE4Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9k
V2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2RX
aXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGludCBs
b25nQXJnID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTMyMDksNyArMzIwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRob2Qo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzIyMSw3ICsz
MjIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgaW50OF90IGJ5dGVBcmcgPSB0b0ludDgoc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMjQ0LDcgKzMyNDQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2Qo
RXhlY1N0YXRlKiBzdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwub2N0ZXRNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMzI1Niw3ICszMjU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1MKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIHVpbnQ4X3Qgb2N0ZXRBcmcgPSB0b1VJ
bnQ4KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzI3
OSw3ICszMjc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibG9uZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMjkxLDcgKzMyOTEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01l
dGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTWV0
aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBp
bnQgbG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC0zMzE0LDcgKzMzMTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5vYmpNZXRob2QoKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMzMjYsNyArMzMyNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJncyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9iak1l
dGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
aW50IGxvbmdBcmcgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtMzM0OSw3ICszMzQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGUK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxTY3Jp
cHRQcm9maWxlPj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxTY3JpcHRQcm9m
aWxlLCBKU1NjcmlwdFByb2ZpbGU+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksICZKU1Njcmlw
dFByb2ZpbGU6OnRvV3JhcHBlZCkpOwpAQCAtMzM2Niw3ICszMzY2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmlu
Z1NlcXVlbmNlKEUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kUmV0dXJuaW5n
U2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpbnQg
bG9uZ0FyZyA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVy
c2lvbik7CkBAIC0zMzgzLDcgKzMzODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIC8vIEtlZXAgcG9pbnRlciB0byB0aGUgSlNT
dHJpbmcgaW4gYSBsb2NhbCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlZiB0aGUgU3RyaW5nLgpAQCAt
MzQwNCw3ICszNDA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBz
dGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMzQz
Myw3ICszNDMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtMzQ1Niw3ICszNDU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCksIDAsIDApOwpAQCAtMzQ3Myw3ICszNDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0
YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvcHRpb25zT2JqZWN0Iik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRGljdGlvbmFyeSBvbyA9IHsgc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSB9OwpAQCAtMzQ5Myw3ICszNDkzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb24oRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4
Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBpbXBsLm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtMzUyNyw3ICszNTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QoRXhl
Y1N0YXRlKgogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwcml2YXRlTWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIGFyZ3VtZW50ID0g
c3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwpAQCAtMzU0
NCw3ICszNTQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwogICAgIGlmIChV
TkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTU5LDcgKzM1NTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0
ZW5lcihFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZW1vdmVFdmVudExpc3Rl
bmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIg
PSBzdGF0ZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVj
dCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTM1NzQsNyArMzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNTCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTM1ODYsNyArMzU4Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVPYmooRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0ZU9iaigqc3RhdGUpKSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjAwLDcgKzM2MDAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
Vm9pZEV4Y2VwdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVW
b2lkRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGltcGwud2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbigqc3Rh
dGUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTM2MTQsNyArMzYx
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndp
dGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigqc3RhdGUsIGVjKSkpOwogCkBAIC0zNjMxLDcgKzM2
MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNjQ2LDcgKzM2NDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlm
ICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTM2NjEsNyArMzY2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMzY4MSw3
ICszNjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byogc2NyaXB0Q29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzY5OCw3
ICszNjk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWwKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNj
cmlwdEFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhzdGF0ZSwgMCkp
OwogICAgIGltcGwud2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayhzY3JpcHRBcmd1bWVu
dHMucmVsZWFzZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMzcxMSw3ICszNzExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGUKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0zNzMzLDcgKzM3MzMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQo
KTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM3NTUsNyArMzc1NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbk9wdCA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNzgyLDcgKzM3ODIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBpbnQgbm9uT3B0ID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM4MTcsNyArMzgxNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmcoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNp
emVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291
bnQgPD0gMCkgewpAQCAtMzgzOSw3ICszODM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0EK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5k
RGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogCiAgICAgc2l6ZV90
IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8
PSAwKSB7CkBAIC0zODYxLDcgKzM4NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVm
aW5lZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgc3RyID0gc3Rh
dGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg3Niw3ICszODc2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0kKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFN0cmluZyBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygp
IDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzg5MSw3ICszODkxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTM5MDgsNyAr
MzkwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQz
MihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM5Mjgs
NyArMzkyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAg
IGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3QoKSkKQEAgLTM5NDYsNyAr
Mzk0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlv
bigpKQpAQCAtMzk2Myw3ICszOTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGludCBub25DYWxsYmFjayA9IHRvSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zOTgzLDcgKzM5ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3RpbwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJl
ZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIXN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCkBAIC00MDI1LDcgKzQwMjUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QxKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRp
b25hbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNDA0MCw3ICs0
MDQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQwNTUsNyArNDA1NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhv
ZDMoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9k
MyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0
aG9kMygpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBA
IC00MDY5LDcgKzQwNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKAogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQwODksNyArNDA4OSw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDIoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBv
YmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDEx
Niw3ICs0MTE2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMygKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFN0cmluZyBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJp
bmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00MTMzLDcgKzQxMzMsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2Q0KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaW50IGxvbmdB
cmcgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OwpAQCAtNDE1MCw3ICs0MTUwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNSgKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpCkBAIC00MTY3LDcgKzQxNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KAogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RBcmcg
PSB0b0RPTVN0cmluZ0xpc3Qoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MTg0LDcg
KzQxODQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmlu
Zz4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjAxLDcgKzQyMDEsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q4KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9h
ZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVz
dE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsK
QEAgLTQyMTgsNyArNDIxOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyA9IHRvTmF0aXZl
QXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQyMzUsNyArNDIz
NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1bnNpZ25l
ZD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CkBAIC00MjUyLDcgKzQyNTIsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9h
ZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3Ry
aW5nIHN0ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0
YXRlKTsKQEAgLTQyNjksNyArNDI2OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgVmVjdG9yPEJsb2IqPiBibG9iQXJnczsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBjb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsg
KytpKSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLmluaGVyaXRz
KEpTQmxvYjo6aW5mbygpKSkKQEAgLTQzMjEsNyArNDMyMSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBUZXN0T2JqKiBvYmpBcmcxID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKQEAgLTQzNDgsNyArNDM0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0
T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpA
QCAtNDQ2NSw3ICs0NDY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWMKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBzaG9ydCBvYmpBcmdzU2hvcnQgPSAw
OwpAQCAtNDQ5NSw3ICs0NDk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXEKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiB1
bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDUxMiw3ICs0NTEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24o
RXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwpAQCAtNDUzMiw3ICs0NTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGUKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CkBAIC00NTUyLDcgKzQ1NTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Ui
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CkBAIC00NTcyLDcgKzQ1NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2UyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDU5Miw3ICs0NTkyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEV4
ZWNTdGF0ZSoKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZ2V0U1ZHRG9jdW1lbnQiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5nZXRTVkdEb2N1bWVu
dChlYykpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTQ2
MDksNyArNDYwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNvbnZlcnQxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5h
cmd1bWVudCgwKSk7CkBAIC00NjI2LDcgKzQ2MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBzdGF0
ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb252ZXJ0MiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6
OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDY0Myw3ICs0NjQzLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQ0KEV4ZWNTdGF0ZSogc3RhdGUKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVy
dDQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSog
dmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKQEAgLTQ2
NjAsNyArNDY2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNvbnZlcnQ1Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5h
cmd1bWVudCgwKSk7CkBAIC00Njc3LDcgKzQ2NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhl
YwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTQ2ODksNyArNDY4OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwu
aW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTQ3MDEsNyArNDcwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3JhbmdlIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGltcGwuYmFuYW5hKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQ3MTMsNyArNDcxMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihF
eGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CkBAIC00NzM5LDcgKzQ3MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuYwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwpAQCAtNDc2NCw3ICs0NzY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
QEAgLTQ3ODksNyArNDc4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChFeGVjCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgU3RyaW5nIGhlYWQgPSBzdGF0ZS0+YXJndW1lbnQo
MCkudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CkBAIC00ODA5LDcgKzQ4MDksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFy
aWFkaWNEb3VibGVNZXRob2QoRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2YXJp
YWRpY0RvdWJsZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGRvdWJsZSBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0YXRlKTsKQEAg
LTQ4MjksNyArNDgyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIE5vZGUqIGhlYWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0
ZS0+YXJndW1lbnQoMCkpOwpAQCAtNDg1Miw3ICs0ODUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRl
KQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnkiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBmbG9hdCBhID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvRmxv
YXQoc3RhdGUpOwpAQCAtNDg3OCw3ICs0ODc4LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXMK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlvbiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb24oRGVm
ZXJyZWRXcmFwcGVyKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURl
ZmVycmVkKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTQ4OTYsNyArNDg5Niw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGZsb2F0IGEgPSBzdGF0
ZS0+YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CkBAIC00OTIzLDcgKzQ5MjMsNyBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbldpdGhFeAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoRXhjZXB0aW9uKERlZmVycmVkV3JhcHBlcihzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIHByb21pc2VEZWZlcnJlZCksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKQEAgLTQ5NDMsNyArNDk0Myw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJ
bnRBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKIAogICAgIHNpemVfdCBh
cmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0g
MCkgewpAQCAtNDk3OCw3ICs0OTc4LDcgQEAgdm9pZCBKU1Rlc3RPYmpPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAg
YXV0byoganNUZXN0T2JqID0ganNDYXN0PEpTVGVzdE9iaio+KGhhbmRsZS5zbG90KCktPmFzQ2Vs
bCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE9iai0+aW1wbCgpLCBq
c1Rlc3RPYmopOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T2JqLT53cmFwcGVk
KCksIGpzVGVzdE9iaik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC01
MDI4LDcgKzUwMjgsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPYmoqIGltcAogVGVzdE9iaiogSlNUZXN0
T2JqOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCmluZGV4IGRkNTBiYTI2ZTFlYzJkMjg5MzhkMDZiMDcyZjk3MWI1OTRjYmIz
OTMuLmRlNGFiZmFjZjg0YWFmNzEwNThmM2JiZWEwOTEyOTE4ZjJlZDNmMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAogewogICAgIGF1dG8qIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwoKSwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLT53cmFwcGVkKCksIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogfQogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpAQCAtMjYxLDcgKzI2MSw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE92ZXJsb2FkCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyo+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggM2Q5N2IxM2NhYmIwNzNkMTQx
YjY0YTU5NzQ3MzI3ZjFmOGVlODZhNC4uNDFmM2YyNDkyMjExYjQ0ZGFiY2ZmOTcyYWQyYjQyNWM3
YzA2NzY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMTc0LDcg
KzE3NCw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKG1vZGUuaW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1l
IDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwpAQCAtMTkyLDcgKzE5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsICJuYW1lZEl0ZW0iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYW1lID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pCiB7CiAgICAgYXV0byoganNUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IGpzQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+aW1wbCgpLCBqc1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE92ZXJy
aWRlQnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CiB9CiAKICNp
ZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yNjEsNyArMjYxLDcgQEAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0T3ZlcnJpZGUKIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUpKQotICAg
ICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggYmM3NWQyZWE1
Y2VmZmNkYzRlYTdkYjg2YWYyOWI5NDg1YzcyMTRmOC4uM2EzMjcyMWViMWU5MmJjMTkwYTNkMGFm
ZWU1MjRkMTU1NjMxYzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iagogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVl
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwudmFs
dWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6
IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1
NCw3ICsxNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdAogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiLCAicmVhZG9ubHlWYWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwucmVhZG9ubHlWYWx1
ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDog
anNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTcz
LDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgfQogICAgIGlmIChKU1Zh
bHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5jYWNoZWRWYWx1ZSgpID8gaW1wbC5jYWNo
ZWRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IDApIDoganNOdWxsKCk7CiAgICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5zZXQoc3RhdGUt
PnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpzdGF0ZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAicG9ydHMiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNBcnJheShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwucG9ydHMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtMjEwLDcgKzIxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlCiAgICAgfQogICAgIGlm
IChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVl
LmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmNhY2hlZFJlYWRv
bmx5VmFsdWUoKSA/IGltcGwuY2FjaGVkUmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgY2FzdGVk
VGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVlLnNldChzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcywg
cmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMzcsNyAr
MjM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmEKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
dmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yNTcsNyArMjU3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2Fj
aGVkVmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTAsNyAr
MjkwLDcgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3cKIHsKICAgICBhdXRvKiBqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLT5p
bXBsKCksIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UtPndy
YXBwZWQoKSwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKIH0KIAogI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTM0MCw3ICszNDAsNyBAQCBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3RTZXJpYWxpegogVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZh
bHVlKQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3Jh
cHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggYzIzZGZlMmRjOTc4
YTRiYTQyNjMyOGQzNDUzNjQ3MjMwMDkzMWI3Zi4uNGU0Y2ZlODVhMjA3ZWUxYTc2ZjIzYmNjYWY4
MDJjMjc5ZjFlODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2wKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdB
dHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExvbmdM
b25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0y
MzcsNyArMjM3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImlt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8gaW1wbC5pbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KgogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwuYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKICAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0yODMsNyArMjgzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBKU08KICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0K
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTMxOSw3ICszMTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zNDUsNyArMzQ1LDcgQEAg
dm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0
aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAs
IDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIHNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQyNyw3ICs0
MjcsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIG5h
dGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC00NjksNyArNDY5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
RnVuYyhFeGVjU3RhdGUqIHN0YXQKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJm
dW5jIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RU
eXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAKICAgICBzaXplX3QgYXJn
c0NvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDAp
IHsKQEAgLTQ5MSw3ICs0OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgZmxvYXQgd2lkdGggPSBzdGF0ZS0+YXJndW1lbnQo
MCkudG9GbG9hdChzdGF0ZSk7CkBAIC01MzIsNyArNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVl
bmNlQXIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVu
Y2VBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZl
Y3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQ
dHJOYXRpdmVBcnJheTxTZXJpYWxpemVkU2NyaXB0VmFsdWUsIEpTU2VyaWFsaXplZFNjcmlwdFZh
bHVlPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OnRvV3JhcHBlZCkpOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlQXJyYXlBcmcoRXhl
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFibGVBcnJheUFyZyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSk7CkBAIC01NjYsNyArNTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVjU3QKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jV2l0aENsYW1wIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXJn
MSA9IDA7CkBAIC02MDMsNyArNjAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGkKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVy
dHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigp
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTYxNSw3ICs2
MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlw
ZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjU1LDcgKzY1
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlw
ZWRlZnMiLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFZlY3RvcjxSZWZQdHI8VGVzdEV2
ZW50VGFyZ2V0Pj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxUZXN0RXZlbnRU
YXJnZXQsIEpTVGVzdEV2ZW50VGFyZ2V0PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAmSlNU
ZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCkpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFeGNlcHRpb24oCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9k
V2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGltcGwubWV0aG9kV2l0aEV4Y2VwdGlvbihlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBK
U1Rlc3RUeXBlZGVmc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCogY29udGUKIHsKICAgICBhdXRvKiBqc1Rlc3RUeXBlZGVmcyA9IGpzQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBhdXRvJiB3b3Js
ZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwgJmpzVGVzdFR5cGVkZWZzLT5pbXBsKCksIGpzVGVzdFR5cGVkZWZzKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFR5cGVkZWZzLT53cmFwcGVkKCksIGpz
VGVzdFR5cGVkZWZzKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKQEAgLTc0
MCw3ICs3NDAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RUeXBlZGVmcwogVGVzdFR5cGVkZWZzKiBKU1Rl
c3RUeXBlZGVmczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiAmd3JhcHBlci0+aW1wbCgpOworICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXggNjRh
ZjMxODRhYmViNjM5ZjY0ZTgzY2Y3MjViZTg2YzEzNTAwMWIyNi4uZTJmY2JhZmIyMGUzYTRhY2U2
YzgxZGZkMWJhNGRmMTlhNmZkYzFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0xMjIsNyArMTIyLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25seShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJhdHRyaWJ1dGUiLCAicmVh
ZG9ubHkiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZG9ubHkoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSlNh
dHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqIGNvbnRleHQpCiB7CiAgICAgYXV0byoganNhdHRyaWJ1dGUgPSBqc0Nhc3Q8SlNhdHRy
aWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc2F0dHJpYnV0ZS0+aW1wbCgpLCBqc2F0dHJpYnV0ZSk7CisgICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsICZqc2F0dHJpYnV0ZS0+d3JhcHBlZCgpLCBqc2F0dHJpYnV0ZSk7CiB9CiAK
ICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBhdHRyaWJ1dGUqIGkKIGF0dHJpYnV0ZSogSlNhdHRyaWJ1dGU6OnRvV3JhcHBlZChKU0M6
OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0
PEpTYXR0cmlidXRlKj4odmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPmltcGwoKTsK
KyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU3JlYWRvbmx5LmNwcAppbmRleCA1NGZjYThjNzc5MGI3OGRiZTE2MzhhZDk2ZDljODQ1MTNh
ZTc1ZDY1Li5jZWU4MjUyNzY2NTdmNTZjMzdlYzhkMjNjZWViYzg5YTIyZjQxNGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9u
bHkuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBKU3JlYWRvbmx5T3duZXI6OmZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAg
IGF1dG8qIGpzcmVhZG9ubHkgPSBqc0Nhc3Q8SlNyZWFkb25seSo+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQq
Pihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzcmVhZG9ubHktPmltcGwo
KSwganNyZWFkb25seSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc3JlYWRvbmx5LT53
cmFwcGVkKCksIGpzcmVhZG9ubHkpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRv
bmx5KiBpbXBsKQpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgcmVhZG9ubHkqIGltCiBy
ZWFkb25seSogSlNyZWFkb25seTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seSo+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT5pbXBsKCk7CisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCAzOTE0MDg1MWMyN2FkOWMzODZlMzgxODQ4OTQ4
NTRlMzk5ZDA5Mzk0Li5iMTI2MTI3ZWQyZjQ0N2I0NDZjOGFhMTVmYTBkMGY2NjljM2M5MmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2Qo
RXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcgYSBydW50
aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAgICAgICBpZiAodGhpc1ZhbHVlLmlu
aGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCi0gICAgICAgICAgICBpbnN0YW5jZSA9IHBs
dWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSkt
PmltcGwoKSk7CisgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxK
U0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAg
IGlmICghaW5zdGFuY2UpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYTM3NTVkOWYzZjg0N2Q5YjNmYmIwOGVhYmZkZWU2NTkwNTY3OGM1OS4u
ODVlNmQwYTk0MmQwNjg0MjFjMTg2MDg4MWFjZDZkOTcyN2E1YTZmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDM1LDcgKzQz
NSw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0
U3RhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0CiAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc2NyaXB0U3RhdGUsIGluc3BlY3RlZFdpbmRvdy0+
aW1wbCgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOworICAgIHJldHVybiBCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coc2NyaXB0U3RhdGUsIGluc3BlY3Rl
ZFdpbmRvdy0+d3JhcHBlZCgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOwogfQogCiBJbnNw
ZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIEluc3BlY3RvckNvbnRyb2xsZXI6OmZ1bmN0aW9uQ2Fs
bEhhbmRsZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
ODM3YjZiY2I0NTlkZGFmMGUzMTk4NTAxOWFiMmQ1OGM0NWIyN2Y4Yi4uZDExNTE4ZjVlNzE0Nzcx
OTg2Njc0OWI4YTZlMTcwZWE0NTNmMjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC0yMDgxLDcgKzIwODEsNyBAQCBzdGF0aWMgV2ViRnJhbWVMb2FkVHlwZSB0b1dl
YkZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogICAgICAgICBhbnlX
b3JsZEdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxP
YmplY3RPYmopLT53aW5kb3coKTsKIAogICAgIC8vIEdldCB0aGUgZnJhbWUgZnJvbWUgdGhlIGds
b2JhbCBvYmplY3Qgd2UndmUgc2V0dGxlZCBvbi4KLSAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3Js
ZEdsb2JhbE9iamVjdC0+aW1wbCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gYW55V29y
bGRHbG9iYWxPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9j
dW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShraXQoZnJhbWUpKTsg
Ly8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0aGUgZnJhbWUuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4
IGZlZmMzYWI5NWY1MDVkZjliZTZjZWJjZmM0NzZkYjRjMGU0Mzc1NDEuLjdiNWM0ODQzN2YyNjA4
ZDgxY2I3YjkzZTVkMDFjMWM5YTQzMTExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgTlNVUkwg
KnRvTlNVUkwoY29uc3QgU3RyaW5nJiBzKQogc3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9
IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4ga2l0
KHdpbmRvdy0+aW1wbCgpLmZyYW1lKCkpOworICAgIHJldHVybiBraXQod2luZG93LT53cmFwcGVk
KCkuZnJhbWUoKSk7CiB9CiAKIFdlYlNjcmlwdERlYnVnZ2VyOjpXZWJTY3JpcHREZWJ1Z2dlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGY2
OWYxZTExNzVmY2QyMWI3ZjYyNjU1MjgyMTc2YzhlYTZmNDlkNDkuLmNlYjE4ZGMzMDM0MTU5ZDc4
MTlmZmM1OTI2ZjYwMDlkZDE0ZmIzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIwMDQs
NyArMjAwNCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAgICAgICAgIGFueVdvcmxkR2xv
YmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9i
aiktPndpbmRvdygpOwogCiAgICAgLy8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9i
amVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgotICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFs
T2JqZWN0LT5pbXBsKCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBhbnlXb3JsZEdsb2Jh
bE9iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgp
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5X
b3JsZCh3b3JsZC0+d29ybGQoKSwgc3RyaW5nLCB0cnVlKS5qc1ZhbHVlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGY4MDBjMjJm
Y2Y1MmM3YjM2NjY4MTRkZGEyNmI3NDQyYTFjNjQwYjcuLmY5YzI2MDY4MWVhZDg2NjdjNjBmOTNk
NzhiODQzNTdmNmM0NmM3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtNjgzLDcgKzY4Myw3IEBAIFdlYkZyYW1lKiBXZWJGcmFtZTo6
ZnJhbWVGb3JDb250ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQogICAgIGlmIChzdHJjbXAoZ2xv
YmFsT2JqZWN0T2JqLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiSlNET01XaW5kb3dTaGVsbCIp
ICE9IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nh
c3Q8SlNET01XaW5kb3dTaGVsbCo+KGdsb2JhbE9iamVjdE9iaiktPndpbmRvdygpLT5pbXBsKCku
ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxs
Kj4oZ2xvYmFsT2JqZWN0T2JqKS0+d2luZG93KCktPndyYXBwZWQoKS5mcmFtZSgpOwogICAgIHJl
dHVybiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogfQogCkBAIC03MjgsNyArNzI4
LDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxlbWVudCkK
ICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKEpTRWxlbWVudDo6aW5mbygpKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZvckVsZW1l
bnQoJmpzQ2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+aW1wbCgpKTsKKyAgICByZXR1
cm4gY291bnRlclZhbHVlRm9yRWxlbWVudCgmanNDYXN0PEpTRWxlbWVudCo+KHRvSlMoZWxlbWVu
dCkpLT53cmFwcGVkKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OnByb3Zpc2lvbmFsVVJMKCkg
Y29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>