<?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>166760</bug_id>
          
          <creation_ts>2017-01-06 07:35:31 -0800</creation_ts>
          <short_desc>[Win] Some tests are flaky because certain DLLs are writing to stdout.</short_desc>
          <delta_ts>2018-08-16 11:11:43 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=188662</see_also>
          <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="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1264415</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-01-06 07:35:31 -0800</bug_when>
    <thetext>Some tests on Windows are flaky because certain DLLs are writing to stdout, giving incorrect test results. We can work around that by duplicating and redirecting stdout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264417</commentid>
    <comment_count>1</comment_count>
      <attachid>298200</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-01-06 07:46:45 -0800</bug_when>
    <thetext>Created attachment 298200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264500</commentid>
    <comment_count>2</comment_count>
      <attachid>298200</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-06 13:55:10 -0800</bug_when>
    <thetext>Comment on attachment 298200
Patch

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

&gt; Tools/ChangeLog:3
&gt; +        [Win] Some tests are flaky.

Not a very good bug title!

&gt; Tools/DumpRenderTree/PixelDumpSupport.cpp:64
&gt; +#if PLATFORM(WIN)
&gt; +    fprintf(fileStdout, &quot;\nActualHash: %s\n&quot;, actualHash); // FIXME: No need for the leading newline.
&gt; +#else
&gt;      printf(&quot;\nActualHash: %s\n&quot;, actualHash); // FIXME: No need for the leading newline.
&gt; +#endif

Can we find a way to do this without an #if everywhere? I suggest we always have a variable like fileStdout, but just initialize it to point to stdout on non-Windows platforms. Maybe give it a different name.

&gt; Tools/DumpRenderTree/PixelDumpSupport.cpp:129
&gt;      printf(&quot;Content-Type: %s\n&quot;, &quot;image/png&quot;);

The use of %s here is peculiar and also sort of pointless. We should fix that.

&gt; Tools/DumpRenderTree/win/DumpRenderTreeWin.h:46
&gt; +extern FILE* fileStdout;

I think that “file stdout” is a strange name for this. Instead can we just name it something that means &quot;write test output here&quot; and doesn’t necessarily mention &quot;stdout&quot; at all? After all, the call sites don’t really care that it’s stdout, they just care that it’s the correct place to write test output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264919</commentid>
    <comment_count>3</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-01-09 02:37:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 298200 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298200&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:3
&gt; &gt; +        [Win] Some tests are flaky.
&gt; 
&gt; Not a very good bug title!
&gt; 
&gt; &gt; Tools/DumpRenderTree/PixelDumpSupport.cpp:64
&gt; &gt; +#if PLATFORM(WIN)
&gt; &gt; +    fprintf(fileStdout, &quot;\nActualHash: %s\n&quot;, actualHash); // FIXME: No need for the leading newline.
&gt; &gt; +#else
&gt; &gt;      printf(&quot;\nActualHash: %s\n&quot;, actualHash); // FIXME: No need for the leading newline.
&gt; &gt; +#endif
&gt; 
&gt; Can we find a way to do this without an #if everywhere? I suggest we always
&gt; have a variable like fileStdout, but just initialize it to point to stdout
&gt; on non-Windows platforms. Maybe give it a different name.
&gt; 
&gt; &gt; Tools/DumpRenderTree/PixelDumpSupport.cpp:129
&gt; &gt;      printf(&quot;Content-Type: %s\n&quot;, &quot;image/png&quot;);
&gt; 
&gt; The use of %s here is peculiar and also sort of pointless. We should fix
&gt; that.
&gt; 
&gt; &gt; Tools/DumpRenderTree/win/DumpRenderTreeWin.h:46
&gt; &gt; +extern FILE* fileStdout;
&gt; 
&gt; I think that “file stdout” is a strange name for this. Instead can we just
&gt; name it something that means &quot;write test output here&quot; and doesn’t
&gt; necessarily mention &quot;stdout&quot; at all? After all, the call sites don’t really
&gt; care that it’s stdout, they just care that it’s the correct place to write
&gt; test output.

Thanks for reviewing! I will update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264921</commentid>
    <comment_count>4</comment_count>
      <attachid>298338</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-01-09 02:56:07 -0800</bug_when>
    <thetext>Created attachment 298338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264939</commentid>
    <comment_count>5</comment_count>
      <attachid>298338</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-01-09 04:37:54 -0800</bug_when>
    <thetext>Comment on attachment 298338
Patch

No need to review again, just uploaded to check that the revised patch passes tests :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264942</commentid>
    <comment_count>6</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-01-09 05:00:34 -0800</bug_when>
    <thetext>Committed r210503: &lt;http://trac.webkit.org/changeset/210503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450730</commentid>
    <comment_count>7</comment_count>
      <attachid>298338</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-16 10:30:05 -0700</bug_when>
    <thetext>Comment on attachment 298338
Patch

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

Per, question about this old bug.

&gt; Tools/DumpRenderTree/win/DumpRenderTree.cpp:1117
&gt; +    // Check that test has not already run

What is the good to check duplicated execution? It happens always when --iterations is more than one. Also I cannot find similar check on other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450732</commentid>
    <comment_count>8</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-08-16 10:37:08 -0700</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #7)
&gt; Comment on attachment 298338 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298338&amp;action=review
&gt; 
&gt; Per, question about this old bug.
&gt; 
&gt; &gt; Tools/DumpRenderTree/win/DumpRenderTree.cpp:1117
&gt; &gt; +    // Check that test has not already run
&gt; 
&gt; What is the good to check duplicated execution? It happens always when
&gt; --iterations is more than one. Also I cannot find similar check on other
&gt; ports.

I think this was used to track down an issue where the same tests appeared to be run multiple times. This turned out to not be the case, so I think this code can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450748</commentid>
    <comment_count>9</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-16 11:11:43 -0700</bug_when>
    <thetext>Thanks! https://bugs.webkit.org/show_bug.cgi?id=188662</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298200</attachid>
            <date>2017-01-06 07:46:45 -0800</date>
            <delta_ts>2017-01-09 02:56:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166760-20170106074518.patch</filename>
            <type>text/plain</type>
            <size>56624</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMDQ0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExMiBAQAorMjAxNy0wMS0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dpbl0gU29tZSB0ZXN0cyBhcmUgZmxha3kuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3NjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIHRlc3RzIGFyZSBmbGFreSBi
