<?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>133795</bug_id>
          
          <creation_ts>2014-06-12 05:49:56 -0700</creation_ts>
          <short_desc>Have ScriptExecutionContext::Task lambdas take in a ScriptExecutionContext reference</short_desc>
          <delta_ts>2014-06-16 09:46:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015095</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-06-12 05:49:56 -0700</bug_when>
    <thetext>Have ScriptExecutionContext::Task lambdas take in a ScriptExecutionContext reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015098</commentid>
    <comment_count>1</comment_count>
      <attachid>232950</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-06-12 06:05:06 -0700</bug_when>
    <thetext>Created attachment 232950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015099</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-12 06:06:29 -0700</bug_when>
    <thetext>Attachment 232950 did not pass style-queue:


ERROR: Source/WebCore/dom/ScriptExecutionContext.h:120:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:127:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:144:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp:86:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/workers/WorkerThread.cpp:216:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WebCore/loader/WorkerThreadableLoader.cpp:161:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/loader/WorkerThreadableLoader.cpp:172:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/loader/WorkerThreadableLoader.cpp:184:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/loader/WorkerThreadableLoader.cpp:197:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/loader/WorkerThreadableLoader.cpp:208:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/loader/WorkerThreadableLoader.cpp:230:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 11 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015882</commentid>
    <comment_count>3</comment_count>
      <attachid>232950</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-06-16 09:46:28 -0700</bug_when>
    <thetext>Comment on attachment 232950
Patch

Clearing flags on attachment: 232950

Committed r170013: &lt;http://trac.webkit.org/changeset/170013&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015883</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-06-16 09:46:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232950</attachid>
            <date>2014-06-12 06:05:06 -0700</date>
            <delta_ts>2014-06-16 09:46:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133795-20140612060439.patch</filename>
            <type>text/plain</type>
            <size>77949</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBlMjJmM2ZiODdmNWI5