ZWNhdXNlIGNlcnRhaW4gRExMcyBhcmUgd3JpdGluZyB0byBzdGRvdXQsIGdpdmluZyBpbmNvcnJl
Y3QgdGVzdCByZXN1bHRzLgorICAgICAgICBXZSBjYW4gd29yayBhcm91bmQgdGhhdCBieSBkdXBs
aWNhdGluZyBhbmQgcmVkaXJlY3Rpbmcgc3Rkb3V0LgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHA6CisgICAgICAgIChkdW1wV2ViVmlld0FzUGl4ZWxzQW5k
Q29tcGFyZVdpdGhFeHBlY3RlZCk6CisgICAgICAgIChwcmludFBORyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAg
KGxvZ0V2ZW50UHJvYyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BO
b3RpZmljYXRpb25QcmVzZW50ZXIuY3BwOgorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNhdGlv
blByZXNlbnRlcjo6c2hvd0Rlc2t0b3BOb3RpZmljYXRpb24pOgorICAgICAgICAoRFJURGVza3Rv
cE5vdGlmaWNhdGlvblByZXNlbnRlcjo6Y2FuY2VsRGVza3RvcE5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9u
UGVybWlzc2lvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKGR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKGR1bXBI
aXN0b3J5SXRlbSk6CisgICAgICAgIChkdW1wQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKGR1
bXApOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWVXaW4uaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vRWRpdGluZ0RlbGVnYXRlLmNwcDoKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6
c2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZSk6CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6
OnNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlKToKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6
c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2Vy
dFRleHQpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjpzaG91bGREZWxldGVET01SYW5nZSk6
CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6OnNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2Up
OgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAg
KEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQ2hhbmdlVHlwaW5nU3R5bGUpOgorICAgICAgICAoRWRp
dGluZ0RlbGVnYXRlOjpkb1BsYXRmb3JtQ29tbWFuZCk6CisgICAgICAgIChFZGl0aW5nRGVsZWdh
dGU6OndlYlZpZXdEaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjp3
ZWJWaWV3RGlkQ2hhbmdlKToKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZEVu
ZEVkaXRpbmcpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQ2hhbmdlVHlw
aW5nU3R5bGUpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSk6CisgICAgICAgIChG
cmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcik6CisgICAg
ICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAg
KEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoRnJhbWVMb2Fk
RGVsZWdhdGU6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChGcmFtZUxvYWREZWxl
Z2F0ZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3IpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCk6CisgICAgICAgIChGcmFtZUxvYWREZWxl
Z2F0ZTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChGcmFtZUxv
YWREZWxlZ2F0ZTo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKToKKyAgICAgICAgKEZyYW1l
TG9hZERlbGVnYXRlOjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6CisgICAgICAgIChG
cmFtZUxvYWREZWxlZ2F0ZTo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpOgorICAgICAg
ICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAg
ICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChG
cmFtZUxvYWREZWxlZ2F0ZTo6d2ViVmlld1Byb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuY3BwOgorICAgICAg
ICAoSGlzdG9yeURlbGVnYXRlOjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAg
ICAgIChIaXN0b3J5RGVsZWdhdGU6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkwpOgor
ICAgICAgICAoSGlzdG9yeURlbGVnYXRlOjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RGcm9tVVJM
KToKKyAgICAgICAgKEhpc3RvcnlEZWxlZ2F0ZTo6dXBkYXRlSGlzdG9yeVRpdGxlKToKKyAgICAg
ICAgKEhpc3RvcnlEZWxlZ2F0ZTo6cG9wdWxhdGVWaXNpdGVkTGlua3NGb3JXZWJWaWV3KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdhdGUuY3BwOgorICAgICAgICAo
UG9saWN5RGVsZWdhdGU6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAg
ICAoUG9saWN5RGVsZWdhdGU6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5V2l0aEVycm9yKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChS
ZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
KyAgICAgICAgKFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJj
ZSk6CisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbExvYWRpbmdXaXRoRXJy
b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OmFkZERpc2FsbG93ZWRVUkwpOgorICAgICAgICAoVGVzdFJ1bm5l
cjo6b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpjbG9z
ZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y29weURl
Y29kZWRIb3N0TmFtZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpjb3B5RW5jb2RlZEhvc3ROYW1l
KToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RzKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmlzR2VvbG9jYXRpb25Qcm92aWRl
ckFjdGl2ZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgIChUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YXV0aGVu
dGljYXRlU2Vzc2lvbik6CisgICAgICAgIChUZXN0UnVubmVyOjphZGRDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmdyYW50
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpkZW55V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpyZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChUZXN0UnVubmVyOjpzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmltYWdlQ291bnRJ
bkdlbmVyYWxQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdp
dGhNZXNzYWdlKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0VGV4dElu
cHV0UGFuZWxXaXRoUHJvbXB0KToKKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OndlYlZpZXdB
ZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OmV4Y2VlZGVkRGF0YWJh
c2VRdW90YSk6CisgICAgICAgIChVSURlbGVnYXRlOjpzZXRTdGF0dXNUZXh0KToKKyAgICAgICAg
KFVJRGVsZWdhdGU6OmRpZFByZXNzTWlzc2luZ1BsdWdpbkJ1dHRvbik6CisKIDIwMTctMDEtMDYg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Fybmlu
ZyBhYm91dCB1bmNvbm5lY3RhYmxlIG91dGxldHMgd2hlbiBvcGVuaW5nIGEgTWluaUJyb3dzZXIg
d2luZG93CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNwcAko
cmV2aXNpb24gMjEwNDM0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9y
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE0ICs1NywyMiBAQCB2b2lkIGR1bXBXZWJWaWV3
QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4CiAgICAgLy8gQ29tcHV0ZSB0aGUgaGFzaCBvZiB0aGUg
Yml0bWFwIGNvbnRleHQgcGl4ZWxzCiAgICAgY2hhciBhY3R1YWxIYXNoWzMzXTsKICAgICBjb21w
dXRlTUQ1SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoY29udGV4dC5nZXQoKSwgYWN0dWFsSGFz
aCk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIlxuQWN0dWFs
SGFzaDogJXNcbiIsIGFjdHVhbEhhc2gpOyAvLyBGSVhNRTogTm8gbmVlZCBmb3IgdGhlIGxlYWRp
bmcgbmV3bGluZS4KKyNlbHNlCiAgICAgcHJpbnRmKCJcbkFjdHVhbEhhc2g6ICVzXG4iLCBhY3R1
YWxIYXNoKTsgLy8gRklYTUU6IE5vIG5lZWQgZm9yIHRoZSBsZWFkaW5nIG5ld2xpbmUuCisjZW5k
aWYKIAogICAgIC8vIENoZWNrIHRoZSBjb21wdXRlZCBoYXNoIGFnYWluc3QgdGhlIGV4cGVjdGVk
IG9uZSBhbmQgZHVtcCBpbWFnZSBvbiBtaXNtYXRjaAogICAgIGJvb2wgZHVtcEltYWdlID0gdHJ1
ZTsKICAgICBpZiAoZXhwZWN0ZWRIYXNoLmxlbmd0aCgpID4gMCkgewogICAgICAgICBBU1NFUlQo
ZXhwZWN0ZWRIYXNoLmxlbmd0aCgpID09IDMyKTsKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAg
ICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiXG5FeHBlY3RlZEhhc2g6ICVzXG4iLCBleHBlY3RlZEhh
c2guY19zdHIoKSk7IC8vIEZJWE1FOiBObyBuZWVkIGZvciB0aGUgbGVhZGluZyBuZXdsaW5lLgor
I2Vsc2UKICAgICAgICAgcHJpbnRmKCJcbkV4cGVjdGVkSGFzaDogJXNcbiIsIGV4cGVjdGVkSGFz
aC5jX3N0cigpKTsgLy8gRklYTUU6IE5vIG5lZWQgZm9yIHRoZSBsZWFkaW5nIG5ld2xpbmUuCisj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIGlmIChleHBlY3RlZEhhc2ggPT0gYWN0dWFsSGFzaCkg
Ly8gRklYTUU6IGRvIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyZQogICAgICAgICAgICAgZHVtcElt
YWdlID0gZmFsc2U7CkBAIC0xMTQsMjAgKzEyMiwzNCBAQCB2b2lkIHByaW50UE5HKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsCiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGJ5dGVzVG9BZGQ7
CiAgICAgY29udmVydENoZWNrc3VtVG9QTkdDb21tZW50KGNoZWNrc3VtLCBieXRlc1RvQWRkKTsK
IAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJDb250ZW50LVR5
cGU6ICVzXG4iLCAiaW1hZ2UvcG5nIik7CisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiQ29udGVu
dC1MZW5ndGg6ICVsdVxuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oZGF0YUxlbmd0aCAr
IGJ5dGVzVG9BZGQuc2l6ZSgpKSk7CisjZWxzZQogICAgIHByaW50ZigiQ29udGVudC1UeXBlOiAl
c1xuIiwgImltYWdlL3BuZyIpOwogICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVsdVxuIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oZGF0YUxlbmd0aCArIGJ5dGVzVG9BZGQuc2l6ZSgp
KSk7CisjZW5kaWYKIAogICAgIHNpemVfdCBpbnNlcnRPZmZzZXQgPSBvZmZzZXRBZnRlcklIRFJD
aHVuayhkYXRhLCBkYXRhTGVuZ3RoKTsKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBmd3JpdGUo
ZGF0YSwgMSwgaW5zZXJ0T2Zmc2V0LCBmaWxlU3Rkb3V0KTsKKyAgICBmd3JpdGUoYnl0ZXNUb0Fk
ZC5kYXRhKCksIDEsIGJ5dGVzVG9BZGQuc2l6ZSgpLCBmaWxlU3Rkb3V0KTsKKyNlbHNlCiAgICAg
ZndyaXRlKGRhdGEsIDEsIGluc2VydE9mZnNldCwgc3Rkb3V0KTsKICAgICBmd3JpdGUoYnl0ZXNU
b0FkZC5kYXRhKCksIDEsIGJ5dGVzVG9BZGQuc2l6ZSgpLCBzdGRvdXQpOworI2VuZGlmCiAKICAg
ICBjb25zdCBzaXplX3QgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayA9IDEgPDwgMTU7CiAgICAgZGF0
YSArPSBpbnNlcnRPZmZzZXQ7CiAgICAgc2l6ZV90IGRhdGFSZW1haW5pbmdUb1dyaXRlID0gZGF0
YUxlbmd0aCAtIGluc2VydE9mZnNldDsKICAgICB3aGlsZSAoZGF0YVJlbWFpbmluZ1RvV3JpdGUp
IHsKICAgICAgICAgc2l6ZV90IGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rID0gc3RkOjptaW4oZGF0
YVJlbWFpbmluZ1RvV3JpdGUsIGJ5dGVzVG9Xcml0ZUluT25lQ2h1bmspOworI2lmIFBMQVRGT1JN
KFdJTikKKyAgICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IGZ3cml0ZShkYXRhLCAxLCBieXRl
c1RvV3JpdGVJblRoaXNDaHVuaywgZmlsZVN0ZG91dCk7CisjZWxzZQogICAgICAgICBzaXplX3Qg
Ynl0ZXNXcml0dGVuID0gZndyaXRlKGRhdGEsIDEsIGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rLCBz
dGRvdXQpOworI2VuZGlmCiAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dyaXRl
SW5UaGlzQ2h1bmspCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGF0YVJlbWFpbmluZ1Rv
V3JpdGUgLT0gYnl0ZXNXcml0dGVuOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiAyMTA0
MzQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTEgKzE5MiwxMSBAQCBzdGF0aWMgdm9pZCBD
QUxMQkFDSyBsb2dFdmVudFByb2MoSFdJTkVWCiAKICAgICBzd2l0Y2ggKGV2ZW50KSB7CiAgICAg
ICAgIGNhc2UgRVZFTlRfT0JKRUNUX0ZPQ1VTOgotICAgICAgICAgICAgcHJpbnRmKCJSZWNlaXZl
ZCBmb2N1cyBldmVudCBmb3Igb2JqZWN0ICclUycuXG4iLCBuYW1lLmNfc3RyKCkpOworICAgICAg
ICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiUmVjZWl2ZWQgZm9jdXMgZXZlbnQgZm9yIG9iamVj
dCAnJVMnLlxuIiwgbmFtZS5jX3N0cigpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgRVZFTlRfT0JKRUNUX1NFTEVDVElPTjoKLSAgICAgICAgICAgIHByaW50ZigiUmVjZWl2
ZWQgc2VsZWN0aW9uIGV2ZW50IGZvciBvYmplY3QgJyVTJy5cbiIsIG5hbWUuY19zdHIoKSk7Cisg
ICAgICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJSZWNlaXZlZCBzZWxlY3Rpb24gZXZlbnQg
Zm9yIG9iamVjdCAnJVMnLlxuIiwgbmFtZS5jX3N0cigpKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgRVZFTlRfT0JKRUNUX1ZBTFVFQ0hBTkdFOiB7CkBAIC0yMDUsMTYgKzIw
NSwxNiBAQCBzdGF0aWMgdm9pZCBDQUxMQkFDSyBsb2dFdmVudFByb2MoSFdJTkVWCiAgICAgICAg
ICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAgICAgICAgICAgICB3c3RyaW5nIHZhbHVlKHZh
bHVlQlNUUiwgdmFsdWVCU1RSLmxlbmd0aCgpKTsKIAotICAgICAgICAgICAgcHJpbnRmKCJSZWNl
aXZlZCB2YWx1ZSBjaGFuZ2UgZXZlbnQgZm9yIG9iamVjdCAnJVMnLCB2YWx1ZSAnJVMnLlxuIiwg
bmFtZS5jX3N0cigpLCB2YWx1ZS5jX3N0cigpKTsKKyAgICAgICAgICAgIGZwcmludGYoZmlsZVN0
ZG91dCwgIlJlY2VpdmVkIHZhbHVlIGNoYW5nZSBldmVudCBmb3Igb2JqZWN0ICclUycsIHZhbHVl
ICclUycuXG4iLCBuYW1lLmNfc3RyKCksIHZhbHVlLmNfc3RyKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEVWRU5UX1NZU1RFTV9TQ1JPTExJTkdTVEFS
VDoKLSAgICAgICAgICAgIHByaW50ZigiUmVjZWl2ZWQgc2Nyb2xsaW5nIHN0YXJ0IGV2ZW50IGZv
ciBvYmplY3QgJyVTJy5cbiIsIG5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICBmcHJpbnRmKGZp
bGVTdGRvdXQsICJSZWNlaXZlZCBzY3JvbGxpbmcgc3RhcnQgZXZlbnQgZm9yIG9iamVjdCAnJVMn
LlxuIiwgbmFtZS5jX3N0cigpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBwcmludGYoIlJlY2VpdmVkIHVua25vd24gZXZlbnQgZm9yIG9iamVj
dCAnJVMnLlxuIiwgbmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIGZwcmludGYoZmlsZVN0ZG91
dCwgIlJlY2VpdmVkIHVua25vd24gZXZlbnQgZm9yIG9iamVjdCAnJVMnLlxuIiwgbmFtZS5jX3N0
cigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNl
bnRlci5jcHAJKHJldmlzaW9uIDIxMDQzNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
UlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAs
MTIgKzgwLDEyIEBAIEhSRVNVTFQgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjoKIAog
ICAgIGlmIChTVUNDRUVERUQobm90aWZpY2F0aW9uLT5pc0hUTUwoJmh0bWwpKSAmJiBodG1sKSB7
CiAgICAgICAgIG5vdGlmaWNhdGlvbi0+Y29udGVudHNVUkwoJnVybC5HZXRCU1RSKCkpOyAgICAK
LSAgICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTjogY29udGVudHMgYXQgJVNcbiIs
IHN0YXRpY19jYXN0PHdjaGFyX3QqPih1cmwpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0
LCAiREVTS1RPUCBOT1RJRklDQVRJT046IGNvbnRlbnRzIGF0ICVTXG4iLCBzdGF0aWNfY2FzdDx3
Y2hhcl90Kj4odXJsKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbm90aWZpY2F0aW9uLT5pY29u
VVJMKCZ1cmwuR2V0QlNUUigpKTsKICAgICAgICAgbm90aWZpY2F0aW9uLT50aXRsZSgmdGl0bGUu
R2V0QlNUUigpKTsKICAgICAgICAgbm90aWZpY2F0aW9uLT50ZXh0KCZ0ZXh0LkdldEJTVFIoKSk7
Ci0gICAgICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT046IGljb24gJVMsIHRpdGxlICVT
LCB0ZXh0ICVTXG4iLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4odXJsKSwgc3RhdGljX2Nhc3Q8d2No
YXJfdCo+KHRpdGxlKSwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHRleHQpKTsKKyAgICAgICAgZnBy
aW50ZihmaWxlU3Rkb3V0LCAiREVTS1RPUCBOT1RJRklDQVRJT046IGljb24gJVMsIHRpdGxlICVT
LCB0ZXh0ICVTXG4iLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4odXJsKSwgc3RhdGljX2Nhc3Q8d2No
YXJfdCo+KHRpdGxlKSwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHRleHQpKTsKICAgICB9CiAKICAg
ICAvLyBJbiB0aGlzIHN0dWIgaW1wbGVtZW50YXRpb24sIHRoZSBub3RpZmljYXRpb24gaXMgZGlz
cGxheWVkIGltbWVkaWF0ZWx5OwpAQCAtMTA1LDcgKzEwNSw3IEBAIEhSRVNVTFQgRFJURGVza3Rv
cE5vdGlmaWNhdGlvblByZXNlbnRlcjoKICAgICBlbHNlCiAgICAgICAgIG5vdGlmaWNhdGlvbi0+
dGl0bGUoJmlkZW50aWZpZXIuR2V0QlNUUigpKTsKIAotICAgIHByaW50ZigiREVTS1RPUCBOT1RJ
RklDQVRJT04gQ0xPU0VEOiAlU1xuIiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KGlkZW50aWZpZXIp
KTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJERVNLVE9QIE5PVElGSUNBVElPTiBDTE9TRUQ6
ICVTXG4iLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4oaWRlbnRpZmllcikpOwogICAgIG5vdGlmaWNh
dGlvbi0+bm90aWZ5Q2xvc2UoZmFsc2UpOwogCiAgICAgcmV0dXJuIFNfT0s7CkBAIC0xNDEsNiAr
MTQxLDYgQEAgSFJFU1VMVCBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOgogCiBIUkVT
VUxUIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKF9Jbl8gQlNUUiBvcmlnaW4pCiB7Ci0gICAgcHJpbnRmKCJERVNLVE9QIE5PVElG
SUNBVElPTiBQRVJNSVNTSU9OIFJFUVVFU1RFRDogJVNcbiIsIG9yaWdpbiA/IG9yaWdpbiA6IEwi
Iik7CisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiREVTS1RPUCBOT1RJRklDQVRJT04gUEVSTUlT
U0lPTiBSRVFVRVNURUQ6ICVTXG4iLCBvcmlnaW4gPyBvcmlnaW4gOiBMIiIpOwogICAgIHJldHVy
biBTX09LOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwCShyZXZpc2lvbiAyMTA0MzQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1
ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKIAorI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgorI2luY2x1ZGUgPFdlYktpdC9X
ZWJLaXRDT01BUEkuaD4KICNpbmNsdWRlIDxjb211dGlsLmg+CiAjaW5jbHVkZSA8Y3N0ZGlvPgog
I2luY2x1ZGUgPGNzdHJpbmc+CkBAIC01MiwxNSArNTYsMTMgQEAKICNpbmNsdWRlIDxzaGxvYmou
aD4KICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KKyNpbmNsdWRlIDx3
aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3aW5kb3dz
Lmg+Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Lmg+Ci0jaW5j
bHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
SFRUUENvb2tpZXNQcml2Lmg+CkBAIC0xMjEsNiArMTIzLDggQEAgUmVmUHRyPFRlc3RSdW5uZXI+
IGdUZXN0UnVubmVyOwogCiBVSU5UX1BUUiB3YWl0VG9EdW1wV2F0Y2hkb2cgPSAwOwogCitGSUxF
KiBmaWxlU3Rkb3V0ID0gbnVsbHB0cjsKKwogdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihDRlN0cmluZ1JlZiB1cmwpCiB7CiAgICAgcGVyc2lzdGVudFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24gPSB1cmw7CkBAIC00MDUsOSArNDA5LDkgQEAgdm9pZCBkdW1wRnJhbWVTY3Jv
bGxQb3NpdGlvbihJV2ViRnJhbWUqCiAgICAgICAgICAgICBfYnN0cl90IG5hbWU7CiAgICAgICAg
ICAgICBpZiAoRkFJTEVEKGZyYW1lLT5uYW1lKCZuYW1lLkdldEJTVFIoKSkpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHByaW50ZigiZnJhbWUgJyVTJyAiLCBzdGF0aWNf
Y2FzdDx3Y2hhcl90Kj4obmFtZSkpOworICAgICAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAi
ZnJhbWUgJyVTJyAiLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4obmFtZSkpOwogICAgICAgICB9Ci0g
ICAgICAgIHByaW50Zigic2Nyb2xsZWQgdG8gJS5mLCUuZlxuIiwgKGRvdWJsZSlzY3JvbGxQb3Np
dGlvbi5jeCwgKGRvdWJsZSlzY3JvbGxQb3NpdGlvbi5jeSk7CisgICAgICAgIGZwcmludGYoZmls
ZVN0ZG91dCwgInNjcm9sbGVkIHRvICUuZiwlLmZcbiIsIChkb3VibGUpc2Nyb2xsUG9zaXRpb24u
Y3gsIChkb3VibGUpc2Nyb2xsUG9zaXRpb24uY3kpOwogICAgIH0KIAogICAgIGlmICg6OmdUZXN0
UnVubmVyLT5kdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucygpKSB7CkBAIC01MDYsMTEgKzUx
MCwxMSBAQCBzdGF0aWMgdm9pZCBkdW1wSGlzdG9yeUl0ZW0oSVdlYkhpc3RvcnlJCiAKICAgICBp
bnQgc3RhcnQgPSAwOwogICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgIHByaW50ZigiY3Vyci0+
Iik7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgImN1cnItPiIpOwogICAgICAgICBzdGFy
dCA9IDY7CiAgICAgfQogICAgIGZvciAoaW50IGkgPSBzdGFydDsgaSA8IGluZGVudDsgaSsrKQot
ICAgICAgICBwdXRjaGFyKCcgJyk7CisgICAgICAgIGZwdXRjKCcgJywgZmlsZVN0ZG91dCk7CiAK
ICAgICBfYnN0cl90IHVybDsKICAgICBpZiAoRkFJTEVEKGl0ZW0tPlVSTFN0cmluZygmdXJsLkdl
dEJTVFIoKSkpKQpAQCAtNTMxLDcgKzUzNSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRl
bShJV2ViSGlzdG9yeUkKICAgICAgICAgdXJsID0gX2JzdHJfdChMIihmaWxlIHRlc3QpOiIpICsg
X2JzdHJfdChzdGFydCk7CiAgICAgfQogCi0gICAgcHJpbnRmKCIlUyIsIHN0YXRpY19jYXN0PHdj
aGFyX3QqPih1cmwpKTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICIlUyIsIHN0YXRpY19jYXN0
PHdjaGFyX3QqPih1cmwpKTsKIAogICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlPiBp
dGVtUHJpdmF0ZTsKICAgICBpZiAoRkFJTEVEKGl0ZW0tPlF1ZXJ5SW50ZXJmYWNlKCZpdGVtUHJp
dmF0ZSkpKQpAQCAtNTQxLDEzICs1NDUsMTMgQEAgc3RhdGljIHZvaWQgZHVtcEhpc3RvcnlJdGVt
KElXZWJIaXN0b3J5SQogICAgIGlmIChGQUlMRUQoaXRlbVByaXZhdGUtPnRhcmdldCgmdGFyZ2V0
LkdldEJTVFIoKSkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHRhcmdldC5sZW5ndGgoKSkK
LSAgICAgICAgcHJpbnRmKCIgKGluIGZyYW1lIFwiJVNcIikiLCBzdGF0aWNfY2FzdDx3Y2hhcl90
Kj4odGFyZ2V0KSk7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIiAoaW4gZnJhbWUgXCIl
U1wiKSIsIHN0YXRpY19jYXN0PHdjaGFyX3QqPih0YXJnZXQpKTsKICAgICBCT09MIGlzVGFyZ2V0
SXRlbSA9IEZBTFNFOwogICAgIGlmIChGQUlMRUQoaXRlbVByaXZhdGUtPmlzVGFyZ2V0SXRlbSgm
aXNUYXJnZXRJdGVtKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNUYXJnZXRJdGVtKQot
ICAgICAgICBwcmludGYoIiAgKipuYXYgdGFyZ2V0KioiKTsKLSAgICBwdXRjaGFyKCdcbicpOwor
ICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICIgICoqbmF2IHRhcmdldCoqIik7CisgICAgZnB1
dGMoJ1xuJywgZmlsZVN0ZG91dCk7CiAKICAgICB1bnNpZ25lZCBraWRzQ291bnQ7CiAgICAgU0FG
RUFSUkFZKiBhcnJQdHI7CkBAIC01OTUsNyArNTk5LDcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tG
b3J3YXJkTGlzdChJV2ViVmlldwogewogICAgIEFTU0VSVCh3ZWJWaWV3KTsKIAotICAgIHByaW50
ZigiXG49PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PVxuIik7
CisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiXG49PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQg
TGlzdCA9PT09PT09PT09PT09PVxuIik7CiAKICAgICBDT01QdHI8SVdlYkJhY2tGb3J3YXJkTGlz
dD4gYmZMaXN0OwogICAgIGlmIChGQUlMRUQod2ViVmlldy0+YmFja0ZvcndhcmRMaXN0KCZiZkxp
c3QpKSkKQEAgLTY1Miw3ICs2NTYsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0
KElXZWJWaWV3CiAgICAgICAgIGR1bXBIaXN0b3J5SXRlbShoaXN0b3J5SXRlbVRvUHJpbnQuZ2V0
KCksIDgsIGkgPT0gY3VycmVudEl0ZW1JbmRleCk7CiAgICAgfQogCi0gICAgcHJpbnRmKCI9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisgICAgZnBy
aW50ZihmaWxlU3Rkb3V0LCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT1cbiIpOwogfQogCiBzdGF0aWMgdm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yQWxs
V2luZG93cygpCkBAIC03MTEsNyArNzE1LDcgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgICAgIGlu
dCBidWZmZXJTaXplID0gOjpXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHJlc3VsdFN0
cmluZywgc3RyaW5nTGVuZ3RoLCAwLCAwLCAwLCAwKTsKICAgICAgICAgICAgIGNoYXIqIGJ1ZmZl
ciA9IChjaGFyKiltYWxsb2MoYnVmZmVyU2l6ZSArIDEpOwogICAgICAgICAgICAgOjpXaWRlQ2hh
clRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHJlc3VsdFN0cmluZywgc3RyaW5nTGVuZ3RoLCBidWZm
ZXIsIGJ1ZmZlclNpemUgKyAxLCAwLCAwKTsKLSAgICAgICAgICAgIGZ3cml0ZShidWZmZXIsIDEs
IGJ1ZmZlclNpemUsIHN0ZG91dCk7CisgICAgICAgICAgICBmd3JpdGUoYnVmZmVyLCAxLCBidWZm
ZXJTaXplLCBmaWxlU3Rkb3V0KTsKICAgICAgICAgICAgIGZyZWUoYnVmZmVyKTsKIAogICAgICAg
ICAgICAgaWYgKCE6OmdUZXN0UnVubmVyLT5kdW1wQXNUZXh0KCkgJiYgITo6Z1Rlc3RSdW5uZXIt
PmR1bXBET01Bc1dlYkFyY2hpdmUoKSAmJiAhOjpnVGVzdFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2Vi
QXJjaGl2ZSgpICYmICE6OmdUZXN0UnVubmVyLT5kdW1wQXNBdWRpbygpKQpAQCAtNzIwLDEwICs3
MjQsMTAgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1w
QmFja0ZvcndhcmRMaXN0KCkpCiAgICAgICAgICAgICAgICAgZHVtcEJhY2tGb3J3YXJkTGlzdEZv
ckFsbFdpbmRvd3MoKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcmludGYoIkVSUk9S
OiBuaWwgcmVzdWx0IGZyb20gJXMiLCA6OmdUZXN0UnVubmVyLT5kdW1wQXNUZXh0KCkgPyAiSURP
TUVsZW1lbnQ6OmlubmVyVGV4dCIgOiAiSUZyYW1lVmlld1ByaXZhdGU6OnJlbmRlclRyZWVBc0V4
dGVybmFsUmVwcmVzZW50YXRpb24iKTsKKyAgICAgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwg
IkVSUk9SOiBuaWwgcmVzdWx0IGZyb20gJXMiLCA6OmdUZXN0UnVubmVyLT5kdW1wQXNUZXh0KCkg
PyAiSURPTUVsZW1lbnQ6OmlubmVyVGV4dCIgOiAiSUZyYW1lVmlld1ByaXZhdGU6OnJlbmRlclRy
ZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb24iKTsKIAogICAgICAgICBpZiAocHJpbnRTZXBhcmF0
b3JzKQotICAgICAgICAgICAgcHV0cygiI0VPRiIpOyAvLyB0ZXJtaW5hdGUgdGhlIGNvbnRlbnQg
YmxvY2sKKyAgICAgICAgICAgIGZwdXRzKCIjRU9GXG4iLCBmaWxlU3Rkb3V0KTsgLy8gdGVybWlu
YXRlIHRoZSBjb250ZW50IGJsb2NrCiAgICAgfQogCiAgICAgaWYgKGR1bXBQaXhlbHNGb3JDdXJy
ZW50VGVzdCAmJiA6OmdUZXN0UnVubmVyLT5nZW5lcmF0ZVBpeGVsUmVzdWx0cygpKSB7CkBAIC03
MzEsOCArNzM1LDggQEAgdm9pZCBkdW1wKCkKICAgICAgICAgZHVtcFdlYlZpZXdBc1BpeGVsc0Fu
ZENvbXBhcmVXaXRoRXhwZWN0ZWQoZ1Rlc3RSdW5uZXItPmV4cGVjdGVkUGl4ZWxIYXNoKCkpOwog
ICAgIH0KIAotICAgIHB1dHMoIiNFT0YiKTsgICAvLyB0ZXJtaW5hdGUgdGhlIChwb3NzaWJseSBl
bXB0eSkgcGl4ZWxzIGJsb2NrCi0gICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZnB1dHMoIiNFT0Zc
biIsIGZpbGVTdGRvdXQpOyAvLyB0ZXJtaW5hdGUgdGhlIChwb3NzaWJseSBlbXB0eSkgcGl4ZWxz
IGJsb2NrCisgICAgZmZsdXNoKGZpbGVTdGRvdXQpOwogCiBmYWlsOgogICAgIC8vIFRoaXMgd2ls
bCBleGl0IGZyb20gb3VyIG1lc3NhZ2UgbG9vcC4KQEAgLTExMTAsNiArMTExNCwxMiBAQCBzdGF0
aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgX2JzdHJfdCB1cmxCU3Ry
KHJlaW50ZXJwcmV0X2Nhc3Q8d2NoYXJfdCo+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICBBU1NFUlQo
dXJsQlN0ci5sZW5ndGgoKSA9PSBsZW5ndGgpOwogCisgICAgLy8gQ2hlY2sgdGhhdCB0ZXN0IGhh
cyBub3QgYWxyZWFkeSBydW4KKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IHRlc3RVcmxzOwor
ICAgIGlmICh0ZXN0VXJscy5jb250YWlucyhTdHJpbmcoaW5wdXRMaW5lLmNfc3RyKCkpKSkKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJUZXN0IGhhcyBhbHJlYWR5IHJ1biBcIiVzXCJcbiIsIGlu
cHV0TGluZS5jX3N0cigpKTsKKyAgICB0ZXN0VXJscy5hZGQoU3RyaW5nKGlucHV0TGluZS5jX3N0
cigpKSk7CisKICAgICBDRkluZGV4IG1heGltdW1VUkxMZW5ndGhBc1VURjggPSBDRlN0cmluZ0dl
dE1heGltdW1TaXplRm9yRW5jb2RpbmcobGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpICsg
MTsKICAgICBWZWN0b3I8Y2hhcj4gdGVzdFVSTChtYXhpbXVtVVJMTGVuZ3RoQXNVVEY4ICsgMSwg
MCk7CiAgICAgQ0ZTdHJpbmdHZXRDU3RyaW5nKHN0ciwgdGVzdFVSTC5kYXRhKCksIG1heGltdW1V
UkxMZW5ndGhBc1VURjgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CkBAIC0xNDU1LDYgKzE0NjUs
MTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBfc2V0bW9k
ZSgxLCBfT19CSU5BUlkpOwogICAgIF9zZXRtb2RlKDIsIF9PX0JJTkFSWSk7CiAKKyAgICAvLyBT
b21lIHRlc3RzIGFyZSBmbGFreSBiZWNhdXNlIGNlcnRhaW4gRExMcyBhcmUgd3JpdGluZyB0byBz
dGRvdXQsIGdpdmluZyBpbmNvcnJlY3QgdGVzdCByZXN1bHRzLgorICAgIC8vIFdlIHdvcmsgYXJv
dW5kIHRoYXQgaGVyZSBieSBkdXBsaWNhdGluZyBhbmQgcmVkaXJlY3Rpbmcgc3Rkb3V0LgorICAg
IGludCBmZFN0ZG91dCA9IF9kdXAoMSk7CisgICAgX3NldG1vZGUoZmRTdGRvdXQsIF9PX0JJTkFS
WSk7CisgICAgZmlsZVN0ZG91dCA9IGZkb3BlbihmZFN0ZG91dCwgImErYiIpOworICAgIC8vIFJl
ZGlyZWN0IHN0ZG91dCB0byBzdGRlcnIuCisgICAgaW50IHJlc3VsdCA9IF9kdXAyKF9maWxlbm8o
c3RkZXJyKSwgMSk7CisKICAgICBpbml0aWFsaXplKCk7CiAKICAgICBzZXREZWZhdWx0c1RvQ29u
c2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKTsKQEAgLTE0ODcsNyArMTUwNSw3IEBAIGludCBtYWlu
KGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgIEJPT0wgdGhyZWVEVHJhbnNm
b3Jtc0F2YWlsYWJsZSA9IEZBTFNFOwogI2VuZGlmCiAKLSAgICAgICAgcHJpbnRmKCJTdXBwb3J0
ZWRGZWF0dXJlczolcyAlc1xuIiwgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA/ICJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nIiA6ICIiLCB0aHJlZURUcmFuc2Zvcm1zQXZhaWxhYmxlID8g
IjNEVHJhbnNmb3JtcyIgOiAiIik7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIlN1cHBv
cnRlZEZlYXR1cmVzOiVzICVzXG4iLCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlID8g
IkFjY2VsZXJhdGVkQ29tcG9zaXRpbmciIDogIiIsIHRocmVlRFRyYW5zZm9ybXNBdmFpbGFibGUg
PyAiM0RUcmFuc2Zvcm1zIiA6ICIiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWVXaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWVXaW4uaAkocmV2aXNp
b24gMjEwNDM0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlV2lu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAgZXh0ZXJuIFBvbGljeURlbGVnYXRl
KiBwb2xpY3lEZWxlZ2F0ZTsKIAogZXh0ZXJuIEhXTkQgd2ViVmlld1dpbmRvdzsKIAorZXh0ZXJu
IEZJTEUqIGZpbGVTdGRvdXQ7CisKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIxMDQzNCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEJl
Z2luRWRpdAogICAgIH0KIAogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxi
YWNrcygpICYmICFkb25lKQotICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6JXNcbiIsIGR1bXAocmFuZ2UpLmNfc3RyKCkpOworICAg
ICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVk
aXRpbmdJbkRPTVJhbmdlOiVzXG4iLCBkdW1wKHJhbmdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1
bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJldHVybiBTX09LOwpAQCAtMTQ2LDcgKzE0Niw3
IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRFbmRFZGl0aW4KICAgICB9CiAKICAg
ICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAhZG9uZSkKLSAg
ICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5n
ZTolc1xuIiwgZHVtcChyYW5nZSkuY19zdHIoKSk7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91
dCwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlOiVzXG4iLCBk
dW1wKHJhbmdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwog
ICAgIHJldHVybiBTX09LOwpAQCAtMTcyLDcgKzE3Miw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVn
YXRlOjpzaG91bGRJbnNlcnROb2QKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIGlm
ICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKQotICAgICAg
ICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6JXMgcmVwbGFjaW5n
RE9NUmFuZ2U6JXMgZ2l2ZW5BY3Rpb246JXNcbiIsIGR1bXBQYXRoKG5vZGUpLmNfc3RyKCksIGR1
bXAocmFuZ2UpLmNfc3RyKCksIGluc2VydEFjdGlvblN0cmluZ1thY3Rpb25dKTsKKyAgICAgICAg
ZnByaW50ZihmaWxlU3Rkb3V0LCAiRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTol
cyByZXBsYWNpbmdET01SYW5nZTolcyBnaXZlbkFjdGlvbjolc1xuIiwgZHVtcFBhdGgobm9kZSku
Y19zdHIoKSwgZHVtcChyYW5nZSkuY19zdHIoKSwgaW5zZXJ0QWN0aW9uU3RyaW5nW2FjdGlvbl0p
OwogCiAgICAgKnJlc3VsdCA9IG1fYWNjZXB0c0VkaXRpbmc7CiAgICAgcmV0dXJuIFNfT0s7CkBA
IC0xOTMsNyArMTkzLDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2VydFRl
eAogCiAgICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgJiYgIWRv
bmUpIHsKICAgICAgICAgX2JzdHJfdCB0ZXh0QnN0cih0ZXh0KTsKLSAgICAgICAgcHJpbnRmKCJF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiVzIHJlcGxhY2luZ0RPTVJhbmdlOiVz
IGdpdmVuQWN0aW9uOiVzXG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odGV4dEJzdHIpLCBk
dW1wKHJhbmdlKS5jX3N0cigpLCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7CisgICAgICAg
IGZwcmludGYoZmlsZVN0ZG91dCwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6
JXMgcmVwbGFjaW5nRE9NUmFuZ2U6JXMgZ2l2ZW5BY3Rpb246JXNcbiIsIHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPih0ZXh0QnN0ciksIGR1bXAocmFuZ2UpLmNfc3RyKCksIGluc2VydGFjdGlvbnN0
cmluZ1thY3Rpb25dKTsKICAgICB9CiAKICAgICAqcmVzdWx0ID0gbV9hY2NlcHRzRWRpdGluZzsK
QEAgLTIwOCw3ICsyMDgsNyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkRGVsZXRl
RE9NCiAgICAgfQogCiAgICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkgJiYgIWRvbmUpCi0gICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkRGVs
ZXRlRE9NUmFuZ2U6JXNcbiIsIGR1bXAocmFuZ2UpLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRm
KGZpbGVTdGRvdXQsICJFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTolc1xu
IiwgZHVtcChyYW5nZSkuY19zdHIoKSk7CiAKICAgICAqcmVzdWx0ID0gbV9hY2NlcHRzRWRpdGlu
ZzsKICAgICByZXR1cm4gU19PSzsKQEAgLTIzMiw3ICsyMzIsNyBAQCBIUkVTVUxUIEVkaXRpbmdE
ZWxlZ2F0ZTo6c2hvdWxkQ2hhbmdlU2VsCiAgICAgfTsKIAogICAgIGlmICg6OmdUZXN0UnVubmVy
LT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKQotICAgICAgICBwcmludGYoIkVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6JXMgdG9ET01SYW5nZTol
cyBhZmZpbml0eTolcyBzdGlsbFNlbGVjdGluZzolc1xuIiwgZHVtcChjdXJyZW50UmFuZ2UpLmNf
c3RyKCksIGR1bXAocHJvcG9zZWRSYW5nZSkuY19zdHIoKSwgYWZmaW5pdHlTdHJpbmdbc2VsZWN0
aW9uQWZmaW5pdHldLCBib29sc3RyaW5nW3N0aWxsU2VsZWN0aW5nXSk7CisgICAgICAgIGZwcmlu
dGYoZmlsZVN0ZG91dCwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6JXMgdG9ET01SYW5nZTolcyBhZmZpbml0eTolcyBzdGlsbFNlbGVjdGluZzolc1xuIiwg
ZHVtcChjdXJyZW50UmFuZ2UpLmNfc3RyKCksIGR1bXAocHJvcG9zZWRSYW5nZSkuY19zdHIoKSwg
YWZmaW5pdHlTdHJpbmdbc2VsZWN0aW9uQWZmaW5pdHldLCBib29sc3RyaW5nW3N0aWxsU2VsZWN0
aW5nXSk7CiAKICAgICAqcmVzdWx0ID0gbV9hY2NlcHRzRWRpdGluZzsKICAgICByZXR1cm4gU19P
SzsKQEAgLTI0Niw3ICsyNDYsNyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQXBw
bHlTdHlsCiAgICAgfQogCiAgICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJh
Y2tzKCkgJiYgIWRvbmUpCi0gICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxk
QXBwbHlTdHlsZTolcyB0b0VsZW1lbnRzSW5ET01SYW5nZTolc1xuIiwgIidzdHlsZSBkZXNjcmlw
dGlvbiciLypbW3N0eWxlIGRlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSovLCBkdW1wKHJhbmdlKS5j
X3N0cigpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiRURJVElORyBERUxFR0FURTog
c2hvdWxkQXBwbHlTdHlsZTolcyB0b0VsZW1lbnRzSW5ET01SYW5nZTolc1xuIiwgIidzdHlsZSBk
ZXNjcmlwdGlvbiciLypbW3N0eWxlIGRlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSovLCBkdW1wKHJh
bmdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJl
dHVybiBTX09LOwpAQCAtMjYxLDcgKzI2MSw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpz
aG91bGRDaGFuZ2VUeXAKICAgICB9CiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRp
bmdDYWxsYmFja3MoKSAmJiAhZG9uZSkKLSAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VUeXBpbmdTdHlsZTolcyB0b1N0eWxlOiVzXG4iLCAiJ2N1cnJlbnRTdHls
ZSBkZXNjcmlwdGlvbiciLCAiJ3Byb3Bvc2VkU3R5bGUgZGVzY3JpcHRpb24nIik7CisgICAgICAg
IGZwcmludGYoZmlsZVN0ZG91dCwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVR5cGlu
Z1N0eWxlOiVzIHRvU3R5bGU6JXNcbiIsICInY3VycmVudFN0eWxlIGRlc2NyaXB0aW9uJyIsICIn
cHJvcG9zZWRTdHlsZSBkZXNjcmlwdGlvbiciKTsKIAogICAgICpyZXN1bHQgPSBtX2FjY2VwdHNF
ZGl0aW5nOwogICAgIHJldHVybiBTX09LOwpAQCAtMjc2LDcgKzI3Niw3IEBAIEhSRVNVTFQgRWRp
dGluZ0RlbGVnYXRlOjpkb1BsYXRmb3JtQ29tbWEKIAogICAgIGlmICg6OmdUZXN0UnVubmVyLT5k
dW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgY29tbWFu
ZEJTVFIoY29tbWFuZCk7Ci0gICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogZG9QbGF0
Zm9ybUNvbW1hbmQ6JXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihjb21tYW5kQlNUUikp
OworICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJFRElUSU5HIERFTEVHQVRFOiBkb1BsYXRm
b3JtQ29tbWFuZDolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGNvbW1hbmRCU1RSKSk7
CiAgICAgfQogCiAgICAgKnJlc3VsdCA9IG1fYWNjZXB0c0VkaXRpbmc7CkBAIC0yOTEsNyArMjkx
LDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRCZWdpbgogICAgIGlmICg6
OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAg
IF9ic3RyX3QgbmFtZTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIo
KSk7Ci0gICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRp
dGluZzolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsKKyAgICAgICAgZnBy
aW50ZihmaWxlU3Rkb3V0LCAiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGlu
Zzolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsKICAgICB9CiAgICAgcmV0
dXJuIFNfT0s7CiB9CkBAIC0zMDQsNyArMzA0LDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6
OndlYlZpZXdEaWRDaGFuZwogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxi
YWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgbmFtZTsKICAgICAgICAgbm90aWZp
Y2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7Ci0gICAgICAgIHByaW50ZigiRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KG5hbWUpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZTolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsK
ICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zMTcsNyArMzE3LDcgQEAgSFJFU1VMVCBF
ZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRFbmRFZAogICAgIGlmICg6OmdUZXN0UnVubmVyLT5k
dW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgbmFtZTsK
ICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7Ci0gICAgICAgIHBy
aW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6JXNcbiIsIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwg
IkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOiVzXG4iLCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4obmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTMz
MCw3ICszMzAsNyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZENoYW5nCiAg
ICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgJiYgIWRvbmUpIHsK
ICAgICAgICAgX2JzdHJfdCBuYW1lOwogICAgICAgICBub3RpZmljYXRpb24tPm5hbWUoJm5hbWUu
R2V0QlNUUigpKTsKLSAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlVHlwaW5nU3R5bGU6JXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7
CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VUeXBpbmdTdHlsZTolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUp
KTsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zNDMsNyArMzQzLDcgQEAgSFJFU1VM
VCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZwogICAgIGlmICg6OmdUZXN0UnVubmVy
LT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgbmFt
ZTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7Ci0gICAgICAg
IHByaW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjolc1xu
Iiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsKKyAgICAgICAgZnByaW50ZihmaWxl
U3Rkb3V0LCAiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjolc1xu
Iiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIFNf
T0s7CiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHAJKHJldmlzaW9uIDIxMDQzNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9G
cmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBV
TE9ORyBGcmFtZUxvYWREZWxlZ2F0ZTo6UmVsZWFzZSgpCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVn
YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3Kiwg
X0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5u
ZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiJXMg
LSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2Ugb25s
eSBzZXQgdGhpcyBvbmNlIHBlciB0ZXN0LiAgSWYgaXQgZ2V0cyBjbGVhcmVkLCBhbmQgdGhlbiBz
ZXQgYWdhaW4sIHdlIG1pZ2h0CiAgICAgLy8gZW5kIHVwIGRvaW5nIHR3byBkdW1wcyBmb3Igb25l
IHRlc3QuCkBAIC0xMzYsNyArMTM2LDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlk
U3RhcnRQcm92aQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5f
b3B0XyBJV2ViRnJhbWUqIGZyYW1lKQogeyAKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXIt
PmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lXG4iLCBkZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CisgICAgICAgIGZwcmludGYo
ZmlsZVN0ZG91dCwgIiVzIC0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5j
X3N0cigpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIEhSRVNV
TFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVTZXIKIEhSRVNVTFQgRnJhbWVMb2FkRGVs
ZWdhdGU6OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKF9Jbl9vcHRfIElXZWJW
aWV3KiAsIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdU
ZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMg
LSBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZVxuIiwgZGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRmKGZpbGVT
dGRvdXQsICIlcyAtIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lXG4iLCBkZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CiAKICAgICByZXR1
cm4gU19PSzsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRl
OjpkaWRDaGFuZ2VMb2NhCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkVycm9y
KiBlcnJvciwgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYg
Z1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCIl
cyAtIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JcbiIsIGRlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rk
b3V0LCAiJXMgLSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yXG4iLCBkZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CiAKICAgICBsb2NhdGlvbkNo
YW5nZURvbmUoZXJyb3IsIGZyYW1lKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTE2MSw3ICsxNjEs
NyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRGYWlsUHJvdmlzCiBIUkVTVUxUIEZy
YW1lTG9hZERlbGVnYXRlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUoX0luX29wdF8gSVdlYlZpZXcq
IHdlYlZpZXcsIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYm
IGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50Zigi
JXMgLSBkaWRDb21taXRMb2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiJXMg
LSBkaWRDb21taXRMb2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0KGZyYW1lKS5jX3N0cigpKTsKIAogICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB3ZWJW
aWV3UHJpdmF0ZTsKICAgICBIUkVTVUxUIGhyID0gd2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJndl
YlZpZXdQcml2YXRlKTsKQEAgLTE3NSwxMCArMTc1LDEwIEBAIEhSRVNVTFQgRnJhbWVMb2FkRGVs
ZWdhdGU6OmRpZENvbW1pdExvYWQKIEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2Vp
dmVUaXRsZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiB0aXRsZSwgX0luX29wdF8gSVdl
YkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVUaXRsZTog
JVNcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpLCB0
aXRsZSk7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIiVzIC0gZGlkUmVjZWl2ZVRpdGxl
OiAlU1xuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCks
IHRpdGxlKTsKIAogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wVGl0bGVDaGFuZ2VzKCkgJiYg
IWRvbmUpCi0gICAgICAgIHByaW50ZigiVElUTEUgQ0hBTkdFRDogJyVTJ1xuIiwgdGl0bGUgPyB0
aXRsZSA6IEwiIik7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIlRJVExFIENIQU5HRUQ6
ICclUydcbiIsIHRpdGxlID8gdGl0bGUgOiBMIiIpOwogICAgIHJldHVybiBTX09LOwogfQogCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBGcmFtZUxvYWREZWxlZ2F0ZTo6bG9jYXRpb25DaGFuZ2VE
bwogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKF9Jbl9v
cHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJp
bnRmKCIlcyAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZVxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQs
ICIlcyAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZVxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQoZnJhbWUpLmNfc3RyKCkpOwogCiAgICAgbG9jYXRpb25DaGFuZ2VEb25lKDAsIGZy
YW1lKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTI2MSw3ICsyNjEsNyBAQCBIUkVTVUxUIEZyYW1l
TG9hZERlbGVnYXRlOjpkaWRGaW5pc2hMb2FkCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRGYWlsTG9hZFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJFcnJv
ciogZXJyb3IsIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYm
IGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50Zigi
JXMgLSBkaWRGYWlsTG9hZFdpdGhFcnJvclxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQoZnJhbWUpLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICIlcyAt
IGRpZEZhaWxMb2FkV2l0aEVycm9yXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChmcmFtZSkuY19zdHIoKSk7CiAKICAgICBsb2NhdGlvbkNoYW5nZURvbmUoZXJyb3IsIGZyYW1l
KTsKICAgICByZXR1cm4gU19PSzsKQEAgLTI3MCw3ICsyNzAsNyBAQCBIUkVTVUxUIEZyYW1lTG9h
ZERlbGVnYXRlOjpkaWRGYWlsTG9hZFdpCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjp3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkwoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIg
dXJsLCBkb3VibGUgLypkZWxheVNlY29uZHMqLywgREFURSAvKmZpcmVEYXRlKi8sIF9Jbl9vcHRf
IElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSB3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkw6ICVTIFxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQoZnJhbWUpLmNfc3RyKCksCisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIiVzIC0gd2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlUyBcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpLAogICAgICAgICAgICAgICAgIHVybFN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChzdGQ6OndzdHJpbmcodXJsLCA6OlN5c1N0cmluZ0xlbih1cmwpKSkuY19z
dHIoKSk7CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTI3OSw3ICsyNzksNyBAQCBIUkVTVUxUIEZy
YW1lTG9hZERlbGVnYXRlOjp3aWxsUGVyZm9ybUNsCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRl
OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0lu
X29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXIt
PmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENhbmNl
bENsaWVudFJlZGlyZWN0Rm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0KGZyYW1lKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiJXMgLSBk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTI5
Myw3ICsyOTMsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjp3aWxsQ2xvc2VGcmFtCiBI
UkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUoSVdl
YlZpZXcqLCBKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKQogewogICAgIGlmICghZG9uZSAmJiBn
VGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoIj8/
IC0gd2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlXG4iKTsKKyAgICAgICAgZnByaW50ZihmaWxl
U3Rkb3V0LCAiPz8gLSB3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGVcbiIpOwogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRDbGVhcldpbmRvd09iCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywg
X0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5u
ZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lXG4iLAorICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQs
ICIlcyAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lXG4iLAogICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKICAgICBp
ZiAoIWRvbmUpIHsKICAgICAgICAgQ09NUHRyPElXZWJGcmFtZVByaXZhdGU+IHdlYkZyYW1lUHJp
dmF0ZTsKQEAgLTM4Nyw3ICszODcsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRG
aW5pc2hEb2N1CiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAgICAgcmV0dXJuIGhy
OwogICAgICAgICBpZiAocGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzKQotICAgICAgICAgICAgcHJp
bnRmKCIlcyAtIGhhcyAldSBvbnVubG9hZCBoYW5kbGVyKHMpXG4iLAorICAgICAgICAgICAgZnBy
aW50ZihmaWxlU3Rkb3V0LCAiJXMgLSBoYXMgJXUgb251bmxvYWQgaGFuZGxlcihzKVxuIiwKICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUp
LmNfc3RyKCksIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyk7CiAgICAgfQogCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoRG9jdQogSFJFU1VM
VCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoX0luX29w
dF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCi0g
ICAgICAgIHByaW50ZigiJXMgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZVxuIiwKKyAg
ICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiJXMgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZVxuIiwKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChmcmFtZSkuY19zdHIoKSk7CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTQxMSw3ICs0MTEsNyBA
QCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRGaXJzdFZpc3VhCiBIUkVTVUxUIEZyYW1l
TG9hZERlbGVnYXRlOjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KF9Jbl9vcHRfIElXZWJWaWV3
KiAvKnNlbmRlciovKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1l
TG9hZENhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoImRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRcbiIpOworICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50XG4iKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtNDE5LDcgKzQxOSw3IEBAIEhS
RVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZERpc3BsYXlJbnMKIEhSRVNVTFQgRnJhbWVMb2Fk
RGVsZWdhdGU6OmRpZFJ1bkluc2VjdXJlQ29udGVudChfSW5fb3B0XyBJV2ViVmlldyogLypzZW5k
ZXIqLywgX0luX29wdF8gSVdlYlNlY3VyaXR5T3JpZ2luKiAvKm9yaWdpbiovKQogewogICAgIGlm
ICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQotICAgICAg
ICBwcmludGYoImRpZFJ1bkluc2VjdXJlQ29udGVudFxuIik7CisgICAgICAgIGZwcmludGYoZmls
ZVN0ZG91dCwgImRpZFJ1bkluc2VjdXJlQ29udGVudFxuIik7CiAKICAgICByZXR1cm4gU19PSzsK
IH0KQEAgLTQ0Miw1ICs0NDIsNSBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpvbk5vdGlm
eShfSW5fCiB2b2lkIEZyYW1lTG9hZERlbGVnYXRlOjp3ZWJWaWV3UHJvZ3Jlc3NGaW5pc2hlZE5v
dGlmaWNhdGlvbigpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wUHJvZ3Jl
c3NGaW5pc2hlZENhbGxiYWNrKCkpCi0gICAgICAgIHByaW50ZigicG9zdFByb2dyZXNzRmluaXNo
ZWROb3RpZmljYXRpb25cbiIpOworICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJwb3N0UHJv
Z3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvblxuIik7CiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmNwcAkocmV2aXNpb24gMjEwNDM0KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MCw3ICsxNDAsNyBAQCBIUkVTVUxUIEhpc3RvcnlEZWxlZ2F0ZTo6ZGlkTmF2aWdhdGVX
aXRoCiAKICAgICBib29sIHdhc0ZhaWx1cmUgPSBoYXNTdWJzdGl0dXRlRGF0YSB8fCAoaHR0cFJl
c3BvbnNlICYmIHN0YXR1c0NvZGUgPj0gNDAwKTsKICAgICAgICAgCi0gICAgcHJpbnRmKCJXZWJW
aWV3IG5hdmlnYXRlZCB0byB1cmwgXCIlU1wiIHdpdGggdGl0bGUgXCIlc1wiIHdpdGggSFRUUCBl
cXVpdmFsZW50IG1ldGhvZCBcIiVzXCIuICBUaGUgbmF2aWdhdGlvbiB3YXMgJXMgYW5kIHdhcyAl
cyVTLlxuIiwgCisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiV2ViVmlldyBuYXZpZ2F0ZWQgdG8g
dXJsIFwiJVNcIiB3aXRoIHRpdGxlIFwiJXNcIiB3aXRoIEhUVFAgZXF1aXZhbGVudCBtZXRob2Qg
XCIlc1wiLiAgVGhlIG5hdmlnYXRpb24gd2FzICVzIGFuZCB3YXMgJXMlUy5cbiIsIAogICAgICAg
ICB1cmwuY19zdHIoKSwgCiAgICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPih0aXRsZUJTVFIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oaHR0cE1ldGhvZEJTVFIpLApAQCAtMTY0LDcgKzE2
NCw3IEBAIEhSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjpkaWRQZXJmb3JtQ2xpZW4KICAgICBpZiAo
ZGVzdGluYXRpb25VUkwpCiAgICAgICAgIGRlc3RpbmF0aW9uID0gdXJsU3VpdGFibGVGb3JUZXN0
UmVzdWx0KHdzdHJpbmdGcm9tQlNUUihkZXN0aW5hdGlvblVSTCkpOwogCi0gICAgcHJpbnRmKCJX
ZWJWaWV3IHBlcmZvcm1lZCBhIGNsaWVudCByZWRpcmVjdCBmcm9tIFwiJVNcIiB0byBcIiVTXCIu
XG4iLCBzb3VyY2UuY19zdHIoKSwgZGVzdGluYXRpb24uY19zdHIoKSk7CisgICAgZnByaW50Zihm
aWxlU3Rkb3V0LCAiV2ViVmlldyBwZXJmb3JtZWQgYSBjbGllbnQgcmVkaXJlY3QgZnJvbSBcIiVT
XCIgdG8gXCIlU1wiLlxuIiwgc291cmNlLmNfc3RyKCksIGRlc3RpbmF0aW9uLmNfc3RyKCkpOwog
ICAgIHJldHVybiBTX09LOwogfQogICAgIApAQCAtMTgxLDcgKzE4MSw3IEBAIEhSRVNVTFQgSGlz
dG9yeURlbGVnYXRlOjpkaWRQZXJmb3JtU2VydmUKICAgICBpZiAoZGVzdGluYXRpb25VUkwpCiAg
ICAgICAgIGRlc3RpbmF0aW9uID0gdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHdzdHJpbmdGcm9t
QlNUUihkZXN0aW5hdGlvblVSTCkpOwogCi0gICAgcHJpbnRmKCJXZWJWaWV3IHBlcmZvcm1lZCBh
IHNlcnZlciByZWRpcmVjdCBmcm9tIFwiJVNcIiB0byBcIiVTXCIuXG4iLCBzb3VyY2UuY19zdHIo
KSwgZGVzdGluYXRpb24uY19zdHIoKSk7CisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiV2ViVmll
dyBwZXJmb3JtZWQgYSBzZXJ2ZXIgcmVkaXJlY3QgZnJvbSBcIiVTXCIgdG8gXCIlU1wiLlxuIiwg
c291cmNlLmNfc3RyKCksIGRlc3RpbmF0aW9uLmNfc3RyKCkpOwogICAgIHJldHVybiBTX09LOwog
fQogCkBAIC0xOTQsNyArMTk0LDcgQEAgSFJFU1VMVCBIaXN0b3J5RGVsZWdhdGU6OnVwZGF0ZUhp
c3RvcnlUaQogICAgIGlmICh1cmxCU1RSKQogICAgICAgICB1cmwgPSB1cmxTdWl0YWJsZUZvclRl
c3RSZXN1bHQod3N0cmluZ0Zyb21CU1RSKHVybEJTVFIpKTsKIAotICAgIHByaW50ZigiV2ViVmll
dyB1cGRhdGVkIHRoZSB0aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlU1wiIHRvIFwiJVNcIi5cbiIs
IHVybC5jX3N0cigpLCB0aXRsZUJTVFIgPyB0aXRsZUJTVFIgOiBMIiIpOworICAgIGZwcmludGYo
ZmlsZVN0ZG91dCwgIldlYlZpZXcgdXBkYXRlZCB0aGUgdGl0bGUgZm9yIGhpc3RvcnkgVVJMIFwi
JVNcIiB0byBcIiVTXCIuXG4iLCB1cmwuY19zdHIoKSwgdGl0bGVCU1RSID8gdGl0bGVCU1RSIDog
TCIiKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTIxMiw3ICsyMTIsNyBAQCBIUkVT
VUxUIEhpc3RvcnlEZWxlZ2F0ZTo6cG9wdWxhdGVWaXNpdGVkCiAgICAgICAgIHVybCA9IHVybFN1
aXRhYmxlRm9yVGVzdFJlc3VsdCh3c3RyaW5nRnJvbUJTVFIodXJsQlNUUikpOwogCiAgICAgaWYg
KGdUZXN0UnVubmVyLT5kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soKSkKLSAgICAgICAgcHJpbnRm
KCJBc2tlZCB0byBwb3B1bGF0ZSB2aXNpdGVkIGxpbmtzIGZvciBXZWJWaWV3IFwiJVNcIlxuIiwg
dXJsLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJBc2tlZCB0byBwb3B1
bGF0ZSB2aXNpdGVkIGxpbmtzIGZvciBXZWJWaWV3IFwiJVNcIlxuIiwgdXJsLmNfc3RyKCkpOwog
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUG9s
aWN5RGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Q
b2xpY3lEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIxMDQzNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzks
NyBAQCBIUkVTVUxUIFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JOCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBwcmludGYoIiVTXG4iLCBtZXNzYWdlLmNfc3RyKCkpOworICAgIGZwcmlu
dGYoZmlsZVN0ZG91dCwgIiVTXG4iLCBtZXNzYWdlLmNfc3RyKCkpOwogCiAgICAgaWYgKG1fcGVy
bWlzc2l2ZURlbGVnYXRlKQogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CkBAIC0xNjYsNyArMTY2
LDcgQEAgSFJFU1VMVCBQb2xpY3lEZWxlZ2F0ZTo6dW5hYmxlVG9JbXBsZW1lbgogICAgIF9ic3Ry
X3QgZnJhbWVOYW1lOwogICAgIGZyYW1lLT5uYW1lKCZmcmFtZU5hbWUuR2V0QlNUUigpKTsKICAg
ICAKLSAgICBwcmludGYoIlBvbGljeSBkZWxlZ2F0ZTogdW5hYmxlIHRvIGltcGxlbWVudCBwb2xp
Y3kgd2l0aCBlcnJvciBkb21haW4gJyVTJywgZXJyb3IgY29kZSAlZCwgaW4gZnJhbWUgJyVTJ1xu
Iiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KGRvbWFpblN0ciksIGNvZGUsIHN0YXRpY19jYXN0PFRD
SEFSKj4oZnJhbWVOYW1lKSk7CisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiUG9saWN5IGRlbGVn
YXRlOiB1bmFibGUgdG8gaW1wbGVtZW50IHBvbGljeSB3aXRoIGVycm9yIGRvbWFpbiAnJVMnLCBl
cnJvciBjb2RlICVkLCBpbiBmcmFtZSAnJVMnXG4iLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4oZG9t
YWluU3RyKSwgY29kZSwgc3RhdGljX2Nhc3Q8VENIQVIqPihmcmFtZU5hbWUpKTsKICAgICAKICAg
ICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gMjEwNDM0KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM2LDcgKzIzNiw3IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5k
UmUKICAgICAqbmV3UmVxdWVzdCA9IG51bGxwdHI7CiAKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RS
dW5uZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBwcmludGYoIiVT
IC0gd2lsbFNlbmRSZXF1ZXN0ICVTIHJlZGlyZWN0UmVzcG9uc2UgJVNcbiIsIAorICAgICAgICBm
cHJpbnRmKGZpbGVTdGRvdXQsICIlUyAtIHdpbGxTZW5kUmVxdWVzdCAlUyByZWRpcmVjdFJlc3Bv
bnNlICVTXG4iLCAKICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KGlkZW50aWZpZXIpLmNfc3RyKCksCiAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChyZXF1ZXN0KS5jX3N0cigpLAogICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQocmVkaXJlY3RSZXNwb25zZSkuY19zdHIoKSk7CkBAIC0yNDYsMTMg
KzI0NiwxMyBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlCiAgICAg
ICAgIHJldHVybiBTX09LOwogCiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT53aWxsU2Vu
ZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QoKSAmJiByZWRpcmVjdFJlc3BvbnNlKSB7Ci0g
ICAgICAgIHByaW50ZigiUmV0dXJuaW5nIG51bGwgZm9yIHRoaXMgcmVkaXJlY3RcbiIpOworICAg
ICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJSZXR1cm5pbmcgbnVsbCBmb3IgdGhpcyByZWRpcmVj
dFxuIik7CiAgICAgICAgIHJldHVybiBTX09LOwogICAgIH0KIAogICAgIF9ic3RyX3QgdXJsQnN0
cjsKICAgICBpZiAoRkFJTEVEKHJlcXVlc3QtPlVSTCgmdXJsQnN0ci5HZXRCU1RSKCkpKSkgewot
ICAgICAgICBwcmludGYoIlJlcXVlc3QgaGFzIG5vIFVSTFxuIik7CisgICAgICAgIGZwcmludGYo
ZmlsZVN0ZG91dCwgIlJlcXVlc3QgaGFzIG5vIFVSTFxuIik7CiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAgICAgfQogCkBAIC0yNzQsNyArMjc0LDcgQEAgSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxl
Z2F0ZTo6d2lsbFNlbmRSZQogICAgICAgICAgICAgICAgIHRlc3RIb3N0ID0gYWRvcHRDRihDRlVS
TENvcHlIb3N0TmFtZSh0ZXN0UGF0aFVSTC5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCFpc0xvY2FsaG9zdChob3N0LmdldCgpKSAmJiAhaG9zdElzVXNlZEJ5U29tZVRl
c3RzVG9HZW5lcmF0ZUVycm9yKGhvc3QuZ2V0KCkpICYmICghdGVzdEhvc3QgfHwgaXNMb2NhbGhv
c3QodGVzdEhvc3QuZ2V0KCkpKSkgewotICAgICAgICAgICAgICAgIHByaW50ZigiQmxvY2tlZCBh
Y2Nlc3MgdG8gZXh0ZXJuYWwgVVJMICVzXG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odXJs
QnN0cikpOworICAgICAgICAgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIkJsb2NrZWQgYWNj
ZXNzIHRvIGV4dGVybmFsIFVSTCAlc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJz
dHIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU19PSzsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRp
ZFJlY2VpdmUKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghZ1Rlc3RSdW5uZXIt
PmhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoKSkgewotICAgICAgICBwcmludGYoIiVT
IC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gU2ltdWxhdGluZyBjYW5jZWxs
ZWQgYXV0aGVudGljYXRpb24gc2hlZXRcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0KGlkZW50aWZpZXIpLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICIl
UyAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFNpbXVsYXRpbmcgY2FuY2Vs
bGVkIGF1dGhlbnRpY2F0aW9uIHNoZWV0XG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChpZGVudGlmaWVyKS5jX3N0cigpKTsKICAgICAgICAgc2VuZGVyLT5jb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKICAgICAg
ICAgcmV0dXJuIFNfT0s7CiAgICAgfQpAQCAtMzA4LDcgKzMwOCw3IEBAIEhSRVNVTFQgUmVzb3Vy
Y2VMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmUKICAgICBjb25zdCBjaGFyKiB1c2VyID0gZ1Rlc3RS
dW5uZXItPmF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoKS5jX3N0cigpOwogICAgIGNvbnN0IGNoYXIq
IHBhc3N3b3JkID0gZ1Rlc3RSdW5uZXItPmF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoKS5jX3N0cigp
OwogCi0gICAgcHJpbnRmKCIlUyAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAt
IFJlc3BvbmRpbmcgd2l0aCAlczolc1xuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQoaWRlbnRpZmllcikuY19zdHIoKSwgdXNlciwgcGFzc3dvcmQpOworICAgIGZwcmludGYoZmls
ZVN0ZG91dCwgIiVTIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9u
ZGluZyB3aXRoICVzOiVzXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChpZGVu
dGlmaWVyKS5jX3N0cigpLCB1c2VyLCBwYXNzd29yZCk7CiAKICAgICBDT01QdHI8SVdlYlVSTENy
ZWRlbnRpYWw+IGNyZWRlbnRpYWw7CiAgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5j
ZShDTFNJRF9XZWJVUkxDcmVkZW50aWFsLCAwLCBJSURfSVdlYlVSTENyZWRlbnRpYWwsICh2b2lk
KiopJmNyZWRlbnRpYWwpKSkKQEAgLTMyMyw3ICszMjMsNyBAQCBIUkVTVUxUIFJlc291cmNlTG9h
ZERlbGVnYXRlOjpkaWRSZWNlaXZlCiAgICAgX0luX29wdF8gSVdlYlVSTFJlc3BvbnNlKiByZXNw
b25zZSwgX0luX29wdF8gSVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2UpCiB7CiAgICAgaWYgKCFk
b25lICYmIGdUZXN0UnVubmVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAg
ICAgcHJpbnRmKCIlUyAtIGRpZFJlY2VpdmVSZXNwb25zZSAlU1xuIiwKKyAgICAgICAgZnByaW50
ZihmaWxlU3Rkb3V0LCAiJVMgLSBkaWRSZWNlaXZlUmVzcG9uc2UgJVNcbiIsCiAgICAgICAgICAg
ICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChpZGVudGlmaWVyKS5jX3N0cigpLAog
ICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVzcG9uc2UpLmNf
c3RyKCkpOwogICAgIH0KQEAgLTMzOCw3ICszMzgsNyBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERl
bGVnYXRlOjpkaWRSZWNlaXZlCiAgICAgCiAgICAgICAgIHdzdHJpbmcgdXJsID0gd3N0cmluZ0Zy
b21CU1RSKHVybEJTVFIpOwogCi0gICAgICAgIHByaW50ZigiJVMgaGFzIE1JTUUgdHlwZSAlU1xu
IiwgbGFzdFBhdGhDb21wb25lbnQodXJsKS5jX3N0cigpLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4o
bWltZVR5cGVCU1RSKSk7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIiVTIGhhcyBNSU1F
IHR5cGUgJVNcbiIsIGxhc3RQYXRoQ29tcG9uZW50KHVybCkuY19zdHIoKSwgc3RhdGljX2Nhc3Q8
d2NoYXJfdCo+KG1pbWVUeXBlQlNUUikpOwogICAgIH0KIAogICAgIHJldHVybiBTX09LOwpAQCAt
MzQ4LDcgKzM0OCw3IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmUK
IEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNv
dXJjZShfSW5fb3B0XyBJV2ViVmlldyogd2ViVmlldywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSogZGF0YVNvdXJjZSkKIHsKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBw
cmludGYoIiVTIC0gZGlkRmluaXNoTG9hZGluZ1xuIiwKKyAgICAgICAgZnByaW50ZihmaWxlU3Rk
b3V0LCAiJVMgLSBkaWRGaW5pc2hMb2FkaW5nXG4iLAogICAgICAgICAgICAgZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoaWRlbnRpZmllcikuY19zdHIoKSk7CiAgICAgfQogCkBAIC0z
NjAsNyArMzYwLDcgQEAgSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoTAog
SFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbExvYWRpbmdXaXRoRXJyb3IoX0lu
X29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgX0luX29w
dF8gSVdlYkVycm9yKiBlcnJvciwgX0luX29wdF8gSVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2Up
CiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkpIHsKLSAgICAgICAgcHJpbnRmKCIlUyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiAl
U1xuIiwgCisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIiVTIC0gZGlkRmFpbExvYWRpbmdX
aXRoRXJyb3I6ICVTXG4iLCAKICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0KGlkZW50aWZpZXIpLmNfc3RyKCksCiAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChlcnJvciwgaWRlbnRpZmllcikuY19zdHIoKSk7CiAgICAgfQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAkocmV2aXNpb24g
MjEwNDM0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIEpTQ29udGV4dFJlZiBUZXN0UnVubmVyOjpt
YWluRnJhbWVKU0NvbnQKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmlu
Z1JlZiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCEKLSAgICBwcmludGYoIkVSUk9S
OiBUZXN0UnVubmVyOjphZGREaXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmKSBub3QgaW1wbGVtZW50
ZWRcbiIpOworICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjphZGRE
aXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiBib29s
IFRlc3RSdW5uZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpCkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGbwogSlNWYWx1ZVJlZiBU
ZXN0UnVubmVyOjpvcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUoSlNDb250ZXh0UmVmIGNvbnRl
eHQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBnZXQgb3JpZ2lucyB0aGF0IGhhdmUg
YXBwbGljYXRpb24gY2FjaGVzLgotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6Om9yaWdp
bnNXaXRoQXBwbGljYXRpb25DYWNoZShKU0NvbnRleHRSZWYpIG5vdCBpbXBsZW1lbnRlZFxuIik7
CisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiRVJST1I6IFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRo
QXBwbGljYXRpb25DYWNoZShKU0NvbnRleHRSZWYpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0xNzUsMTMgKzE3
NSwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkKIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSkKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50LiBSZXF1aXJlcyBub24tZXhpc3RhbnQgKG9uIFdpbmRvd3MpIFdlYlN0
b3JhZ2VNYW5hZ2VyCi0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURh
dGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJp
bnRmKGZpbGVTdGRvdXQsICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRs
ZUludGVydmFsKGRvdWJsZSkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVu
bmVyOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQuIFJlcXVpcmVzIG5vbi1leGlzdGFudCAob24gV2luZG93cykgV2ViU3RvcmFnZU1h
bmFnZXIKLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpjbG9zZUlkbGVMb2NhbFN0b3Jh
Z2VEYXRhYmFzZXMoZG91YmxlKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYoZmls
ZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFz
ZXMoZG91YmxlKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmNs
ZWFyQmFja0ZvcndhcmRMaXN0KCkKQEAgLTIxMywxNCArMjEzLDE0IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QoKQogSlNTdHJpbmdSZWYgVGVzdFJ1bm5lcjo6Y29weURl
Y29kZWRIb3N0TmFtZShKU1N0cmluZ1JlZiBuYW1lKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQhCi0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6Y29weURlY29kZWRIb3N0TmFtZShK
U1N0cmluZ1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6Y29weURlY29kZWRIb3N0TmFtZShKU1N0cmluZ1JlZikgbm90
IGltcGxlbWVudGVkXG4iKTsKICAgICByZXR1cm4gMDsKIH0KIAogSlNTdHJpbmdSZWYgVGVzdFJ1
bm5lcjo6Y29weUVuY29kZWRIb3N0TmFtZShKU1N0cmluZ1JlZiBuYW1lKQogewogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQhCi0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6Y29weUVuY29k
ZWRIb3N0TmFtZShKU1N0cmluZ1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRm
KGZpbGVTdGRvdXQsICJFUlJPUjogVGVzdFJ1bm5lcjo6Y29weUVuY29kZWRIb3N0TmFtZShKU1N0
cmluZ1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjQ4
LDE0ICsyNDgsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCiBpbnQgVGVz
dFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4K
LSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0cygpIG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50Zihm
aWxlU3Rkb3V0LCAiRVJST1I6IFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RzKCkgbm90IGltcGxlbWVudGVkXG4iKTsKICAgICByZXR1cm4gLTE7
CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6aXNHZW9sb2NhdGlvblByb3ZpZGVyQWN0aXZlKCkKIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCi0g
ICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6aXNHZW9sb2NhdGlvblByb3ZpZGVyQWN0aXZl
KCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJFUlJPUjog
VGVzdFJ1bm5lcjo6aXNHZW9sb2NhdGlvblByb3ZpZGVyQWN0aXZlKCkgbm90IGltcGxlbWVudGVk
XG4iKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTMwNCw3ICszMDQsNyBAQCBKU1N0cmlu
Z1JlZiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291CiAKICAgICB3c3RyaW5nIGxvY2FsUGF0
aDsKICAgICBpZiAoIXJlc29sdmVDeWd3aW5QYXRoKGlucHV0LCBsb2NhbFBhdGgpKSB7Ci0gICAg
ICAgIHByaW50ZigiRVJST1I6IEZhaWxlZCB0byByZXNvbHZlIEN5Z3dpbiBwYXRoICVTXG4iLCBp
bnB1dC5jX3N0cigpKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiRVJST1I6IEZhaWxl
ZCB0byByZXNvbHZlIEN5Z3dpbiBwYXRoICVTXG4iLCBpbnB1dC5jX3N0cigpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC00NTcsMjEgKzQ1NywyMSBAQCB2b2lkIFRlc3RS
dW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCi0gICAgcHJpbnRmKCJFUlJP
UjogVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgbm90IGltcGxlbWVudGVk
XG4iKTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0TW9j
a0RldmljZU9yaWVudGF0aW9uKCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0
UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1
ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHBy
b3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbigpIG5vdCBpbXBsZW1lbnRlZFxuIik7Cisg
ICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYg
bWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlv
dXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yODI2NC4KLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAg
IGZwcmludGYoZmlsZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2
b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQpAQCAt
NTMzLDcgKzUzMyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQoYm8K
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wgZW5hYmxl
ZCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBTcGF0aWFsTmF2aWdhdGlvbiBsYXlv
dXQgdGVzdHMuCi0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKGJvb2wpIG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50ZihmaWxl
U3Rkb3V0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChi
b29sKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKQEAgLTYzMyw3ICs2MzMs
NyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDCiB2b2lkIFRlc3RS
dW5uZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnNl
dEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpIG5vdCBpbXBsZW1lbnRlZFxuIik7
CisgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldEF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wgc2hvdWxk
Q3ljbGUpCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldENhY2hlTW9k
ZWwoaW50IGNhY2hlCiAKIGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0cmlu
Z1JlZiAvKm5hbWUqLykKIHsKLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjppc0NvbW1h
bmRFbmFibGVkKCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZCgpIG5vdCBpbXBsZW1lbnRlZFxu
Iik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMjc3LDcgKzEyNzcsNyBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sCiAKIHZvaWQgVGVzdFJ1bm5lcjo6YXV0
aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQog
ewotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmF1dGhlbnRpY2F0ZVNlc3Npb24oKSBu
b3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIkVSUk9SOiBUZXN0
UnVubmVyOjphdXRoZW50aWNhdGVTZXNzaW9uKCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjphYm9ydE1vZGFsKCkKQEAgLTEzMDksMTcgKzEzMDksMTcgQEAgdm9p
ZCBUZXN0UnVubmVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaQogCiB2b2lkIFRlc3RSdW5uZXI6
OmFkZENocm9tZUlucHV0RmllbGQoKQogewotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6
OmFkZENocm9tZUlucHV0RmllbGQoKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYo
ZmlsZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKCkgbm90
IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVDaHJvbWVJbnB1
dEZpZWxkKCkKIHsKLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpyZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpIG5vdCBpbXBsZW1l
bnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Zm9jdXNXZWJWaWV3KCkKIHsKLSAgICBw
cmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpmb2N1c1dlYlZpZXcoKSBub3QgaW1wbGVtZW50ZWRc
biIpOworICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjpmb2N1c1dl
YlZpZXcoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEJh
Y2tpbmdTY2FsZUZhY3Rvcihkb3VibGUpCkBAIC0xMzYzLDIyICsxMzYzLDIyIEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0UGFnZVZpc2liaWxpdHkoY29uc3QKIAogdm9pZCBUZXN0UnVubmVyOjpncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewotICAgIHBy
aW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihK
U1N0cmluZ1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKGZpbGVTdGRvdXQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3Ry
aW5nUmVmKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmRlbnlX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIGpzT3JpZ2luKQogewotICAgIHBy
aW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpT
U3RyaW5nUmVmKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYoZmlsZVN0ZG91dCwg
IkVSUk9SOiBUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmlu
Z1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB7Ci0gICAgcHJpbnRmKCJFUlJPUjogVGVz
dFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKSBub3QgaW1wbGVt
ZW50ZWRcbiIpOworICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjpy
ZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpIG5vdCBpbXBsZW1lbnRlZFxuIik7
CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhKU1Zh
bHVlUmVmIGpzTm90aWZpY2F0aW9uKQogewotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6
OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAg
IGZwcmludGYoZmlsZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrKCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVy
OjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKEpTU3RyaW5nUmVmIHRpdGxlKQpA
QCAtMTM4OCw3ICsxMzg4LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5v
dGlmaQogCiB1bnNpZ25lZCBUZXN0UnVubmVyOjppbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2Fy
ZCgpIGNvbnN0CiB7Ci0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6aW1hZ2VDb3VudElu
R2VuZXJhbFBhc3RlYm9hcmQoKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYoZmls
ZVN0ZG91dCwgIkVSUk9SOiBUZXN0UnVubmVyOjppbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2Fy
ZCgpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIxMDQzNCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUzLDggKzQ1Myw4IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld0ZyYW1lKF9Jbl9vcHQK
IEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZShf
SW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UpCiB7CiAgICAg
aWYgKCFkb25lKSB7Ci0gICAgICAgIHByaW50ZigiQUxFUlQ6ICVTXG4iLCBtZXNzYWdlID8gbWVz
c2FnZSA6IEwiIik7Ci0gICAgICAgIGZmbHVzaChzdGRvdXQpOworICAgICAgICBmcHJpbnRmKGZp
bGVTdGRvdXQsICJBTEVSVDogJVNcbiIsIG1lc3NhZ2UgPyBtZXNzYWdlIDogTCIiKTsKKyAgICAg
ICAgZmZsdXNoKGZpbGVTdGRvdXQpOwogICAgIH0KIAogICAgIHJldHVybiBTX09LOwpAQCAtNDYz
LDcgKzQ2Myw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGEKIEhS
RVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9J
bl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfSW5fIEJTVFIgbWVzc2FnZSwgX091dF8gQk9P
TCogcmVzdWx0KQogewogICAgIGlmICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNOiAl
U1xuIiwgbWVzc2FnZSA/IG1lc3NhZ2UgOiBMIiIpOworICAgICAgICBmcHJpbnRmKGZpbGVTdGRv
dXQsICJDT05GSVJNOiAlU1xuIiwgbWVzc2FnZSA/IG1lc3NhZ2UgOiBMIiIpOwogCiAgICAgKnJl
c3VsdCA9IFRSVUU7CiAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1
bkphdmFTY3JpcHRDb25maXJtCiBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbFdpdGhQcm9tcHQoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8g
QlNUUiBtZXNzYWdlLCBfSW5fIEJTVFIgZGVmYXVsdFRleHQsIF9fZGVyZWZfb3B0X291dCBCU1RS
KiByZXN1bHQpCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBwcmludGYoIlBST01QVDogJVMs
IGRlZmF1bHQgdGV4dDogJVNcbiIsIG1lc3NhZ2UgPyBtZXNzYWdlIDogTCIiLCBkZWZhdWx0VGV4
dCA/IGRlZmF1bHRUZXh0IDogTCIiKTsKKyAgICAgICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiUFJP
TVBUOiAlUywgZGVmYXVsdCB0ZXh0OiAlU1xuIiwgbWVzc2FnZSA/IG1lc3NhZ2UgOiBMIiIsIGRl
ZmF1bHRUZXh0ID8gZGVmYXVsdFRleHQgOiBMIiIpOwogCiAgICAgKnJlc3VsdCA9IFN5c0FsbG9j
U3RyaW5nKGRlZmF1bHRUZXh0KTsKIApAQCAtNDg2LDcgKzQ4Niw3IEBAIEhSRVNVTFQgVUlEZWxl
Z2F0ZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAog
ICAgIGlmICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046ICVTXG4i
LCBtZXNzYWdlID8gbWVzc2FnZSA6IEwiIik7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwg
IkNPTkZJUk0gTkFWSUdBVElPTjogJVNcbiIsIG1lc3NhZ2UgPyBtZXNzYWdlIDogTCIiKTsKIAog
ICAgICpyZXN1bHQgPSAhZ1Rlc3RSdW5uZXItPnNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5n
QmVmb3JlVW5sb2FkKCk7CiAKQEAgLTUwNyw3ICs1MDcsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6
OndlYlZpZXdBZGRNZXNzYWdlVG9DCiAgICAgICAgICAgICBuZXdNZXNzYWdlID0gbmV3TWVzc2Fn
ZS5zdWJzdHIoMCwgZmlsZVByb3RvY29sKSArIGxhc3RQYXRoQ29tcG9uZW50KG5ld01lc3NhZ2Uu
c3Vic3RyKGZpbGVQcm90b2NvbCArIGZpbGVVUkwuc2l6ZSgpKSk7CiAgICAgfQogCi0gICAgYXV0
byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkgPyBzdGRlcnIg
OiBzdGRvdXQ7CisgICAgYXV0byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKCkgPyBzdGRlcnIgOiBmaWxlU3Rkb3V0OwogICAgIGZwcmludGYob3V0LCAiQ09OU09M
RSBNRVNTQUdFOiAiKTsKICAgICBpZiAobGluZU51bWJlcikKICAgICAgICAgZnByaW50ZihvdXQs
ICJsaW5lICVkOiAiLCBsaW5lTnVtYmVyKTsKQEAgLTU5NCw3ICs1OTQsNyBAQCBIUkVTVUxUIFVJ
RGVsZWdhdGU6OmV4Y2VlZGVkRGF0YWJhc2VRdW90CiAgICAgb3JpZ2luLT5wb3J0KCZwb3J0KTsK
IAogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkp
Ci0gICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVk
RGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnslcywgJXMsICVpfSBkYXRhYmFzZTolU1xu
Iiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHByb3RvY29sKSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGhvc3QpLCBwb3J0LCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgICAgICBmcHJpbnRm
KGZpbGVTdGRvdXQsICJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRh
YmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVTXG4iLCBz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocHJvdG9jb2wpLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oaG9zdCksIHBvcnQsIGRhdGFiYXNlSWRlbnRpZmllcik7CiAKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwogICAgIGRvdWJsZSB0ZXN0RGVm
YXVsdFF1b3RhID0gZ1Rlc3RSdW5uZXItPmRhdGFiYXNlRGVmYXVsdFF1b3RhKCk7CkBAIC02MjYs
NyArNjI2LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpleGNlZWRlZERhdGFiYXNlUXVvdAogICAg
IGlmIChtYXhRdW90YSA+PSAwKSB7CiAgICAgICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3Rl
ZFNpemUgJiYgZXhwZWN0ZWRTaXplIDw9IG1heFF1b3RhKSB7CiAgICAgICAgICAgICBuZXdRdW90
YSA9IGV4cGVjdGVkU2l6ZTsKLSAgICAgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJB
U0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4iLCBuZXdRdW90YSk7CisgICAg
ICAgICAgICBmcHJpbnRmKGZpbGVTdGRvdXQsICJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFD
SzogaW5jcmVhc2VkIHF1b3RhIHRvICVsbHVcbiIsIG5ld1F1b3RhKTsKICAgICAgICAgfQogICAg
IH0KICAgICBvcmlnaW4tPnNldFF1b3RhKG5ld1F1b3RhKTsKQEAgLTY2MCw3ICs2NjAsNyBAQCBI
UkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdEaWRJbnZhbGlkYXRlCiBIUkVTVUxUIFVJRGVsZWdh
dGU6OnNldFN0YXR1c1RleHQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIgdGV4dCkKIHsg
CiAgICAgaWYgKGdUZXN0UnVubmVyLT5kdW1wU3RhdHVzQ2FsbGJhY2tzKCkpCi0gICAgICAgIHBy
aW50ZigiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNUZXh0OiVTXG4iLCB0
ZXh0ID8gdGV4dCA6IEwiIik7CisgICAgICAgIGZwcmludGYoZmlsZVN0ZG91dCwgIlVJIERFTEVH
QVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4dDolU1xuIiwgdGV4dCA/IHRleHQgOiBM
IiIpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC02OTMsNiArNjkzLDYgQEAgSFJFU1VMVCBV
SURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JHZW9sbwogCiBIUkVTVUxUIFVJRGVsZWdhdGU6OmRp
ZFByZXNzTWlzc2luZ1BsdWdpbkJ1dHRvbihfSW5fb3B0XyBJRE9NRWxlbWVudCogLyplbGVtZW50
Ki8pCiB7Ci0gICAgcHJpbnRmKCJNSVNTSU5HIFBMVUdJTiBCVVRUT04gUFJFU1NFRFxuIik7Cisg
ICAgZnByaW50ZihmaWxlU3Rkb3V0LCAiTUlTU0lORyBQTFVHSU4gQlVUVE9OIFBSRVNTRURcbiIp
OwogICAgIHJldHVybiBTX09LOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298338</attachid>
            <date>2017-01-09 02:56:07 -0800</date>
            <delta_ts>2017-01-09 04:37:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166760-20170109025431.patch</filename>
            <type>text/plain</type>
            <size>56727</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMDQ5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExMiBAQAorMjAxNy0wMS0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dpbl0gU29tZSB0ZXN0cyBhcmUgZmxha3kgYmVjYXVzZSBjZXJ0YWlu
IERMTHMgYXJlIHdyaXRpbmcgdG8gc3Rkb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSB0ZXN0cyBhcmUgZmxha3kgYmVjYXVzZSBjZXJ0YWlu
IERMTHMgYXJlIHdyaXRpbmcgdG8gc3Rkb3V0LCBnaXZpbmcgaW5jb3JyZWN0IHRlc3QgcmVzdWx0
cy4KKyAgICAgICAgV2UgY2FuIHdvcmsgYXJvdW5kIHRoYXQgYnkgZHVwbGljYXRpbmcgYW5kIHJl
ZGlyZWN0aW5nIHN0ZG91dC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1
cHBvcnQuY3BwOgorICAgICAgICAoZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhw
ZWN0ZWQpOgorICAgICAgICAocHJpbnRQTkcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChsb2dFdmVudFByb2Mp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJl
c2VudGVyLmNwcDoKKyAgICAgICAgKERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OnNo
b3dEZXNrdG9wTm90aWZpY2F0aW9uKToKKyAgICAgICAgKERSVERlc2t0b3BOb3RpZmljYXRpb25Q
cmVzZW50ZXI6OmNhbmNlbERlc2t0b3BOb3RpZmljYXRpb24pOgorICAgICAgICAoRFJURGVza3Rv
cE5vdGlmaWNhdGlvblByZXNlbnRlcjo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAg
IChkdW1wRnJhbWVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChkdW1wSGlzdG9yeUl0ZW0pOgor
ICAgICAgICAoZHVtcEJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChkdW1wKToKKyAgICAgICAg
KHJ1blRlc3QpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlV2luLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0VkaXRp
bmdEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEJlZ2luRWRp
dGluZ0luRE9NUmFuZ2UpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRFbmRFZGl0
aW5nSW5ET01SYW5nZSk6CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2VydE5v
ZGUpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAg
ICAgKEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkRGVsZXRlRE9NUmFuZ2UpOgorICAgICAgICAoRWRp
dGluZ0RlbGVnYXRlOjpzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlKToKKyAgICAgICAgKEVk
aXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQXBwbHlTdHlsZSk6CisgICAgICAgIChFZGl0aW5nRGVsZWdh
dGU6OnNob3VsZENoYW5nZVR5cGluZ1N0eWxlKToKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6
ZG9QbGF0Zm9ybUNvbW1hbmQpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlk
QmVnaW5FZGl0aW5nKToKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZENoYW5n
ZSk6CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRFbmRFZGl0aW5nKToKKyAg
ICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZENoYW5nZVR5cGluZ1N0eWxlKToKKyAg
ICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAg
KEZyYW1lTG9hZERlbGVnYXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdh
dGU6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IpOgorICAgICAgICAoRnJhbWVMb2Fk
RGVsZWdhdGU6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChGcmFtZUxvYWREZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZhaWxM
b2FkV2l0aEVycm9yKToKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjp3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkwpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZENhbmNl
bENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6Ondp
bmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSk6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdh
dGU6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKToKKyAgICAgICAgKEZyYW1lTG9hZERl
bGVnYXRlOjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdh
dGU6OndlYlZpZXdQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmNwcDoKKyAgICAgICAgKEhpc3RvcnlEZWxl
Z2F0ZTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoSGlzdG9yeURl
bGVnYXRlOjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMKToKKyAgICAgICAgKEhpc3Rv
cnlEZWxlZ2F0ZTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0RnJvbVVSTCk6CisgICAgICAgIChI
aXN0b3J5RGVsZWdhdGU6OnVwZGF0ZUhpc3RvcnlUaXRsZSk6CisgICAgICAgIChIaXN0b3J5RGVs
ZWdhdGU6OnBvcHVsYXRlVmlzaXRlZExpbmtzRm9yV2ViVmlldyk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFBvbGljeURlbGVnYXRl
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFBvbGljeURlbGVn
YXRlOjp1bmFibGVUb0ltcGxlbWVudFBvbGljeVdpdGhFcnJvcik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291cmNl
TG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVs
ZWdhdGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChSZXNv
dXJjZUxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFJlc291cmNl
TG9hZERlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2UpOgorICAgICAgICAo
UmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6CisgICAgICAgIChUZXN0UnVu
bmVyOjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRo
QXBwbGljYXRpb25DYWNoZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0YWJh
c2VJZGxlSW50ZXJ2YWwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9y
YWdlRGF0YWJhc2VzKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5hbWUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y29weUVuY29kZWRIb3N0TmFtZSk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk6
CisgICAgICAgIChUZXN0UnVubmVyOjppc0dlb2xvY2F0aW9uUHJvdmlkZXJBY3RpdmUpOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjppc0Nv
bW1hbmRFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmF1dGhlbnRpY2F0ZVNlc3Npb24p
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OmZvY3VzV2ViVmlldyk6CisgICAgICAgIChUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlv
blBlcm1pc3Npb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGljayk6CisgICAgICAgIChUZXN0UnVubmVyOjppbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVi
b2FyZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZSk6Cisg
ICAgICAgIChVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2Up
OgorICAgICAgICAoVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFBy
b21wdCk6CisgICAgICAgIChVSURlbGVnYXRlOjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxX
aXRoTWVzc2FnZSk6CisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6CisgICAgICAgIChVSURlbGVnYXRlOjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAg
ICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChVSURlbGVnYXRlOjpk
aWRQcmVzc01pc3NpbmdQbHVnaW5CdXR0b24pOgorCiAyMDE3LTAxLTA3ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHNldHRpbmcgdG8gY3Jl
YXRlIGVkaXRhYmxlIE1pbmlCcm93c2VyIHdpbmRvd3MgYnkgZGVmYXVsdApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAJKHJldmlzaW9uIDIxMDQ5OCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0MywxMCBAQAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnRDYWlyby5oIgog
I2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oV0lOKQorI2RlZmluZSB0ZXN0UmVzdWx0IHN0ZG91dAor
I2VuZGlmCisKIHZvaWQgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQo
Y29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkSGFzaCkKIHsKICAgICBSZWZQdHI8Qml0bWFwQ29u
dGV4dD4gY29udGV4dDsKQEAgLTU3LDE0ICs2MSwxNCBAQCB2b2lkIGR1bXBXZWJWaWV3QXNQaXhl
bHNBbmRDb21wYXJlV2l0aEV4CiAgICAgLy8gQ29tcHV0ZSB0aGUgaGFzaCBvZiB0aGUgYml0bWFw
IGNvbnRleHQgcGl4ZWxzCiAgICAgY2hhciBhY3R1YWxIYXNoWzMzXTsKICAgICBjb21wdXRlTUQ1
SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoY29udGV4dC5nZXQoKSwgYWN0dWFsSGFzaCk7Ci0g
ICAgcHJpbnRmKCJcbkFjdHVhbEhhc2g6ICVzXG4iLCBhY3R1YWxIYXNoKTsgLy8gRklYTUU6IE5v
IG5lZWQgZm9yIHRoZSBsZWFkaW5nIG5ld2xpbmUuCisgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAi
XG5BY3R1YWxIYXNoOiAlc1xuIiwgYWN0dWFsSGFzaCk7IC8vIEZJWE1FOiBObyBuZWVkIGZvciB0
aGUgbGVhZGluZyBuZXdsaW5lLgogCiAgICAgLy8gQ2hlY2sgdGhlIGNvbXB1dGVkIGhhc2ggYWdh
aW5zdCB0aGUgZXhwZWN0ZWQgb25lIGFuZCBkdW1wIGltYWdlIG9uIG1pc21hdGNoCiAgICAgYm9v
bCBkdW1wSW1hZ2UgPSB0cnVlOwogICAgIGlmIChleHBlY3RlZEhhc2gubGVuZ3RoKCkgPiAwKSB7
CiAgICAgICAgIEFTU0VSVChleHBlY3RlZEhhc2gubGVuZ3RoKCkgPT0gMzIpOwogCi0gICAgICAg
IHByaW50ZigiXG5FeHBlY3RlZEhhc2g6ICVzXG4iLCBleHBlY3RlZEhhc2guY19zdHIoKSk7IC8v
IEZJWE1FOiBObyBuZWVkIGZvciB0aGUgbGVhZGluZyBuZXdsaW5lLgorICAgICAgICBmcHJpbnRm
KHRlc3RSZXN1bHQsICJcbkV4cGVjdGVkSGFzaDogJXNcbiIsIGV4cGVjdGVkSGFzaC5jX3N0cigp
KTsgLy8gRklYTUU6IE5vIG5lZWQgZm9yIHRoZSBsZWFkaW5nIG5ld2xpbmUuCiAgICAgICAgIAog
ICAgICAgICBpZiAoZXhwZWN0ZWRIYXNoID09IGFjdHVhbEhhc2gpIC8vIEZJWE1FOiBkbyBjYXNl
IGluc2Vuc2l0aXZlIGNvbXBhcmUKICAgICAgICAgICAgIGR1bXBJbWFnZSA9IGZhbHNlOwpAQCAt
MTE0LDIwICsxMTgsMjAgQEAgdm9pZCBwcmludFBORyhjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LAogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBieXRlc1RvQWRkOwogICAgIGNvbnZlcnRDaGVj
a3N1bVRvUE5HQ29tbWVudChjaGVja3N1bSwgYnl0ZXNUb0FkZCk7CiAKLSAgICBwcmludGYoIkNv
bnRlbnQtVHlwZTogJXNcbiIsICJpbWFnZS9wbmciKTsKLSAgICBwcmludGYoIkNvbnRlbnQtTGVu
Z3RoOiAlbHVcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGRhdGFMZW5ndGggKyBieXRl
c1RvQWRkLnNpemUoKSkpOworICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNvbnRlbnQtVHlwZTog
aW1hZ2UvcG5nXG4iKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJDb250ZW50LUxlbmd0aDog
JWx1XG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihkYXRhTGVuZ3RoICsgYnl0ZXNUb0Fk
ZC5zaXplKCkpKTsKIAogICAgIHNpemVfdCBpbnNlcnRPZmZzZXQgPSBvZmZzZXRBZnRlcklIRFJD
aHVuayhkYXRhLCBkYXRhTGVuZ3RoKTsKIAotICAgIGZ3cml0ZShkYXRhLCAxLCBpbnNlcnRPZmZz
ZXQsIHN0ZG91dCk7Ci0gICAgZndyaXRlKGJ5dGVzVG9BZGQuZGF0YSgpLCAxLCBieXRlc1RvQWRk
LnNpemUoKSwgc3Rkb3V0KTsKKyAgICBmd3JpdGUoZGF0YSwgMSwgaW5zZXJ0T2Zmc2V0LCB0ZXN0
UmVzdWx0KTsKKyAgICBmd3JpdGUoYnl0ZXNUb0FkZC5kYXRhKCksIDEsIGJ5dGVzVG9BZGQuc2l6
ZSgpLCB0ZXN0UmVzdWx0KTsKIAogICAgIGNvbnN0IHNpemVfdCBieXRlc1RvV3JpdGVJbk9uZUNo
dW5rID0gMSA8PCAxNTsKICAgICBkYXRhICs9IGluc2VydE9mZnNldDsKICAgICBzaXplX3QgZGF0
YVJlbWFpbmluZ1RvV3JpdGUgPSBkYXRhTGVuZ3RoIC0gaW5zZXJ0T2Zmc2V0OwogICAgIHdoaWxl
IChkYXRhUmVtYWluaW5nVG9Xcml0ZSkgewogICAgICAgICBzaXplX3QgYnl0ZXNUb1dyaXRlSW5U
aGlzQ2h1bmsgPSBzdGQ6Om1pbihkYXRhUmVtYWluaW5nVG9Xcml0ZSwgYnl0ZXNUb1dyaXRlSW5P
bmVDaHVuayk7Ci0gICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBmd3JpdGUoZGF0YSwgMSwg
Ynl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmssIHN0ZG91dCk7CisgICAgICAgIHNpemVfdCBieXRlc1dy
aXR0ZW4gPSBmd3JpdGUoZGF0YSwgMSwgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmssIHRlc3RSZXN1
bHQpOwogICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5r
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRhdGFSZW1haW5pbmdUb1dyaXRlIC09IGJ5
dGVzV3JpdHRlbjsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gMjEwNDk4KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDExICsxOTIsMTEgQEAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgbG9n
RXZlbnRQcm9jKEhXSU5FVgogCiAgICAgc3dpdGNoIChldmVudCkgewogICAgICAgICBjYXNlIEVW
RU5UX09CSkVDVF9GT0NVUzoKLSAgICAgICAgICAgIHByaW50ZigiUmVjZWl2ZWQgZm9jdXMgZXZl
bnQgZm9yIG9iamVjdCAnJVMnLlxuIiwgbmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIGZwcmlu
dGYodGVzdFJlc3VsdCwgIlJlY2VpdmVkIGZvY3VzIGV2ZW50IGZvciBvYmplY3QgJyVTJy5cbiIs
IG5hbWUuY19zdHIoKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEVWRU5U
X09CSkVDVF9TRUxFQ1RJT046Ci0gICAgICAgICAgICBwcmludGYoIlJlY2VpdmVkIHNlbGVjdGlv
biBldmVudCBmb3Igb2JqZWN0ICclUycuXG4iLCBuYW1lLmNfc3RyKCkpOworICAgICAgICAgICAg
ZnByaW50Zih0ZXN0UmVzdWx0LCAiUmVjZWl2ZWQgc2VsZWN0aW9uIGV2ZW50IGZvciBvYmplY3Qg
JyVTJy5cbiIsIG5hbWUuY19zdHIoKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEVWRU5UX09CSkVDVF9WQUxVRUNIQU5HRTogewpAQCAtMjA1LDE2ICsyMDUsMTYgQEAgc3Rh
dGljIHZvaWQgQ0FMTEJBQ0sgbG9nRXZlbnRQcm9jKEhXSU5FVgogICAgICAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChocikpOwogICAgICAgICAgICAgd3N0cmluZyB2YWx1ZSh2YWx1ZUJTVFIsIHZh
bHVlQlNUUi5sZW5ndGgoKSk7CiAKLSAgICAgICAgICAgIHByaW50ZigiUmVjZWl2ZWQgdmFsdWUg
Y2hhbmdlIGV2ZW50IGZvciBvYmplY3QgJyVTJywgdmFsdWUgJyVTJy5cbiIsIG5hbWUuY19zdHIo
KSwgdmFsdWUuY19zdHIoKSk7CisgICAgICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJSZWNl
aXZlZCB2YWx1ZSBjaGFuZ2UgZXZlbnQgZm9yIG9iamVjdCAnJVMnLCB2YWx1ZSAnJVMnLlxuIiwg
bmFtZS5jX3N0cigpLCB2YWx1ZS5jX3N0cigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBFVkVOVF9TWVNURU1fU0NST0xMSU5HU1RBUlQ6Ci0gICAgICAg
ICAgICBwcmludGYoIlJlY2VpdmVkIHNjcm9sbGluZyBzdGFydCBldmVudCBmb3Igb2JqZWN0ICcl
UycuXG4iLCBuYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAi
UmVjZWl2ZWQgc2Nyb2xsaW5nIHN0YXJ0IGV2ZW50IGZvciBvYmplY3QgJyVTJy5cbiIsIG5hbWUu
Y19zdHIoKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcHJpbnRmKCJSZWNlaXZlZCB1bmtub3duIGV2ZW50IGZvciBvYmplY3QgJyVTJy5cbiIs
IG5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJSZWNlaXZl
ZCB1bmtub3duIGV2ZW50IGZvciBvYmplY3QgJyVTJy5cbiIsIG5hbWUuY19zdHIoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICB9CiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCShy
ZXZpc2lvbiAyMTA0OTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5v
dGlmaWNhdGlvblByZXNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEyICs4MCwxMiBA
QCBIUkVTVUxUIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6CiAKICAgICBpZiAoU1VD
Q0VFREVEKG5vdGlmaWNhdGlvbi0+aXNIVE1MKCZodG1sKSkgJiYgaHRtbCkgewogICAgICAgICBu
b3RpZmljYXRpb24tPmNvbnRlbnRzVVJMKCZ1cmwuR2V0QlNUUigpKTsgICAgCi0gICAgICAgIHBy
aW50ZigiREVTS1RPUCBOT1RJRklDQVRJT046IGNvbnRlbnRzIGF0ICVTXG4iLCBzdGF0aWNfY2Fz
dDx3Y2hhcl90Kj4odXJsKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkRFU0tUT1Ag
Tk9USUZJQ0FUSU9OOiBjb250ZW50cyBhdCAlU1xuIiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHVy
bCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG5vdGlmaWNhdGlvbi0+aWNvblVSTCgmdXJsLkdl
dEJTVFIoKSk7CiAgICAgICAgIG5vdGlmaWNhdGlvbi0+dGl0bGUoJnRpdGxlLkdldEJTVFIoKSk7
CiAgICAgICAgIG5vdGlmaWNhdGlvbi0+dGV4dCgmdGV4dC5HZXRCU1RSKCkpOwotICAgICAgICBw
cmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OOiBpY29uICVTLCB0aXRsZSAlUywgdGV4dCAlU1xu
Iiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHVybCksIHN0YXRpY19jYXN0PHdjaGFyX3QqPih0aXRs
ZSksIHN0YXRpY19jYXN0PHdjaGFyX3QqPih0ZXh0KSk7CisgICAgICAgIGZwcmludGYodGVzdFJl
c3VsdCwgIkRFU0tUT1AgTk9USUZJQ0FUSU9OOiBpY29uICVTLCB0aXRsZSAlUywgdGV4dCAlU1xu
Iiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHVybCksIHN0YXRpY19jYXN0PHdjaGFyX3QqPih0aXRs
ZSksIHN0YXRpY19jYXN0PHdjaGFyX3QqPih0ZXh0KSk7CiAgICAgfQogCiAgICAgLy8gSW4gdGhp
cyBzdHViIGltcGxlbWVudGF0aW9uLCB0aGUgbm90aWZpY2F0aW9uIGlzIGRpc3BsYXllZCBpbW1l
ZGlhdGVseTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBIUkVTVUxUIERSVERlc2t0b3BOb3RpZmljYXRp
b25QcmVzZW50ZXI6CiAgICAgZWxzZQogICAgICAgICBub3RpZmljYXRpb24tPnRpdGxlKCZpZGVu
dGlmaWVyLkdldEJTVFIoKSk7CiAKLSAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIENM
T1NFRDogJVNcbiIsIHN0YXRpY19jYXN0PHdjaGFyX3QqPihpZGVudGlmaWVyKSk7CisgICAgZnBy
aW50Zih0ZXN0UmVzdWx0LCAiREVTS1RPUCBOT1RJRklDQVRJT04gQ0xPU0VEOiAlU1xuIiwgc3Rh
dGljX2Nhc3Q8d2NoYXJfdCo+KGlkZW50aWZpZXIpKTsKICAgICBub3RpZmljYXRpb24tPm5vdGlm
eUNsb3NlKGZhbHNlKTsKIAogICAgIHJldHVybiBTX09LOwpAQCAtMTQxLDYgKzE0MSw2IEBAIEhS
RVNVTFQgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjoKIAogSFJFU1VMVCBEUlREZXNr
dG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbihf
SW5fIEJTVFIgb3JpZ2luKQogewotICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT04gUEVS
TUlTU0lPTiBSRVFVRVNURUQ6ICVTXG4iLCBvcmlnaW4gPyBvcmlnaW4gOiBMIiIpOworICAgIGZw
cmludGYodGVzdFJlc3VsdCwgIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBFUk1JU1NJT04gUkVRVUVT
VEVEOiAlU1xuIiwgb3JpZ2luID8gb3JpZ2luIDogTCIiKTsKICAgICByZXR1cm4gU19PSzsKIH0K
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2
aXNpb24gMjEwNDk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJXb3JrUXVl
dWVJdGVtLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAKKyNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJ
Lmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxj
c3RyaW5nPgpAQCAtNTIsMTUgKzU2LDEzIEBACiAjaW5jbHVkZSA8c2hsb2JqLmg+CiAjaW5jbHVk
ZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHRjaGFyLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgotI2luY2x1ZGUgPFdlYktp
dC9XZWJLaXRDT01BUEkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVz
UHJpdi5oPgpAQCAtMTIxLDYgKzEyMyw4IEBAIFJlZlB0cjxUZXN0UnVubmVyPiBnVGVzdFJ1bm5l
cjsKIAogVUlOVF9QVFIgd2FpdFRvRHVtcFdhdGNoZG9nID0gMDsKIAorRklMRSogdGVzdFJlc3Vs
dCA9IG51bGxwdHI7CisKIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24o
Q0ZTdHJpbmdSZWYgdXJsKQogewogICAgIHBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9u
ID0gdXJsOwpAQCAtNDA1LDkgKzQwOSw5IEBAIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24o
SVdlYkZyYW1lKgogICAgICAgICAgICAgX2JzdHJfdCBuYW1lOwogICAgICAgICAgICAgaWYgKEZB
SUxFRChmcmFtZS0+bmFtZSgmbmFtZS5HZXRCU1RSKCkpKSkKICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBwcmludGYoImZyYW1lICclUycgIiwgc3RhdGljX2Nhc3Q8d2NoYXJf
dCo+KG5hbWUpKTsKKyAgICAgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgImZyYW1lICclUycg
Iiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KG5hbWUpKTsKICAgICAgICAgfQotICAgICAgICBwcmlu
dGYoInNjcm9sbGVkIHRvICUuZiwlLmZcbiIsIChkb3VibGUpc2Nyb2xsUG9zaXRpb24uY3gsIChk
b3VibGUpc2Nyb2xsUG9zaXRpb24uY3kpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJz
Y3JvbGxlZCB0byAlLmYsJS5mXG4iLCAoZG91YmxlKXNjcm9sbFBvc2l0aW9uLmN4LCAoZG91Ymxl
KXNjcm9sbFBvc2l0aW9uLmN5KTsKICAgICB9CiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVt
cENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSkgewpAQCAtNTA2LDExICs1MTAsMTEgQEAgc3Rh
dGljIHZvaWQgZHVtcEhpc3RvcnlJdGVtKElXZWJIaXN0b3J5SQogCiAgICAgaW50IHN0YXJ0ID0g
MDsKICAgICBpZiAoY3VycmVudCkgewotICAgICAgICBwcmludGYoImN1cnItPiIpOworICAgICAg
ICBmcHJpbnRmKHRlc3RSZXN1bHQsICJjdXJyLT4iKTsKICAgICAgICAgc3RhcnQgPSA2OwogICAg
IH0KICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBpbmRlbnQ7IGkrKykKLSAgICAgICAgcHV0
Y2hhcignICcpOworICAgICAgICBmcHV0YygnICcsIHRlc3RSZXN1bHQpOwogCiAgICAgX2JzdHJf
dCB1cmw7CiAgICAgaWYgKEZBSUxFRChpdGVtLT5VUkxTdHJpbmcoJnVybC5HZXRCU1RSKCkpKSkK
QEAgLTUzMSw3ICs1MzUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wSGlzdG9yeUl0ZW0oSVdlYkhpc3Rv
cnlJCiAgICAgICAgIHVybCA9IF9ic3RyX3QoTCIoZmlsZSB0ZXN0KToiKSArIF9ic3RyX3Qoc3Rh
cnQpOwogICAgIH0KIAotICAgIHByaW50ZigiJVMiLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4odXJs
KSk7CisgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJVMiLCBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4o
dXJsKSk7CiAKICAgICBDT01QdHI8SVdlYkhpc3RvcnlJdGVtUHJpdmF0ZT4gaXRlbVByaXZhdGU7
CiAgICAgaWYgKEZBSUxFRChpdGVtLT5RdWVyeUludGVyZmFjZSgmaXRlbVByaXZhdGUpKSkKQEAg
LTU0MSwxMyArNTQ1LDEzIEBAIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRlbShJV2ViSGlzdG9y
eUkKICAgICBpZiAoRkFJTEVEKGl0ZW1Qcml2YXRlLT50YXJnZXQoJnRhcmdldC5HZXRCU1RSKCkp
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICh0YXJnZXQubGVuZ3RoKCkpCi0gICAgICAgIHBy
aW50ZigiIChpbiBmcmFtZSBcIiVTXCIpIiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHRhcmdldCkp
OworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIgKGluIGZyYW1lIFwiJVNcIikiLCBzdGF0
aWNfY2FzdDx3Y2hhcl90Kj4odGFyZ2V0KSk7CiAgICAgQk9PTCBpc1RhcmdldEl0ZW0gPSBGQUxT
RTsKICAgICBpZiAoRkFJTEVEKGl0ZW1Qcml2YXRlLT5pc1RhcmdldEl0ZW0oJmlzVGFyZ2V0SXRl
bSkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzVGFyZ2V0SXRlbSkKLSAgICAgICAgcHJp
bnRmKCIgICoqbmF2IHRhcmdldCoqIik7Ci0gICAgcHV0Y2hhcignXG4nKTsKKyAgICAgICAgZnBy
aW50Zih0ZXN0UmVzdWx0LCAiICAqKm5hdiB0YXJnZXQqKiIpOworICAgIGZwdXRjKCdcbicsIHRl
c3RSZXN1bHQpOwogCiAgICAgdW5zaWduZWQga2lkc0NvdW50OwogICAgIFNBRkVBUlJBWSogYXJy
UHRyOwpAQCAtNTk1LDcgKzU5OSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3Qo
SVdlYlZpZXcKIHsKICAgICBBU1NFUlQod2ViVmlldyk7CiAKLSAgICBwcmludGYoIlxuPT09PT09
PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT1cbiIpOworICAgIGZwcmlu
dGYodGVzdFJlc3VsdCwgIlxuPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09
PT09PT09PT1cbiIpOwogCiAgICAgQ09NUHRyPElXZWJCYWNrRm9yd2FyZExpc3Q+IGJmTGlzdDsK
ICAgICBpZiAoRkFJTEVEKHdlYlZpZXctPmJhY2tGb3J3YXJkTGlzdCgmYmZMaXN0KSkpCkBAIC02
NTIsNyArNjU2LDcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdChJV2ViVmlldwog
ICAgICAgICBkdW1wSGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW1Ub1ByaW50LmdldCgpLCA4LCBpID09
IGN1cnJlbnRJdGVtSW5kZXgpOwogICAgIH0KIAotICAgIHByaW50ZigiPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworICAgIGZwcmludGYodGVzdFJl
c3VsdCwgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4i
KTsKIH0KIAogc3RhdGljIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvckFsbFdpbmRvd3MoKQpA
QCAtNzExLDcgKzcxNSw3IEBAIHZvaWQgZHVtcCgpCiAgICAgICAgICAgICBpbnQgYnVmZmVyU2l6
ZSA9IDo6V2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCByZXN1bHRTdHJpbmcsIHN0cmlu
Z0xlbmd0aCwgMCwgMCwgMCwgMCk7CiAgICAgICAgICAgICBjaGFyKiBidWZmZXIgPSAoY2hhciop
bWFsbG9jKGJ1ZmZlclNpemUgKyAxKTsKICAgICAgICAgICAgIDo6V2lkZUNoYXJUb011bHRpQnl0
ZShDUF9VVEY4LCAwLCByZXN1bHRTdHJpbmcsIHN0cmluZ0xlbmd0aCwgYnVmZmVyLCBidWZmZXJT
aXplICsgMSwgMCwgMCk7Ci0gICAgICAgICAgICBmd3JpdGUoYnVmZmVyLCAxLCBidWZmZXJTaXpl
LCBzdGRvdXQpOworICAgICAgICAgICAgZndyaXRlKGJ1ZmZlciwgMSwgYnVmZmVyU2l6ZSwgdGVz
dFJlc3VsdCk7CiAgICAgICAgICAgICBmcmVlKGJ1ZmZlcik7CiAKICAgICAgICAgICAgIGlmICgh
OjpnVGVzdFJ1bm5lci0+ZHVtcEFzVGV4dCgpICYmICE6OmdUZXN0UnVubmVyLT5kdW1wRE9NQXNX
ZWJBcmNoaXZlKCkgJiYgITo6Z1Rlc3RSdW5uZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSAm
JiAhOjpnVGVzdFJ1bm5lci0+ZHVtcEFzQXVkaW8oKSkKQEAgLTcyMCwxMCArNzI0LDEwIEBAIHZv
aWQgZHVtcCgpCiAgICAgICAgICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEJhY2tGb3J3YXJk
TGlzdCgpKQogICAgICAgICAgICAgICAgIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JBbGxXaW5kb3dz
KCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJpbnRmKCJFUlJPUjogbmlsIHJlc3Vs
dCBmcm9tICVzIiwgOjpnVGVzdFJ1bm5lci0+ZHVtcEFzVGV4dCgpID8gIklET01FbGVtZW50Ojpp
bm5lclRleHQiIDogIklGcmFtZVZpZXdQcml2YXRlOjpyZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJl
c2VudGF0aW9uIik7CisgICAgICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogbmls
IHJlc3VsdCBmcm9tICVzIiwgOjpnVGVzdFJ1bm5lci0+ZHVtcEFzVGV4dCgpID8gIklET01FbGVt
ZW50Ojppbm5lclRleHQiIDogIklGcmFtZVZpZXdQcml2YXRlOjpyZW5kZXJUcmVlQXNFeHRlcm5h
bFJlcHJlc2VudGF0aW9uIik7CiAKICAgICAgICAgaWYgKHByaW50U2VwYXJhdG9ycykKLSAgICAg
ICAgICAgIHB1dHMoIiNFT0YiKTsgLy8gdGVybWluYXRlIHRoZSBjb250ZW50IGJsb2NrCisgICAg
ICAgICAgICBmcHV0cygiI0VPRlxuIiwgdGVzdFJlc3VsdCk7IC8vIHRlcm1pbmF0ZSB0aGUgY29u
dGVudCBibG9jawogICAgIH0KIAogICAgIGlmIChkdW1wUGl4ZWxzRm9yQ3VycmVudFRlc3QgJiYg
OjpnVGVzdFJ1bm5lci0+Z2VuZXJhdGVQaXhlbFJlc3VsdHMoKSkgewpAQCAtNzMxLDggKzczNSw4
IEBAIHZvaWQgZHVtcCgpCiAgICAgICAgIGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0
aEV4cGVjdGVkKGdUZXN0UnVubmVyLT5leHBlY3RlZFBpeGVsSGFzaCgpKTsKICAgICB9CiAKLSAg
ICBwdXRzKCIjRU9GIik7ICAgLy8gdGVybWluYXRlIHRoZSAocG9zc2libHkgZW1wdHkpIHBpeGVs
cyBibG9jawotICAgIGZmbHVzaChzdGRvdXQpOworICAgIGZwdXRzKCIjRU9GXG4iLCB0ZXN0UmVz
dWx0KTsgLy8gdGVybWluYXRlIHRoZSAocG9zc2libHkgZW1wdHkpIHBpeGVscyBibG9jaworICAg
IGZmbHVzaCh0ZXN0UmVzdWx0KTsKIAogZmFpbDoKICAgICAvLyBUaGlzIHdpbGwgZXhpdCBmcm9t
IG91ciBtZXNzYWdlIGxvb3AuCkBAIC0xMTEwLDYgKzExMTQsMTIgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIF9ic3RyX3QgdXJsQlN0cihyZWludGVycHJl
dF9jYXN0PHdjaGFyX3QqPihidWZmZXIuZGF0YSgpKSk7CiAgICAgQVNTRVJUKHVybEJTdHIubGVu
Z3RoKCkgPT0gbGVuZ3RoKTsKIAorICAgIC8vIENoZWNrIHRoYXQgdGVzdCBoYXMgbm90IGFscmVh
ZHkgcnVuCisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiB0ZXN0VXJsczsKKyAgICBpZiAodGVz
dFVybHMuY29udGFpbnMoU3RyaW5nKGlucHV0TGluZS5jX3N0cigpKSkpCisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiVGVzdCBoYXMgYWxyZWFkeSBydW4gXCIlc1wiXG4iLCBpbnB1dExpbmUuY19z
dHIoKSk7CisgICAgdGVzdFVybHMuYWRkKFN0cmluZyhpbnB1dExpbmUuY19zdHIoKSkpOworCiAg
ICAgQ0ZJbmRleCBtYXhpbXVtVVJMTGVuZ3RoQXNVVEY4ID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6
ZUZvckVuY29kaW5nKGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSArIDE7CiAgICAgVmVj
dG9yPGNoYXI+IHRlc3RVUkwobWF4aW11bVVSTExlbmd0aEFzVVRGOCArIDEsIDApOwogICAgIENG
U3RyaW5nR2V0Q1N0cmluZyhzdHIsIHRlc3RVUkwuZGF0YSgpLCBtYXhpbXVtVVJMTGVuZ3RoQXNV
VEY4LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwpAQCAtMTQ1NSw2ICsxNDY1LDE0IEBAIGludCBt
YWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgX3NldG1vZGUoMSwgX09fQklO
QVJZKTsKICAgICBfc2V0bW9kZSgyLCBfT19CSU5BUlkpOwogCisgICAgLy8gU29tZSB0ZXN0cyBh
cmUgZmxha3kgYmVjYXVzZSBjZXJ0YWluIERMTHMgYXJlIHdyaXRpbmcgdG8gc3Rkb3V0LCBnaXZp
bmcgaW5jb3JyZWN0IHRlc3QgcmVzdWx0cy4KKyAgICAvLyBXZSB3b3JrIGFyb3VuZCB0aGF0IGhl
cmUgYnkgZHVwbGljYXRpbmcgYW5kIHJlZGlyZWN0aW5nIHN0ZG91dC4KKyAgICBpbnQgZmRTdGRv
dXQgPSBfZHVwKDEpOworICAgIF9zZXRtb2RlKGZkU3Rkb3V0LCBfT19CSU5BUlkpOworICAgIHRl
c3RSZXN1bHQgPSBmZG9wZW4oZmRTdGRvdXQsICJhK2IiKTsKKyAgICAvLyBSZWRpcmVjdCBzdGRv
dXQgdG8gc3RkZXJyLgorICAgIGludCByZXN1bHQgPSBfZHVwMihfZmlsZW5vKHN0ZGVyciksIDEp
OworCiAgICAgaW5pdGlhbGl6ZSgpOwogCiAgICAgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1
ZXNGb3JUZXN0aW5nKCk7CkBAIC0xNDg3LDcgKzE1MDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y29uc3QgY2hhciogYXJndltdKQogICAgICAgICBCT09MIHRocmVlRFRyYW5zZm9ybXNBdmFpbGFi
bGUgPSBGQUxTRTsKICNlbmRpZgogCi0gICAgICAgIHByaW50ZigiU3VwcG9ydGVkRmVhdHVyZXM6
JXMgJXNcbiIsIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUgPyAiQWNjZWxlcmF0ZWRD
b21wb3NpdGluZyIgOiAiIiwgdGhyZWVEVHJhbnNmb3Jtc0F2YWlsYWJsZSA/ICIzRFRyYW5zZm9y
bXMiIDogIiIpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJTdXBwb3J0ZWRGZWF0dXJl
czolcyAlc1xuIiwgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA/ICJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nIiA6ICIiLCB0aHJlZURUcmFuc2Zvcm1zQXZhaWxhYmxlID8gIjNEVHJhbnNm
b3JtcyIgOiAiIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlV2luLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlV2luLmgJKHJldmlzaW9uIDIxMDQ5OCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZVdpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIGV4dGVybiBQb2xpY3lEZWxlZ2F0ZSogcG9saWN5RGVs
ZWdhdGU7CiAKIGV4dGVybiBIV05EIHdlYlZpZXdXaW5kb3c7CiAKK2V4dGVybiBGSUxFKiB0ZXN0
UmVzdWx0OworCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9FZGl0aW5nRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9FZGl0aW5nRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyMTA0OTgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRWRpdGluZ0RlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMy
LDcgKzEzMiw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRCZWdpbkVkaXQKICAg
ICB9CiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAh
ZG9uZSkKLSAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRp
bmdJbkRPTVJhbmdlOiVzXG4iLCBkdW1wKHJhbmdlKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50
Zih0ZXN0UmVzdWx0LCAiRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01S
YW5nZTolc1xuIiwgZHVtcChyYW5nZSkuY19zdHIoKSk7CiAKICAgICAqcmVzdWx0ID0gbV9hY2Nl
cHRzRWRpdGluZzsKICAgICByZXR1cm4gU19PSzsKQEAgLTE0Niw3ICsxNDYsNyBAQCBIUkVTVUxU
IEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkRW5kRWRpdGluCiAgICAgfQogCiAgICAgaWYgKDo6Z1Rl
c3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgJiYgIWRvbmUpCi0gICAgICAgIHByaW50
ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6JXNcbiIsIGR1
bXAocmFuZ2UpLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTolc1xuIiwgZHVtcChyYW5nZSku
Y19zdHIoKSk7CiAKICAgICAqcmVzdWx0ID0gbV9hY2NlcHRzRWRpdGluZzsKICAgICByZXR1cm4g
U19PSzsKQEAgLTE3Miw3ICsxNzIsNyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxk
SW5zZXJ0Tm9kCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBpZiAoOjpnVGVzdFJ1
bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAhZG9uZSkKLSAgICAgICAgcHJpbnRmKCJF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiVzIHJlcGxhY2luZ0RPTVJhbmdlOiVz
IGdpdmVuQWN0aW9uOiVzXG4iLCBkdW1wUGF0aChub2RlKS5jX3N0cigpLCBkdW1wKHJhbmdlKS5j
X3N0cigpLCBpbnNlcnRBY3Rpb25TdHJpbmdbYWN0aW9uXSk7CisgICAgICAgIGZwcmludGYodGVz
dFJlc3VsdCwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6JXMgcmVwbGFjaW5n
RE9NUmFuZ2U6JXMgZ2l2ZW5BY3Rpb246JXNcbiIsIGR1bXBQYXRoKG5vZGUpLmNfc3RyKCksIGR1
bXAocmFuZ2UpLmNfc3RyKCksIGluc2VydEFjdGlvblN0cmluZ1thY3Rpb25dKTsKIAogICAgICpy
ZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJldHVybiBTX09LOwpAQCAtMTkzLDcgKzE5
Myw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRJbnNlcnRUZXgKIAogICAgIGlm
ICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAg
ICAgIF9ic3RyX3QgdGV4dEJzdHIodGV4dCk7Ci0gICAgICAgIHByaW50ZigiRURJVElORyBERUxF
R0FURTogc2hvdWxkSW5zZXJ0VGV4dDolcyByZXBsYWNpbmdET01SYW5nZTolcyBnaXZlbkFjdGlv
bjolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRleHRCc3RyKSwgZHVtcChyYW5nZSku
Y19zdHIoKSwgaW5zZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0pOworICAgICAgICBmcHJpbnRmKHRl
c3RSZXN1bHQsICJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiVzIHJlcGxhY2lu
Z0RPTVJhbmdlOiVzIGdpdmVuQWN0aW9uOiVzXG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
dGV4dEJzdHIpLCBkdW1wKHJhbmdlKS5jX3N0cigpLCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9u
XSk7CiAgICAgfQogCiAgICAgKnJlc3VsdCA9IG1fYWNjZXB0c0VkaXRpbmc7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZERlbGV0ZURPTQogICAgIH0K
IAogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25l
KQotICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdl
OiVzXG4iLCBkdW1wKHJhbmdlKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0
LCAiRURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6JXNcbiIsIGR1bXAocmFu
Z2UpLmNfc3RyKCkpOwogCiAgICAgKnJlc3VsdCA9IG1fYWNjZXB0c0VkaXRpbmc7CiAgICAgcmV0
dXJuIFNfT0s7CkBAIC0yMzIsNyArMjMyLDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNo
b3VsZENoYW5nZVNlbAogICAgIH07CiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRp
bmdDYWxsYmFja3MoKSAmJiAhZG9uZSkKLSAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiVzIHRvRE9NUmFuZ2U6JXMgYWZmaW5pdHk6
JXMgc3RpbGxTZWxlY3Rpbmc6JXNcbiIsIGR1bXAoY3VycmVudFJhbmdlKS5jX3N0cigpLCBkdW1w
KHByb3Bvc2VkUmFuZ2UpLmNfc3RyKCksIGFmZmluaXR5U3RyaW5nW3NlbGVjdGlvbkFmZmluaXR5
XSwgYm9vbHN0cmluZ1tzdGlsbFNlbGVjdGluZ10pOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1
bHQsICJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiVzIHRv
RE9NUmFuZ2U6JXMgYWZmaW5pdHk6JXMgc3RpbGxTZWxlY3Rpbmc6JXNcbiIsIGR1bXAoY3VycmVu
dFJhbmdlKS5jX3N0cigpLCBkdW1wKHByb3Bvc2VkUmFuZ2UpLmNfc3RyKCksIGFmZmluaXR5U3Ry
aW5nW3NlbGVjdGlvbkFmZmluaXR5XSwgYm9vbHN0cmluZ1tzdGlsbFNlbGVjdGluZ10pOwogCiAg
ICAgKnJlc3VsdCA9IG1fYWNjZXB0c0VkaXRpbmc7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0yNDYs
NyArMjQ2LDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEFwcGx5U3R5bAogICAg
IH0KIAogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFk
b25lKQotICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEFwcGx5U3R5bGU6
JXMgdG9FbGVtZW50c0luRE9NUmFuZ2U6JXNcbiIsICInc3R5bGUgZGVzY3JpcHRpb24nIi8qW1tz
dHlsZSBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10qLywgZHVtcChyYW5nZSkuY19zdHIoKSk7Cisg
ICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEFwcGx5
U3R5bGU6JXMgdG9FbGVtZW50c0luRE9NUmFuZ2U6JXNcbiIsICInc3R5bGUgZGVzY3JpcHRpb24n
Ii8qW1tzdHlsZSBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10qLywgZHVtcChyYW5nZSkuY19zdHIo
KSk7CiAKICAgICAqcmVzdWx0ID0gbV9hY2NlcHRzRWRpdGluZzsKICAgICByZXR1cm4gU19PSzsK
QEAgLTI2MSw3ICsyNjEsNyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQ2hhbmdl
VHlwCiAgICAgfQogCiAgICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkgJiYgIWRvbmUpCi0gICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlVHlwaW5nU3R5bGU6JXMgdG9TdHlsZTolc1xuIiwgIidjdXJyZW50U3R5bGUgZGVzY3JpcHRp
b24nIiwgIidwcm9wb3NlZFN0eWxlIGRlc2NyaXB0aW9uJyIpOworICAgICAgICBmcHJpbnRmKHRl
c3RSZXN1bHQsICJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VUeXBpbmdTdHlsZTolcyB0
b1N0eWxlOiVzXG4iLCAiJ2N1cnJlbnRTdHlsZSBkZXNjcmlwdGlvbiciLCAiJ3Byb3Bvc2VkU3R5
bGUgZGVzY3JpcHRpb24nIik7CiAKICAgICAqcmVzdWx0ID0gbV9hY2NlcHRzRWRpdGluZzsKICAg
ICByZXR1cm4gU19PSzsKQEAgLTI3Niw3ICsyNzYsNyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0
ZTo6ZG9QbGF0Zm9ybUNvbW1hCiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdD
YWxsYmFja3MoKSAmJiAhZG9uZSkgewogICAgICAgICBfYnN0cl90IGNvbW1hbmRCU1RSKGNvbW1h
bmQpOwotICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IGRvUGxhdGZvcm1Db21tYW5k
OiVzXG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oY29tbWFuZEJTVFIpKTsKKyAgICAgICAg
ZnByaW50Zih0ZXN0UmVzdWx0LCAiRURJVElORyBERUxFR0FURTogZG9QbGF0Zm9ybUNvbW1hbmQ6
JXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihjb21tYW5kQlNUUikpOwogICAgIH0KIAog
ICAgICpyZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwpAQCAtMjkxLDcgKzI5MSw3IEBAIEhSRVNV
TFQgRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQmVnaW4KICAgICBpZiAoOjpnVGVzdFJ1bm5l
ci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAhZG9uZSkgewogICAgICAgICBfYnN0cl90IG5h
bWU7CiAgICAgICAgIG5vdGlmaWNhdGlvbi0+bmFtZSgmbmFtZS5HZXRCU1RSKCkpOwotICAgICAg
ICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6JXNcbiIs
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7CisgICAgICAgIGZwcmludGYodGVzdFJl
c3VsdCwgIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6JXNcbiIsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBTX09LOwog
fQpAQCAtMzA0LDcgKzMwNCw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlk
Q2hhbmcKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAh
ZG9uZSkgewogICAgICAgICBfYnN0cl90IG5hbWU7CiAgICAgICAgIG5vdGlmaWNhdGlvbi0+bmFt
ZSgmbmFtZS5HZXRCU1RSKCkpOwotICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6JXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7Cisg
ICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6JXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7CiAgICAgfQogICAg
IHJldHVybiBTX09LOwogfQpAQCAtMzE3LDcgKzMxNyw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVn
YXRlOjp3ZWJWaWV3RGlkRW5kRWQKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdD
YWxsYmFja3MoKSAmJiAhZG9uZSkgewogICAgICAgICBfYnN0cl90IG5hbWU7CiAgICAgICAgIG5v
dGlmaWNhdGlvbi0+bmFtZSgmbmFtZS5HZXRCU1RSKCkpOwotICAgICAgICBwcmludGYoIkVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOiVzXG4iLCBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obmFtZSkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zMzAsNyArMzMwLDcg
QEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZwogICAgIGlmICg6OmdU
ZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9i
c3RyX3QgbmFtZTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7
Ci0gICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVR5cGlu
Z1N0eWxlOiVzXG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obmFtZSkpOworICAgICAgICBm
cHJpbnRmKHRlc3RSZXN1bHQsICJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlVHlw
aW5nU3R5bGU6JXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7CiAgICAgfQog
ICAgIHJldHVybiBTX09LOwogfQpAQCAtMzQzLDcgKzM0Myw3IEBAIEhSRVNVTFQgRWRpdGluZ0Rl
bGVnYXRlOjp3ZWJWaWV3RGlkQ2hhbmcKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRp
bmdDYWxsYmFja3MoKSAmJiAhZG9uZSkgewogICAgICAgICBfYnN0cl90IG5hbWU7CiAgICAgICAg
IG5vdGlmaWNhdGlvbi0+bmFtZSgmbmFtZS5HZXRCU1RSKCkpOwotICAgICAgICBwcmludGYoIkVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246JXNcbiIsIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246JXNcbiIsIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihuYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBTX09LOwogfQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCShy
ZXZpc2lvbiAyMTA0OTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVs
ZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgVUxPTkcgRnJhbWVM
b2FkRGVsZWdhdGU6OlJlbGVhc2UoKQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElX
ZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIiVzIC0gZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQoZnJhbWUpLmNfc3RyKCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIG9ubHkgc2V0IHRoaXMg
b25jZSBwZXIgdGVzdC4gIElmIGl0IGdldHMgY2xlYXJlZCwgYW5kIHRoZW4gc2V0IGFnYWluLCB3
ZSBtaWdodAogICAgIC8vIGVuZCB1cCBkb2luZyB0d28gZHVtcHMgZm9yIG9uZSB0ZXN0LgpAQCAt
MTM2LDcgKzEzNiw3IEBAIEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFN0YXJ0UHJvdmkK
IEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZy
YW1lKiBmcmFtZSkKIHsgCiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICIlcyAtIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
XG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CiAK
ICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTE0NCw3ICsxNDQsNyBAQCBIUkVTVUxUIEZyYW1lTG9h
ZERlbGVnYXRlOjpkaWRSZWNlaXZlU2VyCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyogLCBfSW5f
b3B0XyBJV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+
ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdl
TG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMg
LSBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZVxuIiwgZGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9
CkBAIC0xNTIsNyArMTUyLDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2hhbmdl
TG9jYQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdp
dGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJFcnJvciogZXJyb3IsIF9J
bl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVy
LT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChmcmFtZSkuY19zdHIoKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIiVzIC0g
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvclxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCkpOwogCiAgICAgbG9jYXRpb25DaGFuZ2VEb25lKGVy
cm9yLCBmcmFtZSk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0xNjEsNyArMTYxLDcgQEAgSFJFU1VM
VCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbFByb3ZpcwogSFJFU1VMVCBGcmFtZUxvYWREZWxl
Z2F0ZTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiB3ZWJWaWV3LCBf
SW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5l
ci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoIiVzIC0gZGlkQ29t
bWl0TG9hZEZvckZyYW1lXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIiVzIC0gZGlkQ29tbWl0
TG9hZEZvckZyYW1lXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSku
Y19zdHIoKSk7CiAKICAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlMj4gd2ViVmlld1ByaXZhdGU7
CiAgICAgSFJFU1VMVCBociA9IHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ3ZWJWaWV3UHJpdmF0
ZSk7CkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRD
b21taXRMb2FkCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlVGl0bGUoX0lu
X29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIgdGl0bGUsIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJh
bWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVTXG4iLCBkZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSwgdGl0bGUpOworICAg
ICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlcyAtIGRpZFJlY2VpdmVUaXRsZTogJVNcbiIsIGRl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpLCB0aXRsZSk7CiAK
ICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcFRpdGxlQ2hhbmdlcygpICYmICFkb25lKQotICAg
ICAgICBwcmludGYoIlRJVExFIENIQU5HRUQ6ICclUydcbiIsIHRpdGxlID8gdGl0bGUgOiBMIiIp
OworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJUSVRMRSBDSEFOR0VEOiAnJVMnXG4iLCB0
aXRsZSA/IHRpdGxlIDogTCIiKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjUyLDcgKzI1
Miw3IEBAIHZvaWQgRnJhbWVMb2FkRGVsZWdhdGU6OmxvY2F0aW9uQ2hhbmdlRG8KIEhSRVNVTFQg
RnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmll
dyosIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0
UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSBk
aWRGaW5pc2hMb2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KGZyYW1lKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSBkaWRG
aW5pc2hMb2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZy
YW1lKS5jX3N0cigpKTsKIAogICAgIGxvY2F0aW9uQ2hhbmdlRG9uZSgwLCBmcmFtZSk7CiAgICAg
cmV0dXJuIFNfT0s7CkBAIC0yNjEsNyArMjYxLDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0
ZTo6ZGlkRmluaXNoTG9hZAogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbExvYWRX
aXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2ViRXJyb3IqIGVycm9yLCBf
SW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5l
ci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoIiVzIC0gZGlkRmFp
bExvYWRXaXRoRXJyb3JcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1l
KS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSBkaWRGYWlsTG9h
ZFdpdGhFcnJvclxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNf
c3RyKCkpOwogCiAgICAgbG9jYXRpb25DaGFuZ2VEb25lKGVycm9yLCBmcmFtZSk7CiAgICAgcmV0
dXJuIFNfT0s7CkBAIC0yNzAsNyArMjcwLDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6
ZGlkRmFpbExvYWRXaQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHVybCwgZG91Ymxl
IC8qZGVsYXlTZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUq
IGZyYW1lKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENh
bGxiYWNrcygpKQotICAgICAgICBwcmludGYoIiVzIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMOiAlUyBcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5j
X3N0cigpLAorICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlcyAtIHdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RUb1VSTDogJVMgXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChmcmFtZSkuY19zdHIoKSwKICAgICAgICAgICAgICAgICB1cmxTdWl0YWJsZUZvclRlc3RSZXN1
bHQoc3RkOjp3c3RyaW5nKHVybCwgOjpTeXNTdHJpbmdMZW4odXJsKSkpLmNfc3RyKCkpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CkBAIC0yNzksNyArMjc5LDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxl
Z2F0ZTo6d2lsbFBlcmZvcm1DbAogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJG
cmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSBkaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSku
Y19zdHIoKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIiVzIC0gZGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZVxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
ZnJhbWUpLmNfc3RyKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yOTMsNyArMjkzLDcg
QEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbENsb3NlRnJhbQogSFJFU1VMVCBGcmFt
ZUxvYWREZWxlZ2F0ZTo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKElXZWJWaWV3KiwgSlND
b250ZXh0UmVmLCBKU09iamVjdFJlZikKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXIt
PmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCI/PyAtIHdpbmRvd1Nj
cmlwdE9iamVjdEF2YWlsYWJsZVxuIik7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIj8/
IC0gd2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlXG4iKTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlk
Q2xlYXJXaW5kb3dPYgogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl9vcHRfIElX
ZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZVxuIiwKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZVxuIiwKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CiAgICAgaWYgKCFkb25lKSB7
CiAgICAgICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiB3ZWJGcmFtZVByaXZhdGU7CkBAIC0z
ODcsNyArMzg3LDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoRG9jdQog
ICAgICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgICAgIHJldHVybiBocjsKICAgICAgICAg
aWYgKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cykKLSAgICAgICAgICAgIHByaW50ZigiJXMgLSBo
YXMgJXUgb251bmxvYWQgaGFuZGxlcihzKVxuIiwKKyAgICAgICAgICAgIGZwcmludGYodGVzdFJl
c3VsdCwgIiVzIC0gaGFzICV1IG9udW5sb2FkIGhhbmRsZXIocylcbiIsCiAgICAgICAgICAgICAg
ICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpLCBw
ZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpOwogICAgIH0KIApAQCAtMzk3LDcgKzM5Nyw3IEBAIEhS
RVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaERvY3UKIEhSRVNVTFQgRnJhbWVMb2Fk
RGVsZWdhdGU6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3
KiAvKnNlbmRlciovLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZG9u
ZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQotICAgICAgICBwcmlu
dGYoIiVzIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVcbiIsCisgICAgICAgIGZwcmlu
dGYodGVzdFJlc3VsdCwgIiVzIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVcbiIsCiAg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNf
c3RyKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CkBAIC00MTEsNyArNDExLDcgQEAgSFJFU1VMVCBG
cmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmlyc3RWaXN1YQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0
ZTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudChfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIq
LykKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKSkKLSAgICAgICAgcHJpbnRmKCJkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50XG4iKTsKKyAg
ICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiZGlkRGlzcGxheUluc2VjdXJlQ29udGVudFxuIik7
CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTQxOSw3ICs0MTksNyBAQCBIUkVTVUxUIEZyYW1l
TG9hZERlbGVnYXRlOjpkaWREaXNwbGF5SW5zCiBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl9v
cHRfIElXZWJTZWN1cml0eU9yaWdpbiogLypvcmlnaW4qLykKIHsKICAgICBpZiAoIWRvbmUgJiYg
Z1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCJk
aWRSdW5JbnNlY3VyZUNvbnRlbnRcbiIpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJk
aWRSdW5JbnNlY3VyZUNvbnRlbnRcbiIpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00NDIs
NSArNDQyLDUgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6b25Ob3RpZnkoX0luXwogdm9p
ZCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2ViVmlld1Byb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24o
KQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcFByb2dyZXNzRmluaXNoZWRD
YWxsYmFjaygpKQotICAgICAgICBwcmludGYoInBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0
aW9uXG4iKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAicG9zdFByb2dyZXNzRmluaXNo
ZWROb3RpZmljYXRpb25cbiIpOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0hp
c3RvcnlEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0hpc3RvcnlEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIxMDQ5OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyAr
MTQwLDcgQEAgSFJFU1VMVCBIaXN0b3J5RGVsZWdhdGU6OmRpZE5hdmlnYXRlV2l0aAogCiAgICAg
Ym9vbCB3YXNGYWlsdXJlID0gaGFzU3Vic3RpdHV0ZURhdGEgfHwgKGh0dHBSZXNwb25zZSAmJiBz
dGF0dXNDb2RlID49IDQwMCk7CiAgICAgICAgIAotICAgIHByaW50ZigiV2ViVmlldyBuYXZpZ2F0
ZWQgdG8gdXJsIFwiJVNcIiB3aXRoIHRpdGxlIFwiJXNcIiB3aXRoIEhUVFAgZXF1aXZhbGVudCBt
ZXRob2QgXCIlc1wiLiAgVGhlIG5hdmlnYXRpb24gd2FzICVzIGFuZCB3YXMgJXMlUy5cbiIsIAor
ICAgIGZwcmludGYodGVzdFJlc3VsdCwgIldlYlZpZXcgbmF2aWdhdGVkIHRvIHVybCBcIiVTXCIg
d2l0aCB0aXRsZSBcIiVzXCIgd2l0aCBIVFRQIGVxdWl2YWxlbnQgbWV0aG9kIFwiJXNcIi4gIFRo
ZSBuYXZpZ2F0aW9uIHdhcyAlcyBhbmQgd2FzICVzJVMuXG4iLCAKICAgICAgICAgdXJsLmNfc3Ry
KCksIAogICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4odGl0bGVCU1RSKSwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8Y2hhcio+KGh0dHBNZXRob2RCU1RSKSwKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVT
VUxUIEhpc3RvcnlEZWxlZ2F0ZTo6ZGlkUGVyZm9ybUNsaWVuCiAgICAgaWYgKGRlc3RpbmF0aW9u
VVJMKQogICAgICAgICBkZXN0aW5hdGlvbiA9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3c3Ry
aW5nRnJvbUJTVFIoZGVzdGluYXRpb25VUkwpKTsKIAotICAgIHByaW50ZigiV2ViVmlldyBwZXJm
b3JtZWQgYSBjbGllbnQgcmVkaXJlY3QgZnJvbSBcIiVTXCIgdG8gXCIlU1wiLlxuIiwgc291cmNl
LmNfc3RyKCksIGRlc3RpbmF0aW9uLmNfc3RyKCkpOworICAgIGZwcmludGYodGVzdFJlc3VsdCwg
IldlYlZpZXcgcGVyZm9ybWVkIGEgY2xpZW50IHJlZGlyZWN0IGZyb20gXCIlU1wiIHRvIFwiJVNc
Ii5cbiIsIHNvdXJjZS5jX3N0cigpLCBkZXN0aW5hdGlvbi5jX3N0cigpKTsKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAKQEAgLTE4MSw3ICsxODEsNyBAQCBIUkVTVUxUIEhpc3RvcnlEZWxlZ2F0
ZTo6ZGlkUGVyZm9ybVNlcnZlCiAgICAgaWYgKGRlc3RpbmF0aW9uVVJMKQogICAgICAgICBkZXN0
aW5hdGlvbiA9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3c3RyaW5nRnJvbUJTVFIoZGVzdGlu
YXRpb25VUkwpKTsKIAotICAgIHByaW50ZigiV2ViVmlldyBwZXJmb3JtZWQgYSBzZXJ2ZXIgcmVk
aXJlY3QgZnJvbSBcIiVTXCIgdG8gXCIlU1wiLlxuIiwgc291cmNlLmNfc3RyKCksIGRlc3RpbmF0
aW9uLmNfc3RyKCkpOworICAgIGZwcmludGYodGVzdFJlc3VsdCwgIldlYlZpZXcgcGVyZm9ybWVk
IGEgc2VydmVyIHJlZGlyZWN0IGZyb20gXCIlU1wiIHRvIFwiJVNcIi5cbiIsIHNvdXJjZS5jX3N0
cigpLCBkZXN0aW5hdGlvbi5jX3N0cigpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTk0
LDcgKzE5NCw3IEBAIEhSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjp1cGRhdGVIaXN0b3J5VGkKICAg
ICBpZiAodXJsQlNUUikKICAgICAgICAgdXJsID0gdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHdz
dHJpbmdGcm9tQlNUUih1cmxCU1RSKSk7CiAKLSAgICBwcmludGYoIldlYlZpZXcgdXBkYXRlZCB0
aGUgdGl0bGUgZm9yIGhpc3RvcnkgVVJMIFwiJVNcIiB0byBcIiVTXCIuXG4iLCB1cmwuY19zdHIo
KSwgdGl0bGVCU1RSID8gdGl0bGVCU1RSIDogTCIiKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJXZWJWaWV3IHVwZGF0ZWQgdGhlIHRpdGxlIGZvciBoaXN0b3J5IFVSTCBcIiVTXCIgdG8gXCIl
U1wiLlxuIiwgdXJsLmNfc3RyKCksIHRpdGxlQlNUUiA/IHRpdGxlQlNUUiA6IEwiIik7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC0yMTIsNyArMjEyLDcgQEAgSFJFU1VMVCBIaXN0b3J5
RGVsZWdhdGU6OnBvcHVsYXRlVmlzaXRlZAogICAgICAgICB1cmwgPSB1cmxTdWl0YWJsZUZvclRl
c3RSZXN1bHQod3N0cmluZ0Zyb21CU1RSKHVybEJTVFIpKTsKIAogICAgIGlmIChnVGVzdFJ1bm5l
ci0+ZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKCkpCi0gICAgICAgIHByaW50ZigiQXNrZWQgdG8g
cG9wdWxhdGUgdmlzaXRlZCBsaW5rcyBmb3IgV2ViVmlldyBcIiVTXCJcbiIsIHVybC5jX3N0cigp
KTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQXNrZWQgdG8gcG9wdWxhdGUgdmlzaXRl
ZCBsaW5rcyBmb3IgV2ViVmlldyBcIiVTXCJcbiIsIHVybC5jX3N0cigpKTsKIAogICAgIHJldHVy
biBTX09LOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdh
dGUuY3BwCShyZXZpc2lvbiAyMTA0OTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUG9s
aWN5RGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgSFJFU1VM
VCBQb2xpY3lEZWxlZ2F0ZTo6ZGVjaWRlUG9saWN5Rm9yTgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcHJpbnRmKCIlU1xuIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1
bHQsICIlU1xuIiwgbWVzc2FnZS5jX3N0cigpKTsKIAogICAgIGlmIChtX3Blcm1pc3NpdmVEZWxl
Z2F0ZSkKICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIEhSRVNV
TFQgUG9saWN5RGVsZWdhdGU6OnVuYWJsZVRvSW1wbGVtZW4KICAgICBfYnN0cl90IGZyYW1lTmFt
ZTsKICAgICBmcmFtZS0+bmFtZSgmZnJhbWVOYW1lLkdldEJTVFIoKSk7CiAgICAgCi0gICAgcHJp
bnRmKCJQb2xpY3kgZGVsZWdhdGU6IHVuYWJsZSB0byBpbXBsZW1lbnQgcG9saWN5IHdpdGggZXJy
b3IgZG9tYWluICclUycsIGVycm9yIGNvZGUgJWQsIGluIGZyYW1lICclUydcbiIsIHN0YXRpY19j
YXN0PHdjaGFyX3QqPihkb21haW5TdHIpLCBjb2RlLCBzdGF0aWNfY2FzdDxUQ0hBUio+KGZyYW1l
TmFtZSkpOworICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBvbGljeSBkZWxlZ2F0ZTogdW5hYmxl
IHRvIGltcGxlbWVudCBwb2xpY3kgd2l0aCBlcnJvciBkb21haW4gJyVTJywgZXJyb3IgY29kZSAl
ZCwgaW4gZnJhbWUgJyVTJ1xuIiwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KGRvbWFpblN0ciksIGNv
ZGUsIHN0YXRpY19jYXN0PFRDSEFSKj4oZnJhbWVOYW1lKSk7CiAgICAgCiAgICAgcmV0dXJuIFNf
T0s7CiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIxMDQ5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsy
MzYsNyBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlCiAgICAgKm5l
d1JlcXVlc3QgPSBudWxscHRyOwogCiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgcHJpbnRmKCIlUyAtIHdpbGxTZW5k
UmVxdWVzdCAlUyByZWRpcmVjdFJlc3BvbnNlICVTXG4iLCAKKyAgICAgICAgZnByaW50Zih0ZXN0
UmVzdWx0LCAiJVMgLSB3aWxsU2VuZFJlcXVlc3QgJVMgcmVkaXJlY3RSZXNwb25zZSAlU1xuIiwg
CiAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChpZGVudGlmaWVy
KS5jX3N0cigpLAogICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
cmVxdWVzdCkuY19zdHIoKSwKICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0KHJlZGlyZWN0UmVzcG9uc2UpLmNfc3RyKCkpOwpAQCAtMjQ2LDEzICsyNDYsMTMgQEAg
SFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6d2lsbFNlbmRSZQogICAgICAgICByZXR1cm4g
U19PSzsKIAogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+d2lsbFNlbmRSZXF1ZXN0UmV0
dXJuc051bGxPblJlZGlyZWN0KCkgJiYgcmVkaXJlY3RSZXNwb25zZSkgewotICAgICAgICBwcmlu
dGYoIlJldHVybmluZyBudWxsIGZvciB0aGlzIHJlZGlyZWN0XG4iKTsKKyAgICAgICAgZnByaW50
Zih0ZXN0UmVzdWx0LCAiUmV0dXJuaW5nIG51bGwgZm9yIHRoaXMgcmVkaXJlY3RcbiIpOwogICAg
ICAgICByZXR1cm4gU19PSzsKICAgICB9CiAKICAgICBfYnN0cl90IHVybEJzdHI7CiAgICAgaWYg
KEZBSUxFRChyZXF1ZXN0LT5VUkwoJnVybEJzdHIuR2V0QlNUUigpKSkpIHsKLSAgICAgICAgcHJp
bnRmKCJSZXF1ZXN0IGhhcyBubyBVUkxcbiIpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJSZXF1ZXN0IGhhcyBubyBVUkxcbiIpOwogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0K
IApAQCAtMjc0LDcgKzI3NCw3IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxT
ZW5kUmUKICAgICAgICAgICAgICAgICB0ZXN0SG9zdCA9IGFkb3B0Q0YoQ0ZVUkxDb3B5SG9zdE5h
bWUodGVzdFBhdGhVUkwuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgh
aXNMb2NhbGhvc3QoaG9zdC5nZXQoKSkgJiYgIWhvc3RJc1VzZWRCeVNvbWVUZXN0c1RvR2VuZXJh
dGVFcnJvcihob3N0LmdldCgpKSAmJiAoIXRlc3RIb3N0IHx8IGlzTG9jYWxob3N0KHRlc3RIb3N0
LmdldCgpKSkpIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIkJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCAlc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJzdHIpKTsKKyAg
ICAgICAgICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJCbG9ja2VkIGFjY2VzcyB0byBleHRl
cm5hbCBVUkwgJXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih1cmxCc3RyKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMw
MCw3ICszMDAsNyBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWdUZXN0UnVubmVyLT5oYW5kbGVzQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VzKCkpIHsKLSAgICAgICAgcHJpbnRmKCIlUyAtIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFNpbXVsYXRpbmcgY2FuY2VsbGVkIGF1dGhlbnRp
Y2F0aW9uIHNoZWV0XG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChpZGVudGlm
aWVyKS5jX3N0cigpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJVMgLSBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSBTaW11bGF0aW5nIGNhbmNlbGxlZCBhdXRoZW50
aWNhdGlvbiBzaGVldFxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoaWRlbnRp
ZmllcikuY19zdHIoKSk7CiAgICAgICAgIHNlbmRlci0+Y29udGludWVXaXRob3V0Q3JlZGVudGlh
bEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiAgICAgICAgIHJldHVybiBT
X09LOwogICAgIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVn
YXRlOjpkaWRSZWNlaXZlCiAgICAgY29uc3QgY2hhciogdXNlciA9IGdUZXN0UnVubmVyLT5hdXRo
ZW50aWNhdGlvblVzZXJuYW1lKCkuY19zdHIoKTsKICAgICBjb25zdCBjaGFyKiBwYXNzd29yZCA9
IGdUZXN0UnVubmVyLT5hdXRoZW50aWNhdGlvblBhc3N3b3JkKCkuY19zdHIoKTsKIAotICAgIHBy
aW50ZigiJVMgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSBSZXNwb25kaW5n
IHdpdGggJXM6JXNcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGlkZW50aWZp
ZXIpLmNfc3RyKCksIHVzZXIsIHBhc3N3b3JkKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIl
UyAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCAl
czolc1xuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoaWRlbnRpZmllcikuY19z
dHIoKSwgdXNlciwgcGFzc3dvcmQpOwogCiAgICAgQ09NUHRyPElXZWJVUkxDcmVkZW50aWFsPiBj
cmVkZW50aWFsOwogICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2Vi
VVJMQ3JlZGVudGlhbCwgMCwgSUlEX0lXZWJVUkxDcmVkZW50aWFsLCAodm9pZCoqKSZjcmVkZW50
aWFsKSkpCkBAIC0zMjMsNyArMzIzLDcgQEAgSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6
ZGlkUmVjZWl2ZQogICAgIF9Jbl9vcHRfIElXZWJVUkxSZXNwb25zZSogcmVzcG9uc2UsIF9Jbl9v
cHRfIElXZWJEYXRhU291cmNlKiBkYXRhU291cmNlKQogewogICAgIGlmICghZG9uZSAmJiBnVGVz
dFJ1bm5lci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIHByaW50Zigi
JVMgLSBkaWRSZWNlaXZlUmVzcG9uc2UgJVNcbiIsCisgICAgICAgIGZwcmludGYodGVzdFJlc3Vs
dCwgIiVTIC0gZGlkUmVjZWl2ZVJlc3BvbnNlICVTXG4iLAogICAgICAgICAgICAgZGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHQoaWRlbnRpZmllcikuY19zdHIoKSwKICAgICAgICAgICAg
IGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKS5jX3N0cigpKTsKICAg
ICB9CkBAIC0zMzgsNyArMzM4LDcgQEAgSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZQogICAgIAogICAgICAgICB3c3RyaW5nIHVybCA9IHdzdHJpbmdGcm9tQlNUUih1cmxC
U1RSKTsKIAotICAgICAgICBwcmludGYoIiVTIGhhcyBNSU1FIHR5cGUgJVNcbiIsIGxhc3RQYXRo
Q29tcG9uZW50KHVybCkuY19zdHIoKSwgc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KG1pbWVUeXBlQlNU
UikpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlUyBoYXMgTUlNRSB0eXBlICVTXG4i
LCBsYXN0UGF0aENvbXBvbmVudCh1cmwpLmNfc3RyKCksIHN0YXRpY19jYXN0PHdjaGFyX3QqPiht
aW1lVHlwZUJTVFIpKTsKICAgICB9CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTM0OCw3ICszNDgs
NyBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlCiBIUkVTVUxUIFJl
c291cmNlTG9hZERlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2UoX0luX29w
dF8gSVdlYlZpZXcqIHdlYlZpZXcsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgX0luX29wdF8g
SVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2UpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVu
bmVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgcHJpbnRmKCIlUyAt
IGRpZEZpbmlzaExvYWRpbmdcbiIsCisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIiVTIC0g
ZGlkRmluaXNoTG9hZGluZ1xuIiwKICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGlkZW50aWZpZXIpLmNfc3RyKCkpOwogICAgIH0KIApAQCAtMzYwLDcgKzM2MCw3
IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaEwKIEhSRVNVTFQgUmVz
b3VyY2VMb2FkRGVsZWdhdGU6OmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJW
aWV3KiB3ZWJWaWV3LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIF9Jbl9vcHRfIElXZWJFcnJv
ciogZXJyb3IsIF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKiBkYXRhU291cmNlKQogewogICAgIGlm
ICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0g
ICAgICAgIHByaW50ZigiJVMgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogJVNcbiIsIAorICAg
ICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlUyAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiAl
U1xuIiwgCiAgICAgICAgICAgICBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChpZGVu
dGlmaWVyKS5jX3N0cigpLAogICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQoZXJyb3IsIGlkZW50aWZpZXIpLmNfc3RyKCkpOwogICAgIH0KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHJldmlzaW9uIDIxMDQ5OCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODIsNyArODIsNyBAQCBKU0NvbnRleHRSZWYgVGVzdFJ1bm5lcjo6bWFpbkZyYW1lSlND
b250CiB2b2lkIFRlc3RSdW5uZXI6OmFkZERpc2FsbG93ZWRVUkwoSlNTdHJpbmdSZWYgdXJsKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCi0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5l
cjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmluZ1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKKyAg
ICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVS
TChKU1N0cmluZ1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogYm9vbCBUZXN0UnVubmVy
OjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm8KIEpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6
b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKEpTQ29udGV4dFJlZiBjb250ZXh0KQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gZ2V0IG9yaWdpbnMgdGhhdCBoYXZlIGFwcGxpY2F0aW9u
IGNhY2hlcy4KLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpvcmlnaW5zV2l0aEFwcGxp
Y2F0aW9uQ2FjaGUoSlNDb250ZXh0UmVmKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmlu
dGYodGVzdFJlc3VsdCwgIkVSUk9SOiBUZXN0UnVubmVyOjpvcmlnaW5zV2l0aEFwcGxpY2F0aW9u
Q2FjaGUoSlNDb250ZXh0UmVmKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMTc1LDEzICsxNzUsMTMgQEAgdm9p
ZCBUZXN0UnVubmVyOjpjbGVhckFsbERhdGFiYXNlcygpCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0
b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3VibGUpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudC4gUmVxdWlyZXMgbm9uLWV4aXN0YW50IChvbiBXaW5kb3dzKSBXZWJTdG9yYWdlTWFuYWdl
cgotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJ
bnRlcnZhbChkb3VibGUpIG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50Zih0ZXN0UmVz
dWx0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChk
b3VibGUpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Y2xvc2VJ
ZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBS
ZXF1aXJlcyBub24tZXhpc3RhbnQgKG9uIFdpbmRvd3MpIFdlYlN0b3JhZ2VNYW5hZ2VyCi0gICAg
cHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2Vz
KGRvdWJsZSkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJF
UlJPUjogVGVzdFJ1bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKGRvdWJsZSkg
bm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpjbGVhckJhY2tGb3J3
YXJkTGlzdCgpCkBAIC0yMTMsMTQgKzIxMywxNCBAQCB2b2lkIFRlc3RSdW5uZXI6OmNsZWFyQmFj
a0ZvcndhcmRMaXN0KCkKIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5h
bWUoSlNTdHJpbmdSZWYgbmFtZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IQotICAgIHBy
aW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYp
IG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiRVJST1I6IFRl
c3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYpIG5vdCBpbXBsZW1lbnRl
ZFxuIik7CiAgICAgcmV0dXJuIDA7CiB9CiAKIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OmNvcHlF
bmNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IQotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmNvcHlFbmNvZGVkSG9zdE5hbWUo
SlNTdHJpbmdSZWYpIG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50Zih0ZXN0UmVzdWx0
LCAiRVJST1I6IFRlc3RSdW5uZXI6OmNvcHlFbmNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYpIG5v
dCBpbXBsZW1lbnRlZFxuIik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI0OCwxNCArMjQ4LDE0
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogaW50IFRlc3RSdW5uZXI6Om51
bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCkKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCi0gICAgcHJpbnRm
KCJFUlJPUjogVGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYodGVzdFJlc3VsdCwg
IkVSUk9SOiBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0cygpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiAgICAgcmV0dXJuIC0xOwogfQogCiBib29s
IFRlc3RSdW5uZXI6OmlzR2VvbG9jYXRpb25Qcm92aWRlckFjdGl2ZSgpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgotICAgIHByaW50Zigi
RVJST1I6IFRlc3RSdW5uZXI6OmlzR2VvbG9jYXRpb25Qcm92aWRlckFjdGl2ZSgpIG5vdCBpbXBs
ZW1lbnRlZFxuIik7CisgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiRVJST1I6IFRlc3RSdW5uZXI6
OmlzR2VvbG9jYXRpb25Qcm92aWRlckFjdGl2ZSgpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCkBAIC0zMDQsNyArMzA0LDcgQEAgSlNTdHJpbmdSZWYgVGVzdFJ1
bm5lcjo6cGF0aFRvTG9jYWxSZXNvdQogCiAgICAgd3N0cmluZyBsb2NhbFBhdGg7CiAgICAgaWYg
KCFyZXNvbHZlQ3lnd2luUGF0aChpbnB1dCwgbG9jYWxQYXRoKSkgewotICAgICAgICBwcmludGYo
IkVSUk9SOiBGYWlsZWQgdG8gcmVzb2x2ZSBDeWd3aW4gcGF0aCAlU1xuIiwgaW5wdXQuY19zdHIo
KSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkVSUk9SOiBGYWlsZWQgdG8gcmVzb2x2
ZSBDeWd3aW4gcGF0aCAlU1xuIiwgaW5wdXQuY19zdHIoKSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtNDU3LDIxICs0NTcsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrRGV2aWNlT3JpZW50YXRpbwogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIERldmlj
ZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5u
ZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbigpIG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAg
ZnByaW50Zih0ZXN0UmVzdWx0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmll
bnRhdGlvbigpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRl
LCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRl
LCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ks
IGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVk
LCBkb3VibGUgc3BlZWQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRp
b24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgyNjQuCi0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYo
dGVzdFJlc3VsdCwgIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bigpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQu
Ci0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKHRl
c3RSZXN1bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVu
bmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKQEAgLTUzMyw3ICs1MzMs
NyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvCiB2b2lkIFRlc3RS
dW5uZXI6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3IgU3BhdGlhbE5hdmlnYXRpb24gbGF5b3V0IHRlc3RzLgot
ICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZChib29sKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkVS
Uk9SOiBUZXN0UnVubmVyOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCkgbm90IGlt
cGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRBbGxvd1VuaXZlcnNhbEFj
Y2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBU
ZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQwogdm9pZCBUZXN0UnVubmVyOjpzZXRB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sKQogewogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZChib29sKSBub3QgaW1wbGVtZW50ZWRcbiIpOworICAgIGZwcmlu
dGYodGVzdFJlc3VsdCwgIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZChib29sKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5u
ZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIHNob3VsZEN5Y2xlKQpAQCAt
MTAzNiw3ICsxMDM2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGludCBjYWNo
ZQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgLypuYW1l
Ki8pCiB7Ci0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZCgp
IG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiRVJST1I6IFRl
c3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRXZWJWaWV3RWRpdGFibGUoYm9vbAogCiB2b2lkIFRlc3RSdW5uZXI6OmF1dGhlbnRpY2F0ZVNl
c3Npb24oSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKIHsKLSAgICBwcmlu
dGYoIkVSUk9SOiBUZXN0UnVubmVyOjphdXRoZW50aWNhdGVTZXNzaW9uKCkgbm90IGltcGxlbWVu
dGVkXG4iKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6YXV0
aGVudGljYXRlU2Vzc2lvbigpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1
bm5lcjo6YWJvcnRNb2RhbCgpCkBAIC0xMzA5LDE3ICsxMzA5LDE3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmkKIAogdm9pZCBUZXN0UnVubmVyOjphZGRDaHJvbWVJ
bnB1dEZpZWxkKCkKIHsKLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjphZGRDaHJvbWVJ
bnB1dEZpZWxkKCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpIG5vdCBpbXBsZW1lbnRl
ZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCiB7
Ci0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgp
IG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiRVJST1I6IFRl
c3RSdW5uZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwog
fQogCiB2b2lkIFRlc3RSdW5uZXI6OmZvY3VzV2ViVmlldygpCiB7Ci0gICAgcHJpbnRmKCJFUlJP
UjogVGVzdFJ1bm5lcjo6Zm9jdXNXZWJWaWV3KCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBm
cHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6Zm9jdXNXZWJWaWV3KCkgbm90
IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRCYWNraW5nU2NhbGVG
YWN0b3IoZG91YmxlKQpAQCAtMTM2MywyMiArMTM2MywyMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dFBhZ2VWaXNpYmlsaXR5KGNvbnN0CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmlj
YXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbikKIHsKLSAgICBwcmludGYoIkVSUk9S
OiBUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYp
IG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiRVJST1I6IFRl
c3RSdW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZikgbm90
IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBqc09yaWdpbikKIHsKLSAgICBwcmludGYoIkVSUk9S
OiBUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZikg
bm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVz
dFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYpIG5vdCBp
bXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoKQogewotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnJl
bW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkgbm90IGltcGxlbWVudGVkXG4iKTsK
KyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBqc05v
dGlmaWNhdGlvbikKIHsKLSAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpzaW11bGF0ZVdl
Yk5vdGlmaWNhdGlvbkNsaWNrKCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKHRl
c3RSZXN1bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
aygpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVM
ZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayhKU1N0cmluZ1JlZiB0aXRsZSkKQEAgLTEzODgsNyAr
MTM4OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmkKIAogdW5z
aWduZWQgVGVzdFJ1bm5lcjo6aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQoKSBjb25zdAog
ewotICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0
ZWJvYXJkKCkgbm90IGltcGxlbWVudGVkXG4iKTsKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJF
UlJPUjogVGVzdFJ1bm5lcjo6aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQoKSBub3QgaW1w
bGVtZW50ZWRcbiIpOwogICAgIHJldHVybiAwOwogfQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1VJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyMTA0OTgpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw4ICs0NTMs
OCBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdGcmFtZShfSW5fb3B0CiBIUkVTVUxUIFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdl
YlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNzYWdlKQogewogICAgIGlmICghZG9uZSkg
ewotICAgICAgICBwcmludGYoIkFMRVJUOiAlU1xuIiwgbWVzc2FnZSA/IG1lc3NhZ2UgOiBMIiIp
OwotICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAi
QUxFUlQ6ICVTXG4iLCBtZXNzYWdlID8gbWVzc2FnZSA6IEwiIik7CisgICAgICAgIGZmbHVzaCh0
ZXN0UmVzdWx0KTsKICAgICB9CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTQ2Myw3ICs0NjMsNyBA
QCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhCiBIUkVTVUxUIFVJRGVs
ZWdhdGU6OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZShfSW5fb3B0XyBJV2Vi
VmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkK
IHsKICAgICBpZiAoIWRvbmUpCi0gICAgICAgIHByaW50ZigiQ09ORklSTTogJVNcbiIsIG1lc3Nh
Z2UgPyBtZXNzYWdlIDogTCIiKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQ09ORklS
TTogJVNcbiIsIG1lc3NhZ2UgPyBtZXNzYWdlIDogTCIiKTsKIAogICAgICpyZXN1bHQgPSBUUlVF
OwogCkBAIC00NzMsNyArNDczLDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0
Q29uZmlybQogSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxX
aXRoUHJvbXB0KF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfSW5fIEJTVFIgbWVzc2Fn
ZSwgX0luXyBCU1RSIGRlZmF1bHRUZXh0LCBfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQog
ewogICAgIGlmICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJQUk9NUFQ6ICVTLCBkZWZhdWx0IHRl
eHQ6ICVTXG4iLCBtZXNzYWdlID8gbWVzc2FnZSA6IEwiIiwgZGVmYXVsdFRleHQgPyBkZWZhdWx0
VGV4dCA6IEwiIik7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBST01QVDogJVMsIGRl
ZmF1bHQgdGV4dDogJVNcbiIsIG1lc3NhZ2UgPyBtZXNzYWdlIDogTCIiLCBkZWZhdWx0VGV4dCA/
IGRlZmF1bHRUZXh0IDogTCIiKTsKIAogICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZyhkZWZh
dWx0VGV4dCk7CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkJl
Zm9yZVVubG9hZENvbmZpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBpZiAoIWRv
bmUpCi0gICAgICAgIHByaW50ZigiQ09ORklSTSBOQVZJR0FUSU9OOiAlU1xuIiwgbWVzc2FnZSA/
IG1lc3NhZ2UgOiBMIiIpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJDT05GSVJNIE5B
VklHQVRJT046ICVTXG4iLCBtZXNzYWdlID8gbWVzc2FnZSA6IEwiIik7CiAKICAgICAqcmVzdWx0
ID0gIWdUZXN0UnVubmVyLT5zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9h
ZCgpOwogCkBAIC01MDcsNyArNTA3LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3QWRk
TWVzc2FnZVRvQwogICAgICAgICAgICAgbmV3TWVzc2FnZSA9IG5ld01lc3NhZ2Uuc3Vic3RyKDAs
IGZpbGVQcm90b2NvbCkgKyBsYXN0UGF0aENvbXBvbmVudChuZXdNZXNzYWdlLnN1YnN0cihmaWxl
UHJvdG9jb2wgKyBmaWxlVVJMLnNpemUoKSkpOwogICAgIH0KIAotICAgIGF1dG8gb3V0ID0gZ1Rl
c3RSdW5uZXItPmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpID8gc3RkZXJyIDogc3Rkb3V0Owor
ICAgIGF1dG8gb3V0ID0gZ1Rlc3RSdW5uZXItPmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpID8g
c3RkZXJyIDogdGVzdFJlc3VsdDsKICAgICBmcHJpbnRmKG91dCwgIkNPTlNPTEUgTUVTU0FHRTog
Iik7CiAgICAgaWYgKGxpbmVOdW1iZXIpCiAgICAgICAgIGZwcmludGYob3V0LCAibGluZSAlZDog
IiwgbGluZU51bWJlcik7CkBAIC01OTQsNyArNTk0LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpl
eGNlZWRlZERhdGFiYXNlUXVvdAogICAgIG9yaWdpbi0+cG9ydCgmcG9ydCk7CiAKICAgICBpZiAo
IWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBEYXRhYmFzZUNhbGxiYWNrcygpKQotICAgICAgICBw
cmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERhdGFiYXNlUXVv
dGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gZGF0YWJhc2U6JVNcbiIsIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihwcm90b2NvbCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihob3N0
KSwgcG9ydCwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0
LCAiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZv
clNlY3VyaXR5T3JpZ2luOnslcywgJXMsICVpfSBkYXRhYmFzZTolU1xuIiwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KHByb3RvY29sKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGhvc3QpLCBw
b3J0LCBkYXRhYmFzZUlkZW50aWZpZXIpOwogCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1
bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKICAgICBkb3VibGUgdGVzdERlZmF1bHRRdW90YSA9
IGdUZXN0UnVubmVyLT5kYXRhYmFzZURlZmF1bHRRdW90YSgpOwpAQCAtNjI2LDcgKzYyNiw3IEBA
IEhSRVNVTFQgVUlEZWxlZ2F0ZTo6ZXhjZWVkZWREYXRhYmFzZVF1b3QKICAgICBpZiAobWF4UXVv
dGEgPj0gMCkgewogICAgICAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRTaXplICYmIGV4
cGVjdGVkU2l6ZSA8PSBtYXhRdW90YSkgewogICAgICAgICAgICAgbmV3UXVvdGEgPSBleHBlY3Rl
ZFNpemU7Ci0gICAgICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNL
OiBpbmNyZWFzZWQgcXVvdGEgdG8gJWxsdVxuIiwgbmV3UXVvdGEpOworICAgICAgICAgICAgZnBy
aW50Zih0ZXN0UmVzdWx0LCAiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNl
ZCBxdW90YSB0byAlbGx1XG4iLCBuZXdRdW90YSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgb3Jp
Z2luLT5zZXRRdW90YShuZXdRdW90YSk7CkBAIC02NjAsNyArNjYwLDcgQEAgSFJFU1VMVCBVSURl
bGVnYXRlOjp3ZWJWaWV3RGlkSW52YWxpZGF0ZQogSFJFU1VMVCBVSURlbGVnYXRlOjpzZXRTdGF0
dXNUZXh0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHRleHQpCiB7IAogICAgIGlmIChn
VGVzdFJ1bm5lci0+ZHVtcFN0YXR1c0NhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoIlVJIERF
TEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4dDolU1xuIiwgdGV4dCA/IHRleHQg
OiBMIiIpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJVSSBERUxFR0FURSBTVEFUVVMg
Q0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JVNcbiIsIHRleHQgPyB0ZXh0IDogTCIiKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApAQCAtNjkzLDYgKzY5Myw2IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6
ZGVjaWRlUG9saWN5Rm9yR2VvbG8KIAogSFJFU1VMVCBVSURlbGVnYXRlOjpkaWRQcmVzc01pc3Np
bmdQbHVnaW5CdXR0b24oX0luX29wdF8gSURPTUVsZW1lbnQqIC8qZWxlbWVudCovKQogewotICAg
IHByaW50ZigiTUlTU0lORyBQTFVHSU4gQlVUVE9OIFBSRVNTRURcbiIpOworICAgIGZwcmludGYo
dGVzdFJlc3VsdCwgIk1JU1NJTkcgUExVR0lOIEJVVFRPTiBQUkVTU0VEXG4iKTsKICAgICByZXR1
cm4gU19PSzsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>