ODU0MjIwNmJmYTg0NzJjYTNiYWRiM2E0YS4uZjE5N2NlNGVhODc1MjIwYTFkODE0YzY5ODc0ZDZj
MGY4M2Q1NzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyNSBAQAogMjAxNC0wNi0xMiAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKKyAgICAgICAgSGF2ZSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIGZ1bmN0aW9ucyB0YWtlIGluIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMzc5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG9iamVj
dCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgQysrMTEgbGFtYmRhcyBvcgorICAgICAgICBoZWxwZXIg
ZnVuY3Rpb25zIHdyYXBwZWQgaW4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayBpcyBuZXZl
ciBudWxsLCBzbyB0aGF0IHBhcmFtZXRlcgorICAgICAgICBzaG91bGQgYmUgYSByZWZlcmVuY2Ug
aW5zdGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6On5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2Fs
bGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OmNs
ZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrc0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6cHJvY2Vzc1BlbmRpbmdUYXNrcyk6IERlcmVmZXJlbmNlIHRoZQorICAgICAgICBtZW1iZXIg
dmFyaWFibGUgdGhhdCBob2xkcyBhIG5ldmVyLW51bGwgcG9pbnRlciB0byB0aGUgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC4gVGhpcyBzaG91bGQKKyAgICAgICAgc2ltaWxhcmx5IGJlIGEgcmVmZXJl
bmNlLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpkaWRDb25uZWN0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVk
QW1vdW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2VDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmRpZENsb3NlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yQ2FsbGJhY2spOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFs
U2NvcGVEaWRTZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ondvcmtlckdsb2JhbFNjb3BlRGlkR2V0
QnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVEaWRD
b25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ondvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZU1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlQmlu
YXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJHbG9iYWxTY29wZURpZFVwZGF0ZUJ1
ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ondvcmtlckdsb2JhbFNjb3BlRGlkU3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6Ondvcmtlckdsb2JhbFNjb3Bl
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZl
TWVzc2FnZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ29ubmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFp
blRocmVhZFNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQmxvYik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZEJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRGYWlsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVz
dHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6bWFpblRocmVhZFN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRSZXN1bWUpOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVD
YWxsYmFja0RhdGFUYXNrOjpEZWxldGVDYWxsYmFja0RhdGFUYXNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNH
bG9iYWxPYmplY3RUYXNrOjpKU0dsb2JhbE9iamVjdFRhc2spOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2VzU29vbik6CisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFkZENvbnNvbGVNZXNzYWdlVGFzazo6QWRkQ29u
c29sZU1lc3NhZ2VUYXNrKToKKyAgICAgICAgKiBkb20vU3RyaW5nQ2FsbGJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJhY2spOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWxheWVkQWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6YWJvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6ZG9BYm9ydCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjptYWluVGhyZWFkRGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsKToKKyAgICAgICAgKFdl
YkNvcmU6Ondvcmtlckdsb2JhbFNjb3BlRGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp3b3Jr
ZXJHbG9iYWxTY29wZURpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2Vy
R2xvYmFsU2NvcGVEaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6Ondvcmtlckdsb2JhbFNjb3Bl
RGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJHbG9i
YWxTY29wZURpZEZhaWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpw
b3N0TGlzdGVuZXJUYXNrKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVz
dEZyb21DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRS
ZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oOgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9z
aXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm94
eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpjbG9z
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VU
b1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Om5vdGlmeU5ldHdv
cmtTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6
Y29ubmVjdFRvSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5OjpkaXNjb25uZWN0RnJvbUluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6c2VuZE1lc3NhZ2VUb0luc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlQ2xv
c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2Fn
ZVRvUGFnZUluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94
eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcyk6CisKKzIwMTQtMDYt
MTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFdvcmtl
clJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrIHNob3VsZCB0YWtlIGluIFdvcmtlckdsb2JhbFNj
b3BlKiB0byBhdm9pZCBkb3duY2FzdGluZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNjE2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggNzQyOWFiZThmNmVkOTg1OTEwYjFkOGM5MGU1
M2Q3MmMyZWM5YWIzMi4uZmU2ZjNjNzI2MmJlNzRmZTE4OTdiNzdhNTY4ZThhYWU1MjRmMGM3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
QEAgLTMyLDcgKzMyLDYgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAi
Q2hhbmdlVmVyc2lvbkRhdGEuaCIKLSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNs
dWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgpAQCAtOTIsOCArOTEsOCBAQCBEYXRh
YmFzZTo6fkRhdGFiYXNlKCkKICAgICAgICAgLy8gR3JhYiBhIHBvaW50ZXIgdG8gdGhlIHNjcmlw
dCBleGVjdXRpb24gaGVyZSBiZWNhdXNlIHdlJ3JlIHJlbGVhc2luZyBpdCB3aGVuIHdlIHBhc3Mg
aXQgdG8KICAgICAgICAgLy8gRGVyZWZDb250ZXh0VGFzazo6Y3JlYXRlLgogICAgICAgICBQYXNz
UmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHBhc3NlZENvbnRleHQgPSBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQucmVsZWFzZSgpOwotICAgICAgICBwYXNzZWRDb250ZXh0LT5wb3N0VGFz
ayh7U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFs9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0ID09IHBhc3NlZENvbnRleHQpOworICAgICAgICBwYXNzZWRDb250ZXh0
LT5wb3N0VGFzayh7U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFs9
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCAmY29udGV4dCA9PSBwYXNzZWRDb250ZXh0KTsKICAgICAgICAgICAg
IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KHBh
c3NlZENvbnRleHQpOwogICAgICAgICB9fSk7CiAgICAgfQpAQCAtMTcxLDcgKzE3MCw3IEBAIHZv
aWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxs
YmFjaz4gY2FsbGJhY2ssIFBhc3NSCiAKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5k
PiB0cmFuc2FjdGlvbkJhY2tlbmQoYmFja2VuZCgpLT5ydW5UcmFuc2FjdGlvbih0cmFuc2FjdGlv
bi5yZWxlYXNlKCksIHJlYWRPbmx5LCBjaGFuZ2VWZXJzaW9uRGF0YSkpOwogICAgIGlmICghdHJh
bnNhY3Rpb25CYWNrZW5kICYmIGVycm9yQ2FsbGJhY2tQcm90ZWN0b3IpCi0gICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgeworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFs9XSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2tQcm90ZWN0
b3ItPmhhbmRsZUV2ZW50KFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAi
ZGF0YWJhc2UgaGFzIGJlZW4gY2xvc2VkIikuZ2V0KCkpOwogICAgICAgICB9KTsKIH0KQEAgLTE3
OSw3ICsxNzgsNyBAQCB2b2lkIERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUgogdm9pZCBEYXRhYmFzZTo6c2No
ZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsK
ICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uUHJvdGVjdG9yKHRyYW5zYWN0
aW9uKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFs9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopIHsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgdHJhbnNhY3Rpb25Q
cm90ZWN0b3ItPnBlcmZvcm1QZW5kaW5nQ2FsbGJhY2soKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNw
cAppbmRleCA3NDRkMWE4YTQxZDM3OWI1MTYzYzMxYTk1ODIzZWViNTM3M2JhYTk2Li5jOTcyMjNi
MGMwMmU3YjlmODU2ZjIyYmRlNmQ0ZDhhY2M4NzI4OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zMTEs
NyArMzExLDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGUKIAogICAgIGlmIChiYWNrZW5kLT5p
c05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VB
UEksICJTY2hlZHVsaW5nIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sgZm9yIGRhdGFiYXNl
ICVwXG4iLCBkYXRhYmFzZS5nZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlLT5tX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsKKyAg
ICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soWz1dIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAgICAgY3JlYXRpb25DYWxsYmFjay0+
aGFuZGxlRXZlbnQoZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBw
ZXIuaAppbmRleCAzZGIwYzUxNmNjOWJmODA3NjBjNTA5ZjM5Y2E2OTc1NGNmODk1YTJhLi4xNDJj
ZDU1NTE3Y2ZkNzBhNzg1OWJiMDQ2ZTRjMWJkMWQyNzU5YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKQEAg
LTczLDggKzczLDggQEAgcHVibGljOgogICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dFB0ciA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkubGVha1JlZigpOwogICAg
ICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0ci0+cG9zdFRhc2soeyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgWz1dIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0ciAmJiBjb250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRQdHItPnBvc3RUYXNr
KHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFs9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCAmY29udGV4dCA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyICYmIGNvbnRleHQu
aXNDb250ZXh0VGhyZWFkKCkpOwogICAgICAgICAgICAgY2FsbGJhY2stPmRlcmVmKCk7CiAgICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5kZXJlZigpOwogICAgICAgICB9IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNw
cAppbmRleCA1MzJmYmFhOTI4MjhiZjMyYmE3YTRmNTMwZTRmMDBmZWYxNWU4MjVjLi4wODVkNjcy
ZDhlYjcwNGYyNzRmOTRhYWMzODhmNzk5OTA5ZGU3OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtMjE0LDkgKzIxNCw5IEBA
IHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpyZXN1bWUoKQog
ICAgIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3NDYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlcikKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNzUGVuZGluZ1Rhc2tzQ2FsbGJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgIHdyYXBwZXItPnByb2Nl
c3NQZW5kaW5nVGFza3MoKTsKIH0KIApAQCAtMjMzLDU0ICsyMzMsNTQgQEAgdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3MoKQog
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
Pj4gcGVuZGluZ1Rhc2tzID0gc3RkOjptb3ZlKG1fcGVuZGluZ1Rhc2tzKTsKICAgICBmb3IgKGF1
dG8mIHRhc2sgOiBwZW5kaW5nVGFza3MpCi0gICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKG51bGxw
dHIpOworICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygqbV9jb250ZXh0KTsKIH0KIAotdm9pZCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3RDYWxsYmFj
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlcikKK3ZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0Q2FsbGJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCAhY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIGlmICh3cmFwcGVy
LT5tX2NsaWVudCkKICAgICAgICAgd3JhcHBlci0+bV9jbGllbnQtPmRpZENvbm5lY3QoKTsKIH0K
IAotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiB3cmFwcGVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCAhY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAg
IGlmICh3cmFwcGVyLT5tX2NsaWVudCkKICAgICAgICAgd3JhcHBlci0+bV9jbGllbnQtPmRpZFJl
Y2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFy
eURhdGEpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3Jh
cHBlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCiB7Ci0gICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCAhY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwog
ICAgIGlmICh3cmFwcGVyLT5tX2NsaWVudCkKICAgICAgICAgd3JhcHBlci0+bV9jbGllbnQtPmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKGJpbmFyeURhdGEpOwogfQogCi12b2lkIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnRDYWxsYmFj
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlciwgdW5zaWduZWQgbG9uZyBidWZm
ZXJlZEFtb3VudCkKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudENhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyPiB3cmFwcGVyLCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KQogewotICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsK
ICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5k
aWRVcGRhdGVCdWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7CiB9CiAKLXZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hh
a2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlcikKK3ZvaWQgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5k
c2hha2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlcikKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oY29u
dGV4dCk7CiAgICAgaWYgKHdyYXBwZXItPm1fY2xpZW50KQogICAgICAgICB3cmFwcGVyLT5tX2Ns
aWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyPiB3cmFwcGVyLCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVk
QW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlv
blN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkQ2xvc2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
d3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVh
c29uKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOworICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0KTsKICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdy
YXBwZXItPm1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiB9CiAKLXZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yQ2Fs
bGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCit2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvckNh
bGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3cmFwcGVyKQogewotICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsK
ICAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCiAgICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5k
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgKaW5kZXggYjFlMmZjY2Q0MWYyYjBmNzNlZDUxOWFkNTIx
NWZlNjhiNWY3YTlmMy4uZTQxYTRlMjhhZGY2ZDUyYTBkZmRkMTQwMzY4YmRjZDAwNzkxOWQ5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaApA
QCAtOTIsMTYgKzkyLDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50Kik7CiAKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzUGVuZGluZ1Rhc2tz
Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPik7CiAgICAgdm9pZCBwcm9jZXNzUGVuZGluZ1Rh
c2tzKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBkaWRDb25uZWN0Q2FsbGJhY2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVCaW5hcnlEYXRhQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgUGFzc093
blB0cjxWZWN0b3I8Y2hhcj4+KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFt
b3VudENhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRB
bW91bnQpOwotICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4pOwotICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlQ2FsbGJhY2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0
dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKLSAgICBzdGF0
aWMgdm9pZCBwcm9jZXNzUGVuZGluZ1Rhc2tzQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvckNhbGxiYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4pOworICAgIHN0YXRpYyB2b2lkIGRpZENvbm5lY3RDYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI+KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPj4pOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZUJ1ZmZl
cmVkQW1vdW50Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgdW5zaWduZWQgbG9uZyBidWZm
ZXJlZEFtb3VudCk7CisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlQ2Fs
bGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyPik7CisgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VDYWxs
YmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCB1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVk
QW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlv
blN0YXR1cywgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOworICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3JDYWxsYmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI+KTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAgICBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE3N2MxMTYwZjEzMjJjZThhMzNjOWY3MzZiODIzN2Zk
MDUwOTA1N2UuLmIzZTRiZTZjODIwYzZhZTEwMjAwZjMxOGNlZGQ3MmNkOTU5Mzg3NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTY4LDkgKzE2OCw5
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmNvbm5lY3Qo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluCiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+
Y29ubmVjdCh1cmwsIHByb3RvY29sKTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2Nv
cGVEaWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVy
LCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3Vs
dCkKK3N0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkU2VuZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsKIH0K
IApAQCAtMjAxLDkgKzIwMSw5IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OnNlbmQoQmxvYiYgYmluYXJ5RGF0YSkKICAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jvc3NUaHJlYWRUYXNrKCZ3b3JrZXJHbG9i
YWxTY29wZURpZFNlbmQsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHQp
LCBtX3Rhc2tNb2RlKTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRHZXRC
dWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKK3N0YXRpYyB2b2lkIHdvcmtlckds
b2JhbFNjb3BlRGlkR2V0QnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpCiB7Ci0g
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOwogICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldEJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVk
QW1vdW50KTsKIH0KIApAQCAtMjU3LDkgKzI1Nyw5IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OnJlc3VtZSgpCiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5l
bC0+cmVzdW1lKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkQ29ubmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3Qg
U3RyaW5nJiBzdWJwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zKQorc3RhdGljIHZv
aWQgd29ya2VyR2xvYmFsU2NvcGVEaWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHN1YnByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbnMpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNl
dFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRF
eHRlbnNpb25zKGV4dGVuc2lvbnMpOwogICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENvbm5l
Y3QoKTsKQEAgLTI3MSw5ICsyNzEsOSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KCkKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jvc3NUaHJlYWRUYXNrKCZ3b3JrZXJHbG9iYWxTY29w
ZURpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV9tYWluV2ViU29ja2V0Q2hhbm5l
bC0+c3VicHJvdG9jb2woKSwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5zaW9ucygpKSwg
bV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2
ZU1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3N0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlk
UmVjZWl2ZU1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0
cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdy
YXBwZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKQEAgLTI4Myw5ICsyODMs
OSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lcwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShDcm9zc1RocmVhZFRhc2soJndvcmtlckdsb2JhbFNj
b3BlRGlkUmVjZWl2ZU1lc3NhZ2UsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSksIG1f
dGFza01vZGUpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVC
aW5hcnlEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVy
LCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPj4gYmluYXJ5RGF0YSkKK3N0YXRpYyB2b2lkIHdvcmtl
ckdsb2JhbFNjb3BlRGlkUmVjZWl2ZUJpbmFyeURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlE
YXRhKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlQmluYXJ5
RGF0YShiaW5hcnlEYXRhKTsKIH0KIApAQCAtMjk1LDkgKzI5NSw5IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NP
d25QdHI8VmVjCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKENyb3NzVGhyZWFkVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlQmluYXJ5
RGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBiaW5hcnlEYXRhKSwgbV90YXNrTW9kZSk7CiB9
CiAKLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkVXBkYXRlQnVmZmVyZWRBbW91bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVk
IGxvbmcgYnVmZmVyZWRBbW91bnQpCitzdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZFVw
ZGF0ZUJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KQogewotICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3Vu
dCk7CiB9CiAKQEAgLTMwNyw5ICszMDcsOSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpQZWVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsbwogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShDcm9zc1Ro
cmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkVXBkYXRlQnVmZmVyZWRBbW91bnQsIG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnQpLCBtX3Rhc2tNb2RlKTsKIH0KIAotc3Rh
dGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRTdGFydENsb3NpbmdIYW5kc2hha2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIpCitzdGF0aWMgdm9pZCB3
b3JrZXJHbG9iYWxTY29wZURpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlcikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgd29ya2VyQ2xp
ZW50V3JhcHBlci0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiB9CiAKQEAgLTMxOSw5ICsz
MTksOSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRT
dGFydENsb3NpbmdIYW5kc2hha2UoKQogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShDcm9zc1RocmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3BlRGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIpLCBtX3Rhc2tNb2Rl
KTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRDbG9zZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRz
aGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVk
IHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQorc3RhdGljIHZvaWQgd29ya2VyR2xv
YmFsU2NvcGVEaWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVh
c29uKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNv
bik7CiB9CiAKQEAgLTMzMiw5ICszMzIsOSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpQZWVyOjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZgogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShDcm9zc1Ro
cmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkQ2xvc2UsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBj
b2RlLCByZWFzb24pLCBtX3Rhc2tNb2RlKTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2VyR2xvYmFs
U2NvcGVEaWRSZWNlaXZlTWVzc2FnZUVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3
b3JrZXJDbGllbnRXcmFwcGVyKQorc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNl
aXZlTWVzc2FnZUVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NSZWZQ
dHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRX
cmFwcGVyKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVz
c2FnZUVycm9yKCk7CiB9CiAKQEAgLTM1OSwxNiArMzU5LDE2IEBAIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6On5CcmlkZ2UoKQogICAgIGRpc2Nvbm5lY3QoKTsKIH0K
IAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhy
ZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3JrZXJMb2Fk
ZXJQcm94eSogbG9hZGVyUHJveHksIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyPiBwcnBDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHRhc2tNb2Rl
KQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhy
ZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrZXJMb2Fk
ZXJQcm94eSogbG9hZGVyUHJveHksIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyPiBwcnBDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHRhc2tNb2Rl
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc0RvY3VtZW50KCkpOwogCiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciA9IHBycENsaWVudFdyYXBwZXI7CiAK
LSAgICBQZWVyKiBwZWVyUHRyID0gUGVlcjo6Y3JlYXRlKGNsaWVudFdyYXBwZXIsICpsb2FkZXJQ
cm94eSwgY29udGV4dCwgdGFza01vZGUpOwotICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LT5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzazo6Q2xlYW51cFRhc2ssIFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CisgICAgUGVlciogcGVlclB0ciA9IFBlZXI6OmNyZWF0ZShjbGllbnRXcmFw
cGVyLCAqbG9hZGVyUHJveHksICZjb250ZXh0LCB0YXNrTW9kZSk7CisgICAgYm9vbCBzZW50ID0g
bG9hZGVyUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoeyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgWz1dIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFp
bGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0aW9uKCkpIHsKICAgICAgICAgICAgIC8vIElmIEJyaWRn
ZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2UgbmVlZCB0byBraWNrIG1haW5UaHJl
YWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgogICAgICAgICAgICAgbG9hZGVyUHJveHkt
PnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ryb3ksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MocGVl
clB0cikpKTsKQEAgLTM5NCwxMCArMzk0LDEwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1fd29ya2VyQ2xpZW50
V3JhcHBlci0+c2V0RmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0aW9uKCk7CiB9CiAKLXZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
UGVlciogcGVlciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCiAgICAgcGVlci0+Y29ubmVjdCh1
cmwsIHByb3RvY29sKTsKQEAgLTQxMSwyOSArNDExLDI5IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFkVGFzaygm
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0LCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIHVybCwgcHJvdG9jb2wpKTsKIH0KIAotdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVF9VTlVTRUQo
Y29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIAogICAg
IHBlZXItPnNlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGVlciogcGVlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGRhdGEpCit2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEFycmF5
QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBlZXIqIHBlZXIsIFBhc3NP
d25QdHI8VmVjdG9yPGNoYXI+PiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VS
VChwZWVyKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBwZWVyLT5zZW5k
KCphcnJheUJ1ZmZlcik7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
ZWVyKiBwZWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcg
c2l6ZSkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRT
ZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNE
b2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVlcik7CiAKICAgICBSZWZQdHI8QmxvYj4gYmxvYiA9
IEJsb2I6OmRlc2VyaWFsaXplKHVybCwgdHlwZSwgc2l6ZSk7CkBAIC00ODYsMTAgKzQ4NiwxMCBA
QCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgIHJldHVybiBjbGllbnRXcmFwcGVyLT5zZW5k
UmVxdWVzdFJlc3VsdCgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjptYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGVlciogcGVlcikKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
Om1haW5UaHJlYWRCdWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBQZWVyKiBwZWVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIAog
ICAgIHBlZXItPmJ1ZmZlcmVkQW1vdW50KCk7CkBAIC01MDksMTAgKzUwOSwxMCBAQCB1bnNpZ25l
ZCBsb25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVk
QW1vdW50KCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBlZXIqIHBlZXIsIGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKK3ZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBQZWVyKiBwZWVyLCBpbnQgY29kZSwgY29uc3QgU3RyaW5n
JiByZWFzb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCiAgICAg
cGVlci0+Y2xvc2UoY29kZSwgcmVhc29uKTsKQEAgLTUyNSwxMCArNTI1LDEwIEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKENyb3Nz
VGhyZWFkVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRD
bG9zZSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCBjb2RlLCByZWFzb24pKTsKIH0K
IAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEZhaWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgU3RyaW5n
JiByZWFzb24pCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhy
ZWFkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVlcik7
CiAKICAgICBwZWVyLT5mYWlsKHJlYXNvbik7CkBAIC01NDEsMTAgKzU0MSwxMCBAQCB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmZhaWwoY29uc3QgU3RyaW5n
JiByZWFzb24pCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFk
VGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRGYWlsLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIHJlYXNvbikpOwogfQogCi12b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyUHRyKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgUGVlciogcGVlclB0cikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGVlcj4gcGVlcihwZWVyUHRyKTsKIH0KIApAQCAtNTU4LDEwICs1NTgs
MTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpkaXNj
b25uZWN0KCkKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFN1c3BlbmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFBlZXIqIHBlZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgQVNT
RVJUKHBlZXIpOwogCiAgICAgcGVlci0+c3VzcGVuZCgpOwpAQCAtNTc0LDEwICs1NzQsMTAgQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzdXNwZW5kKCkK
ICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFN1c3BlbmQsIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjptYWluVGhyZWFkUmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBlZXIqIHBlZXIpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjptYWluVGhyZWFkUmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBlZXIq
IHBlZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCiAgICAgcGVl
ci0+cmVzdW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4
IDIzZWE0YjkwYjRjMzJmMDg1MTQ4ZWJjNjcxMGNjNWQ3ZjQxNTQ2OWQuLjVmOGY0MWQxNTE5NWY3
ZTk2Y2M1OTMxOWQ1Y2Y0ODY0NmNmNGE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IHZvaWQgc2V0V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQnJpZGdl
KiB0aGlzUHRyLCBQZWVyKiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI+KTsKIAogICAgICAgICAvLyBFeGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQg
dG8gY3JlYXRlIGEgUGVlciBmb3IgdGhpcyBicmlkZ2UuCi0gICAgICAgIHN0YXRpYyB2b2lkIG1h
aW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJMb2FkZXJQ
cm94eSosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJl
YWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrZXJMb2FkZXJQcm94eSos
IFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSk7CiAKICAgICAgICAgLy8gRXhlY3V0ZWQgb24gdGhlIHdvcmtl
ciBjb250ZXh0J3MgdGhyZWFkLgogICAgICAgICB2b2lkIGNsZWFyQ2xpZW50V3JhcHBlcigpOwpA
QCAtMTY5LDE2ICsxNjksMTYgQEAgcHJpdmF0ZToKIAogICAgIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3BlKiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCos
IGNvbnN0IFN0cmluZyYgdGFza01vZGUpOwogCi0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENv
bm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgc3Rh
dGljIHZvaWQgbWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGVlciosIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+Pik7Ci0gICAgc3RhdGljIHZvaWQgbWFp
blRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7Ci0gICAgc3RhdGljIHZvaWQg
bWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7
Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQZWVyKiwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKLSAgICBzdGF0aWMgdm9p
ZCBtYWluVGhyZWFkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGVlciopOwotICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTdXNw
ZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Ci0gICAgc3RhdGljIHZvaWQgbWFp
blRocmVhZFJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOworICAgIHN0YXRp
YyB2b2lkIG1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQZWVyKiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgc3RhdGljIHZvaWQgbWFp
blRocmVhZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBlZXIqLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFBlZXIqLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPj4pOwor
ICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUGVlciosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUp
OworICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRCdWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgUGVlciopOworICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDbG9zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUGVlciosIGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7CisgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFBlZXIqLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CisgICAgc3RhdGljIHZvaWQgbWFpblRo
cmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBlZXIqKTsKKyAgICBzdGF0aWMg
dm9pZCBtYWluVGhyZWFkU3VzcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGVlciopOwor
ICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRSZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFBlZXIqKTsKIAogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2s7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmluZGV4IDAw
NDk1M2VlOTBkNGFjMjlkYWMwYzZjMDIyYmFjYTYxZmFhMWE3NjUuLjZjZjM5ZWY3MTQ4YmFhN2Ni
YjE5NDRhODc1NjI3MTc3MDdiZTI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogY2xhc3MgRGVsZXRl
Q2FsbGJhY2tEYXRhVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
IHB1YmxpYzoKICAgICBEZWxldGVDYWxsYmFja0RhdGFUYXNrKEpTQ2FsbGJhY2tEYXRhKiBkYXRh
KQotICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soeyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgeworICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soeyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgWz1dIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewogICAgICAgICAgICAgZGVsZXRlIGRhdGE7CiAgICAgICAgIH0gfSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcAppbmRleCA5NDRiMjAxZGRlZjRhMTVlMzBlY2EyZDUzMTljODVlNzI0ZDgxMjJiLi40M2Nk
NzdmMWUyYmFmNjA0Zjk3ZTMxN2U0ODQ1Mzg2YTJmOTc4ODliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgSlNHbG9iYWxPYmplY3RUYXNrOjpKU0dsb2JhbE9iamVjdFRhc2soSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlAKICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sobnVsbHB0cikKIHsKICAgICBSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFj
az4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCB0YXNrKTsKLSAgICBtX3Rhc2sgPSBbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7Cisg
ICAgbV90YXNrID0gWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjYWxs
YmFjay0+Y2FsbCgpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxODAy
ZDU5ODAxNDFjOWY2ZGRiODZlOWU4MTk4ZjgwNTUzMjM2NmFjLi45YWMxZmUwOGIyM2YyZjdlNTdm
ODg2Y2I5N2U2ODYxODMwYmQ3YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ4OTEs
NyArNDg5MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKFRhc2sgdGFzaykKICAgICAgICAg
aWYgKChwYWdlICYmIHBhZ2UtPmRlZmVyc0xvYWRpbmcoKSkgfHwgIWRvY3VtZW50LT5tX3BlbmRp
bmdUYXNrcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3Mu
YXBwZW5kKHN0ZDo6bW92ZSgqdGFzay5yZWxlYXNlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGFzay0+cGVyZm9ybVRhc2soZG9jdW1lbnQpOworICAgICAgICAgICAgdGFzay0+cGVy
Zm9ybVRhc2soKmRvY3VtZW50KTsKICAgICB9KTsKIH0KIApAQCAtNDg5OSw3ICs0ODk5LDcgQEAg
dm9pZCBEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4mKQog
ewogICAgIFZlY3RvcjxUYXNrPiBwZW5kaW5nVGFza3MgPSBzdGQ6Om1vdmUobV9wZW5kaW5nVGFz
a3MpOwogICAgIGZvciAoYXV0byYgdGFzayA6IHBlbmRpbmdUYXNrcykKLSAgICAgICAgdGFzay5w
ZXJmb3JtVGFzayh0aGlzKTsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzaygqdGhpcyk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01PYmplY3Q6OlJl
YXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDJhNzUxZjMxMjdlMzg4NDUyZTg4YmFlOTA5NmNlNjAx
NGMxM2Y2OTcuLmE5NjhiYmYyMmI2MDQ4YjdmZDU1Mjg2MWY4NmJmZGVmZWI3ODUwNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTEzMiw4
ICsxMzIsOCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHJvY2Vzc01lc3NhZ2VQb3J0TWVz
c2FnZXNTb29uKCkKIHsKLSAgICBwb3N0VGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkgewotICAgICAgICBjb250ZXh0LT5kaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCk7
CisgICAgcG9zdFRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgY29udGV4dC5kaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCk7CiAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGI1ZjE1
ODNmYWMzYzY2N2Q3ZGZlMTNkZTQ1YjFlNjcyOTQyZGI1NGQuLmNkOGJjMzdkMWQ0NDdjZmQ3M2Ji
MTI1YjMyOTBiZGQyZjQ3N2UzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaApAQCAtMTE3LDE0ICsxMTcsMTQgQEAgcHVibGljOgogICAgIHB1YmxpYzoK
ICAgICAgICAgZW51bSBDbGVhbnVwVGFza1RhZyB7IENsZWFudXBUYXNrIH07CiAKLSAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwh
c3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopPj46OnZhbHVlPjo6
dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6Omlz
X2NvbnZlcnRpYmxlPFQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICAgVGFzayhUIHRhc2spCiAgICAgICAgICAgICA6
IG1fdGFzayhzdGQ6Om1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhm
YWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxl
PFQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopPj46OnZhbHVl
Pjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICAgVGFz
ayhDbGVhbnVwVGFza1RhZywgVCB0YXNrKQogICAgICAgICAgICAgOiBtX3Rhc2soc3RkOjptb3Zl
KHRhc2spKQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2sodHJ1ZSkKQEAgLTEzNywxMSAr
MTM3LDExIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IG1fdGFzayhjb250
ZXh0KTsgfQorICAgICAgICB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsgbV90YXNrKGNvbnRleHQpOyB9CiAgICAgICAgIGJvb2wgaXNDbGVhbnVwVGFz
aygpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGVhbnVwVGFzazsgfQogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKT4gbV90
YXNrOworICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KT4gbV90YXNrOwogICAgICAgICBib29sIG1faXNDbGVhbnVwVGFzazsKICAgICB9OwogCkBAIC0x
NzgsOCArMTc4LDggQEAgcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFz
ayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFkZENvbnNvbGVNZXNzYWdl
VGFzayhNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCi0gICAgICAgICAgICA6IFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7CisgICAgICAgICAgICA6IFRhc2soWz1dIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgY29udGV4dC5h
ZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKTsKICAgICAgICAgICAgIH0p
CiAgICAgICAgIHsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
cmluZ0NhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAK
aW5kZXggZGE2Yjk2ZWE5ZTQ2YWY2NGQ0YzlhMmE4N2I5NTBhMTVlYjM0MTIyNS4uZTZlNmFhZGQ2
YWFjZmRkMmYwNWQzMmUwMjcxZDhlZjQ1MDRlOTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyaW5n
Q2FsbGJhY2suY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQg
U3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIFJlZlB0cjxTdHJpbmdDYWxsYmFj
az4gcHJvdGVjdG9yKHRoaXMpOwotICAgIGNvbnRleHQtPnBvc3RUYXNrKFs9XSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIHsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIHRoaXMtPmhhbmRsZUV2ZW50KGRhdGEpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggNDY2NzlmZWNkNDQ4
MzRmOTU5OWNjYzYwNjljMTg1NmEzOGVhOGUzZS4uNmVlZmI2MjQzMmY2MDUyY2RmMDY5MGEzNjQy
ZGIxOTkzMTUxZDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAKICNpbmNsdWRlICJGaWxlUmVhZGVyLmgiCiAKLSNpbmNsdWRlICJDcm9z
c1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmls
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE0NCwxMSArMTQzLDYgQEAgdm9pZCBGaWxl
UmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiogYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5
cGUgdHlwZSwgRXhjZXAKICAgICBtX2xvYWRlci0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBtX2Jsb2IuZ2V0KCkpOwogfQogCi1zdGF0aWMgdm9pZCBkZWxheWVkQWJvcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEZpbGVSZWFkZXIqIHJlYWRlcikKLXsKLSAgICByZWFkZXItPmRv
QWJvcnQoKTsKLX0KLQogdm9pZCBGaWxlUmVhZGVyOjphYm9ydCgpCiB7CiAgICAgTE9HKEZpbGVB
UEksICJGaWxlUmVhZGVyOiBhYm9ydGluZ1xuIik7CkBAIC0xNTgsMjQgKzE1MiwyMSBAQCB2b2lk
IEZpbGVSZWFkZXI6OmFib3J0KCkKICAgICBtX2Fib3J0aW5nID0gdHJ1ZTsKIAogICAgIC8vIFNj
aGVkdWxlIHRvIGhhdmUgdGhlIGFib3J0IGRvbmUgbGF0ZXIgc2luY2UgYWJvcnQoKSBtaWdodCBi
ZSBjYWxsZWQgZnJvbSB0aGUgZXZlbnQgaGFuZGxlciBhbmQgd2UgZG8gbm90IHdhbnQgdGhlIHJl
c291cmNlIGxvYWRpbmcgY29kZSB0byBiZSBpbiB0aGUgc3RhY2suCi0gICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhDcm9zc1RocmVhZFRhc2soJmRlbGF5ZWRBYm9ydCwgQWxs
b3dBY2Nlc3NMYXRlcih0aGlzKSkpOwotfQotCi12b2lkIEZpbGVSZWFkZXI6OmRvQWJvcnQoKQot
ewotICAgIEFTU0VSVChtX3N0YXRlICE9IERPTkUpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgICAgIEFT
U0VSVChtX3N0YXRlICE9IERPTkUpOwogCi0gICAgdGVybWluYXRlKCk7Ci0gICAgbV9hYm9ydGlu
ZyA9IGZhbHNlOworICAgICAgICB0ZXJtaW5hdGUoKTsKKyAgICAgICAgbV9hYm9ydGluZyA9IGZh
bHNlOwogCi0gICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6QUJPUlRf
RVJSKTsKKyAgICAgICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6QUJP
UlRfRVJSKTsKIAotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0gICAg
ZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKLSAgICBmaXJlRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRlbmRFdmVudCk7CisgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuZXJy
b3JFdmVudCk7CisgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Cisg
ICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkubG9hZGVuZEV2ZW50KTsKIAotICAgIC8vIEFs
bCBwb3NzaWJsZSBldmVudHMgaGF2ZSBmaXJlZCBhbmQgd2UncmUgZG9uZSwgbm8gbW9yZSBwZW5k
aW5nIGFjdGl2aXR5LgotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAgICAv
LyBBbGwgcG9zc2libGUgZXZlbnRzIGhhdmUgZmlyZWQgYW5kIHdlJ3JlIGRvbmUsIG5vIG1vcmUg
cGVuZGluZyBhY3Rpdml0eS4KKyAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgRmlsZVJlYWRlcjo6dGVybWluYXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyYWI0NGFhZDE2
OGNkMmE1ZDgwNzcyMTk4N2Q4MzgxMjA1MWFiODI4Li42MTEwZWMzODdjMDAxYzYwNWZhOTQ0ZmIx
NzQ2MDJmNWZiMmFmZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC05OCwxMCArOTgsMTAgQEAgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6fk1haW5UaHJlYWRCcmlkZ2UoKQogewogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVh
dGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWFpblRocmVhZEJyaWRn
ZSogdGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJl
cXVlc3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IG91dGdvaW5nUmVmZXJyZXIpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNv
bnRleHQpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoJmNvbnRleHQpOwog
CiAgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Q6OmFk
b3B0KHJlcXVlc3REYXRhKSk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUFJlZmVycmVyKG91dGdvaW5n
UmVmZXJyZXIpOwpAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyKFNjcmlwdEV4ZWMK
ICAgICBBU1NFUlQodGhpc1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyKTsKIH0KIAotdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkRGVzdHJveShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRy
KQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhy
ZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNYWluVGhyZWFkQnJp
ZGdlKiB0aGlzUHRyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgIGRlbGV0ZSB0aGlzUHRyOwog
fQogCkBAIC0xMjgsMTAgKzEyOCwxMCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRlc3Ryb3koKQogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcihDcm9zc1RocmVhZFRhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyKQordm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2Vs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQ
dHIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAKICAgICBpZiAoIXRoaXNQdHItPm1fbWFpblRocmVh
ZExvYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDkgKzE1OCw5IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2xlYXJDbGllbnRXcmFwcGVyKCkK
ICAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXN0YXRpYyB2
b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkU2VuZERhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KQorc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRT
ZW5kRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJs
ZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7
Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpOwogICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIApAQCAtMTY5LDkgKzE2OSw5IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKENyb3NzVGhyZWFkVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRTZW5kRGF0YSwg
bV93b3JrZXJDbGllbnRXcmFwcGVyLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIG1f
dGFza01vZGUpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVS
ZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJs
ZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBy
ZXNwb25zZURhdGEpCitzdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVSZXNw
b25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNw
b25zZURhdGEpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOwogICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURhdGEpKTsKICAgICB3b3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgKnJlc3BvbnNlKTsKIH0K
QEAgLTE4MSw5ICsxODEsOSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nCiAgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKENyb3NzVGhyZWFkVGFzaygm
d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlUmVzcG9uc2UsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgaWRlbnRpZmllciwgcmVzcG9uc2UpLCBtX3Rhc2tNb2RlKTsKIH0KIAotc3RhdGljIHZvaWQg
d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVu
dFdyYXBwZXIsIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+PiB2ZWN0b3JEYXRhKQorc3RhdGljIHZv
aWQgd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIsIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+PiB2ZWN0b3JEYXRhKQogewotICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JEYXRhLT5k
YXRhKCksIHZlY3RvckRhdGEtPnNpemUoKSk7CiB9CiAKQEAgLTE5NCw5ICsxOTQsOSBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKENyb3NzVGhyZWFkVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNl
aXZlRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB2ZWN0b3IucmVsZWFzZSgpKSwgbV90YXNr
TW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkRmluaXNoTG9hZGlu
ZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCitzdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURp
ZEZpbmlzaExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFRo
cmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewotICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICB3b3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUp
OwogfQogCkBAIC0yMDUsOSArMjA1LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWQKICAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jvc3NUaHJl
YWRUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50
V3JhcHBlciwgaWRlbnRpZmllciwgZmluaXNoVGltZSksIG1fdGFza01vZGUpOwogfQogCi1zdGF0
aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3N0YXRpYyB2b2lkIHdvcmtl
ckdsb2JhbFNjb3BlRGlkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICB3b3JrZXJDbGllbnRXcmFw
cGVyLT5kaWRGYWlsKGVycm9yKTsKIH0KIApAQCAtMjE2LDkgKzIxNiw5IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKENyb3NzVGhyZWFkVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRGYWlsLCBtX3dv
cmtlckNsaWVudFdyYXBwZXIsIGVycm9yKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lk
IHdvcmtlckdsb2JhbFNjb3BlRGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3N0
YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJD
bGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CiAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vzc0Nv
bnRyb2xDaGVjayhlcnJvcik7CiB9CiAKQEAgLTIyNyw5ICsyMjcsOSBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hl
Y2soY29uc3QgUgogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShDcm9zc1RocmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkRmFpbEFjY2Vzc0Nv
bnRyb2xDaGVjaywgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBlcnJvciksIG1fdGFza01vZGUpOwog
fQogCi1zdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZEZhaWxSZWRpcmVjdENoZWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlcikKK3N0YXRpYyB2b2lkIHdvcmtlckdsb2Jh
bFNjb3BlRGlkRmFpbFJlZGlyZWN0Q2hlY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFw
cGVyKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsUmVkaXJlY3RD
aGVjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaAppbmRleCA4MTU2OGZlMGIzYTc3OWY4ZDlmOGQ1YTYwNTllYTAzYTdmNDQ3OGIwLi4w
NTUxYWM1NWMyZmVjOGI3YjMzN2U2YTI0YzY2MzU2NGIxNzRhN2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTEwNSwxMSArMTA1LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHZvaWQgY2xlYXJDbGllbnRXcmFw
cGVyKCk7CiAKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
Ci0gICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSopOworICAgICAgICAgICAgc3RhdGljIHZvaWQg
bWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1haW5UaHJlYWRCcmlk
Z2UqKTsKICAgICAgICAgICAgIH5NYWluVGhyZWFkQnJpZGdlKCk7CiAKLSAgICAgICAgICAgIHN0
YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE1haW5UaHJlYWRCcmlkZ2UqLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4sIFRocmVhZGFibGVMb2FkZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVm
ZXJyZXIpOwotICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENhbmNlbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSopOworICAgICAgICAgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWFp
blRocmVhZEJyaWRnZSosIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
PiwgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJl
cik7CisgICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2FuY2VsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBNYWluVGhyZWFkQnJpZGdlKik7CiAgICAgICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCmluZGV4IDU0Yzg1NGJjYzZiNDI3OWQ3YTRhYWVjNThlOTAyMTNlMTg5ODNlOTcu
LjdkYmU1MTBlMGYwODVkMThiMjc2OTExY2Y4MzIwNjFiYjBhZTIzNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCkBAIC0xMTE2LDggKzExMTYsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9z
dExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudAogICAgIEFT
U0VSVChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXIpOwogCiAgICAg
UmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXJQcm90ZWN0b3IobG9hZGVyKTsKLSAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBGcmFtZSogZnJhbWUgPSBsb2FkZXJQcm90ZWN0
b3ItPmZyYW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBkMzJiYWRm
ZjJkMTkxYzY4NDFkYmJjM2EwYjAxN2I4OGRlYzkyZGYyLi45MDcxZWVmZGVjZjhjYWFhNDdkYzQ4
NTFkNTkwYjkxOGNmMjcxYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKQEAgLTg3NywxNiArODc3LDE2IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92
ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlc0ltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
CiAgICAgfQogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RG
cm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxXZWJD
b3JlOjpDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3REYXRhLCBTZXNzaW9u
SUQgc2Vzc2lvbklEKQordm9pZCBNZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0
RnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NPd25QdHI8V2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSwgU2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KFJl
c291cmNlUmVxdWVzdDo6YWRvcHQocmVxdWVzdERhdGEpKTsKLSAgICBNZW1vcnlDYWNoZTo6cmVt
b3ZlUmVxdWVzdEZyb21DYWNoZUltcGwoY29udGV4dCwgKnJlcXVlc3QsIHNlc3Npb25JRCk7Cisg
ICAgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKCZjb250ZXh0LCAqcmVx
dWVzdCwgc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRSZW1v
dmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc093blB0cjxXZWJDb3JlOjpDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJl
cXVlc3REYXRhKQordm9pZCBNZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJv
bVNlc3Npb25DYWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc093blB0
cjxXZWJDb3JlOjpDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3REYXRhKQog
ewogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Ojph
ZG9wdChyZXF1ZXN0RGF0YSkpOwotICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNl
c3Npb25DYWNoZXMoY29udGV4dCwgKnJlcXVlc3QpOworICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoJmNvbnRleHQsICpyZXF1ZXN0KTsKIH0KIAogdm9pZCBN
ZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYzo6YWRkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGI2YmM4YTE5
YjRjMzNmOThiOTA1ZDIwNWNlMDM3MjhhMzZjNDFkNmYuLmJiYzM0ZWJiODcwYjJhMzE4NDYyNjUz
Nzg2MDhjYjY0YTU2YWRiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCkBAIC0yMjgsOCArMjI4LDggQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNv
dXJjZU1hcCYpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQp
OwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlc0ltcGwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHN0YXRp
YyB2b2lkIGNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+LCBTZXNz
aW9uSUQpOwotICAgIHN0YXRpYyB2b2lkIGNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21TZXNz
aW9uQ2FjaGVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPENyb3NzVGhyZWFk
UmVzb3VyY2VSZXF1ZXN0RGF0YT4pOworICAgIHN0YXRpYyB2b2lkIGNyb3NzVGhyZWFkUmVtb3Zl
UmVxdWVzdEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+LCBTZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lk
IGNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VNYXAmIGdldFNlc3Npb25NYXAoU2Vzc2lvbklEKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmNwcAppbmRleCAyMTUxYzcwZTA0ZTA3MmU0N2U5NjJjOThkMjIxM2UyOTVjOGM2MzYw
Li4xZDA5OGQ4NDdkZjk5ZGM3YWFhMTYxODFlYjI5NGMyYmIyMjNlYjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcApAQCAtMTg1LDggKzE4NSw4IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwKICAgICBTdHJp
bmcgc291cmNlVVJMQ29weSA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKTsKIAogICAgIGZvciAo
YXV0byYgZG9jdW1lbnQgOiBtX3dvcmtlckRvY3VtZW50cykKLSAgICAgICAgZG9jdW1lbnQtPnBv
c3RUYXNrKFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVwb3J0RXhjZXB0aW9uKGVycm9yTWVzc2FnZUNvcHksIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMQ29weSwgbnVsbHB0cik7CisgICAgICAgIGRvY3VtZW50
LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgICAgIGNvbnRleHQucmVwb3J0RXhjZXB0aW9uKGVycm9yTWVzc2FnZUNvcHksIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMQ29weSwgbnVsbHB0cik7CiAgICAgICAgIH0pOwog
fQogCkBAIC0xOTcsOCArMTk3LDggQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE0KICAgICBTdHJp
bmcgc291cmNlVVJMQ29weSA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKTsKIAogICAgIGZvciAo
YXV0byYgZG9jdW1lbnQgOiBtX3dvcmtlckRvY3VtZW50cykKLSAgICAgICAgZG9jdW1lbnQtPnBv
c3RUYXNrKFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICAg
ICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZUNvcHks
IHNvdXJjZVVSTENvcHksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIGRvY3Vt
ZW50LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2Fn
ZUNvcHksIHNvdXJjZVVSTENvcHksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAg
IH0pOwogfQogCkBAIC0yNTUsMTEgKzI1NSwxMSBAQCB2b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpj
bG9zZSgpCiBjbGFzcyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICBTaGFyZWRXb3JrZXJDb25uZWN0VGFz
ayhNZXNzYWdlUG9ydENoYW5uZWwqIGNoYW5uZWwpCi0gICAgICAgIDogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUo
KmNvbnRleHQpOworICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soWz1dIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBSZWZQdHI8TWVz
c2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKGNvbnRleHQpOwogICAgICAgICAg
ICAgcG9ydC0+ZW50YW5nbGUoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4oY2hh
bm5lbCkpOwotICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29u
dGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIFdvcmtlckdsb2JhbFNj
b3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCk7Cisg
ICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2Vy
R2xvYmFsU2NvcGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KTsKICAgICAgICAgICAg
IC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBldmVudCBsb29wLCB0aGlzIHNob3Vs
ZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3NpbmcuCiAgICAgICAgICAgICBBU1NFUlQo
IXdvcmtlckdsb2JhbFNjb3BlLT5pc0Nsb3NpbmcoKSk7CiAgICAgICAgICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTih3b3JrZXJHbG9iYWxTY29wZS0+aXNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUu
Y3BwCmluZGV4IDQ2YTBlMzBmMGU4MmRjYzQ2NmViNDJkOGM4NTIzZjdkN2M4NDU4ZDMuLmRlODk1
ZjU0Nzk2YzJiN2FmMDNjODEyYTY5OGNmODhjZTAzNDMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBib29sIFdvcmtl
ckV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogICAg
IEV2ZW50RGlzcGF0Y2hlciogZXZlbnREaXNwYXRjaGVyUHRyID0gbmV3IEV2ZW50RGlzcGF0Y2hl
cihldmVudC5nZXQoKSwgKnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFkZChldmVu
dCwgZXZlbnREaXNwYXRjaGVyUHRyKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9z
dFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeworICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5wb3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudERpc3BhdGNoZXI+IGV2ZW50RGlzcGF0Y2hlcihldmVu
dERpc3BhdGNoZXJQdHIpOwogICAgICAgICBldmVudERpc3BhdGNoZXItPmRpc3BhdGNoKCk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IGFiYmM1NTZlYzhlZDM1MTJkMGE3YjZkZWRhNjYzZTM0NjdmZjkwOWUuLjFjNjEwY2E1MTY2
ODExMjcxZjk3YTc3OWZkYzNkOWRmZDM3YWYwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xMzIsOSArMTMyLDkgQEAgdm9pZCBXb3JrZXJH
bG9iYWxTY29wZTo6Y2xvc2UoKQogICAgIC8vIEFmdGVyIG1fY2xvc2luZyBpcyBzZXQsIGFsbCB0
aGUgdGFza3MgaW4gdGhlIHF1ZXVlIGNvbnRpbnVlIHRvIGJlIGZldGNoZWQgYnV0IG9ubHkKICAg
ICAvLyB0YXNrcyB3aXRoIGlzQ2xlYW51cFRhc2soKT09dHJ1ZSB3aWxsIGJlIGV4ZWN1dGVkLgog
ICAgIG1fY2xvc2luZyA9IHRydWU7Ci0gICAgcG9zdFRhc2soeyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtl
ckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KTsKKyAgICBwb3N0VGFz
ayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgIFdv
cmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUo
JmNvbnRleHQpOwogICAgICAgICAvLyBOb3RpZnkgcGFyZW50IHRoYXQgdGhpcyBjb250ZXh0IGlz
IGNsb3NlZC4gUGFyZW50IGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIFdvcmtlclRocmVhZDo6
c3RvcCgpLgogICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkud29ya2VyUmVwb3J0
aW5nUHJveHkoKS53b3JrZXJHbG9iYWxTY29wZUNsb3NlZCgpOwogICAgIH0gfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDA3NGY3
YzAyNjIwMTg1MDljYzE2MDlmMGJjZjIwNDdhZjgxZjAzY2UuLmJjYzU4NDRjMDNhZGY5Nzg5YTI2
ZmJmNDEyYzUxNzQ0MmMyNTVlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC05NiwxMiArOTYsMTIgQEAgdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU3QKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJP
YmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCiB7CiAgICAgTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkqIGNoYW5uZWxzUHRyID0gY2hhbm5lbHMucmVsZWFzZSgpOwotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgV29ya2Vy
KiB3b3JrZXJPYmplY3QgPSB0aGlzLT53b3JrZXJPYmplY3QoKTsKICAgICAgICAgaWYgKCF3b3Jr
ZXJPYmplY3QgfHwgYXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQ
b3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+KGNoYW5uZWxzUHRyKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNz
YWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQs
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4oY2hhbm5lbHNQdHIpKTsK
ICAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KHN0ZDo6bW92ZShwb3J0cyksIG1lc3NhZ2UpKTsKICAgICB9KTsKIH0KQEAgLTExMiwxMiArMTEy
LDEyIEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9i
YWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTCiAgICAgICAgIHJldHVybjsKIAogICAgIE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBjaGFubmVsc1B0ciA9IGNoYW5uZWxzLnJlbGVhc2UoKTsK
LSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soWz1dIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRDb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAg
ICAgIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xl
UG9ydHMoKnNjcmlwdENvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4oY2hhbm5lbHNQdHIpKTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShzdGQ6Om1vdmUocG9ydHMpLCBtZXNzYWdlKSk7Ci0gICAgICAgIGNv
bnRleHQtPnRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0KGNvbnRleHQtPmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRDb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNj
cmlwdENvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUmIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSY+KHNjcmlwdENvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250
ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KGNoYW5uZWxzUHRy
KSk7CisgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShz
dGQ6Om1vdmUocG9ydHMpLCBtZXNzYWdlKSk7CisgICAgICAgIGNvbnRleHQudGhyZWFkKCkud29y
a2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29udGV4dC5o
YXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7CiAKICAgICBpZiAobV93b3JrZXJUaHJlYWQp
IHsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhj
ZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZwogewogICAgIFN0
cmluZyBlcnJvck1lc3NhZ2VDb3B5ID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpOwogICAg
IFN0cmluZyBzb3VyY2VVUkxDb3B5ID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpOwotICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhb
PV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgV29ya2VyKiB3
b3JrZXJPYmplY3QgPSB0aGlzLT53b3JrZXJPYmplY3QoKTsKICAgICAgICAgaWYgKCF3b3JrZXJP
YmplY3QpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWcKIAogICAgICAgICBib29sIGVycm9ySGFuZGxlZCA9ICF3b3JrZXJPYmpl
Y3QtPmRpc3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZUNvcHksIHNv
dXJjZVVSTENvcHksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOwogICAgICAgICBpZiAoIWVy
cm9ySGFuZGxlZCkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbihlcnJvck1l
c3NhZ2VDb3B5LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTENvcHksIDApOwor
ICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlQ29weSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkxDb3B5LCAwKTsKICAgICB9KTsKIH0KIApA
QCAtMTY2LDEwICsxNjYsMTAgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UKIHsKICAgICBTdHJp
bmcgbWVzc2FnZUNvcHkgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpOwogICAgIFN0cmluZyBzb3Vy
Y2VVUkxDb3B5ID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpOwotICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgaWYgKGFza2VkVG9UZXJtaW5hdGUo
KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZUNvcHksIHNvdXJjZVVSTENvcHksIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CisgICAgICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZUNvcHksIHNvdXJjZVVSTENvcHksIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcik7CiAgICAgfSk7CiB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2Vy
VGhyZWFkPgogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVk
KCkKIHsKICAgICBtX3dvcmtlck9iamVjdCA9IDA7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7CisgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CiAgICAgICAgIG1fbWF5QmVEZXN0cm95ZWQgPSB0cnVlOwogICAgICAgICBpZiAo
bV93b3JrZXJUaHJlYWQpCiAgICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgp
OwpAQCAtMjExLDggKzIxMSw4IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Om5vdGlmeU5l
dHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogICAgIGlmICghbV93b3JrZXJUaHJlYWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29y
a2VyR2xvYmFsU2NvcGUoY29udGV4dCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09u
bGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIHRvV29y
a2VyR2xvYmFsU2NvcGUoJmNvbnRleHQpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNP
bmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICB9KTsKIH0KIApAQCAtMjIzLDggKzIyMyw4IEBAIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbm5lY3RUb0luc3BlY3RvcihXb3JrZXJHbG9iYWxT
Y29wZVByb3h5OjpQYWdlSW5zcGVjCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIW1fcGFn
ZUluc3BlY3Rvcik7CiAgICAgbV9wYWdlSW5zcGVjdG9yID0gcGFnZUluc3BlY3RvcjsKLSAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRl
eHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKCk7CisgICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW10gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29u
dGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKICAg
ICB9LCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKTsKIH0KIApAQCAtMjMz
LDggKzIzMyw4IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5z
cGVjdG9yKCkKICAgICBtX3BhZ2VJbnNwZWN0b3IgPSAwOwogICAgIGlmIChtX2Fza2VkVG9UZXJt
aW5hdGUpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAg
ICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAgfSwgV29ya2VyRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKQEAgLTI0Myw4ICsyNDMsOCBAQCB2b2lkIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1cm47CiAgICAg
U3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKTsKLSAgICBtX3dvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbbWVzc2FnZUNvcHldIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUo
Y29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9t
RnJvbnRlbmQobWVzc2FnZUNvcHkpOworICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFttZXNzYWdlQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCktPndvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZUNvcHkp
OwogICAgIH0sIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpOwogICAgIFdv
cmtlckRlYnVnZ2VyQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMo
bV93b3JrZXJUaHJlYWQuZ2V0KCkpOwogfQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgV29ya2Vy
TWVzc2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZCgpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIHdv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKICAgICB9KTsKICAgICAvLyBXaWxs
IGV4ZWN1dGUgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpIG9uIGNvbnRleHQn
cyB0aHJlYWQuCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKQogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
d29ya2VyR2xvYmFsU2NvcGVDbG9zZWQoKQogewogICAgIC8vIEV4ZWN1dGVzIHRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCkgb24gcGFyZW50IGNvbnRleHQncyB0aHJlYWQuCi0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNj
b3BlKCk7CiAgICAgfSk7CiB9CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQogdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewogICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbPV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIG1fcGFnZUluc3BlY3Rvci0+ZGlz
cGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihtZXNzYWdlQ29weSk7CiAgICAgfSk7CiB9CkBAIC0zMDMs
NyArMzAzLDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJ
bnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbPV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIHJlcG9ydFBlbmRp
bmdBY3Rpdml0eUludGVybmFsKHRydWUsIGhhc1BlbmRpbmdBY3Rpdml0eSk7CiAgICAgfSk7CiAg
ICAgLy8gV2lsbCBleGVjdXRlIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKCkgb24gY29u
dGV4dCdzIHRocmVhZC4KQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dAogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9v
bCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7CisgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKGZhbHNlLCBoYXNQZW5kaW5nQWN0
aXZpdHkpOwogICAgIH0pOwogICAgIC8vIFdpbGwgZXhlY3V0ZSByZXBvcnRQZW5kaW5nQWN0aXZp
dHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcAppbmRleCAxMDk5NGFkNzE3ZWI3Njg1MDJkOGE3MmFjODgwYmUwNGYz
ZDNmOTNlLi5kN2I3YTdlOTI4ZmM1ZTAwMTM1Mzc3M2M3NDk2MGVlMGRkNzkwMDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8V29ya2VyUnVuTG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbgogdm9pZCBXb3JrZXJSdW5Mb29wOjpUYXNrOjpwZXJmb3Jt
VGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5Mb29wLCBXb3JrZXJHbG9iYWxTY29wZSogY29u
dGV4dCkKIHsKICAgICBpZiAoKCFjb250ZXh0LT5pc0Nsb3NpbmcoKSAmJiAhcnVuTG9vcC50ZXJt
aW5hdGVkKCkpIHx8IG1fdGFzay5pc0NsZWFudXBUYXNrKCkpCi0gICAgICAgIG1fdGFzay5wZXJm
b3JtVGFzayhjb250ZXh0KTsKKyAgICAgICAgbV90YXNrLnBlcmZvcm1UYXNrKCpjb250ZXh0KTsK
IH0KIAogV29ya2VyUnVuTG9vcDo6VGFzazo6VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBmYTQxZjQwY2UzMDg0Yzk0Njg3MzFhY2Q2ZmFm
NjgzOGEyNWVlYWNhLi5jNmQ5ZmY0Y2NjNDY4YjYzYjY4MDNlYWIwOGZhNmZkYzdhNjA3YzgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0y
OSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKIAotI2luY2x1
ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBiNjAwNzcw
ZTAyNmRlMWVlMDBmZDBhNDFiNTYwMzI5NjQxZTJiOGEwLi4wM2EyZTczNDE4YjJiYjdjZWRiMzVi
MTFiOGQ5NzdmNzY4YzY0NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwCkBAIC0yMTMsOCArMjEzLDggQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlu
dGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQobV93b3JrZXJHbG9iYWxTY29wZS5nZXQoKSk7
CiAjZW5kaWYKLSAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHsgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ICkgewotICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtl
ckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KTsKKyAgICAgICAgbV9y
dW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
azo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0ICkgewor
ICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3Jr
ZXJHbG9iYWxTY29wZSgmY29udGV4dCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAg
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRhYmFzZXMgYXMgcGFydCBv
ZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwpAQCAtMjM4LDggKzIzOCw4IEBAIHZvaWQg
V29ya2VyVGhyZWFkOjpzdG9wKCkKIAogICAgICAgICAgICAgLy8gU3RpY2sgYSBzaHV0ZG93biBj
b21tYW5kIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLCBzbyB0aGF0IHdlIGRlYWwKICAgICAgICAg
ICAgIC8vIHdpdGggYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHRoZSBkYXRhYmFzZXMgcG9zdCBmaXJz
dC4KLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0VGFzayh7IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkgewotICAgICAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJH
bG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCk7CisgICAgICAgICAgICB3
b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soeyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
OjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dv
cmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KTsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBz
YWZlIHRvIGNhbGwgY2xlYXJTY3JpcHQgdW50aWwgYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHBvc3Rl
ZCBieSBmdW5jdGlvbnMgaW5pdGlhdGVkIGJ5IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNr
IGhhdmUgY29tcGxldGVkLgogICAgICAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5jbGVh
clNjcmlwdCgpOwogICAgICAgICAgICAgfSB9KTsKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFdv
cmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayh0aHJlYWRTZXRNdXRleCgpKTsKIAog
ICAgIGZvciAoYXV0byogd29ya2VyVGhyZWFkIDogd29ya2VyVGhyZWFkcygpKQotICAgICAgICB3
b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIHsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW10gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeSgpOwogICAgICAgICB9KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>