<?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>215523</bug_id>
          
          <creation_ts>2020-08-14 14:36:27 -0700</creation_ts>
          <short_desc>Live Web Content processes do not respect accent color if dynamically changed to &quot;multicolor&quot;</short_desc>
          <delta_ts>2020-08-15 15:53:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ggaren</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1680435</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-14 14:36:27 -0700</bug_when>
    <thetext>Live Web Content processes do not respect accent color if dynamically changed to &quot;multicolor&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680436</commentid>
    <comment_count>1</comment_count>
      <attachid>406622</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-14 14:36:38 -0700</bug_when>
    <thetext>Created attachment 406622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680437</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-14 14:36:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/63941133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680438</commentid>
    <comment_count>3</comment_count>
      <attachid>406622</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-08-14 14:39:58 -0700</bug_when>
    <thetext>Comment on attachment 406622
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm:80
&gt; +            if (!a &amp;&amp; !b)
&gt; +                return true;
&gt; +            return a &amp;&amp; [a isEqual:b];

Nit - I have an ever-so-slight preference for `a == b || [a isEqual:b]`, instead of having a separate branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680465</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-14 15:21:48 -0700</bug_when>
    <thetext>Per Arne kindly pointed out that he added a testing mechanism for this, so I&apos;m writing a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680511</commentid>
    <comment_count>5</comment_count>
      <attachid>406633</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-14 16:19:01 -0700</bug_when>
    <thetext>Created attachment 406633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680547</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-14 17:58:44 -0700</bug_when>
    <thetext>Oh dear, the new test passes for me but not the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680549</commentid>
    <comment_count>7</comment_count>
      <attachid>406640</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-14 18:12:47 -0700</bug_when>
    <thetext>Created attachment 406640
test logging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680649</commentid>
    <comment_count>8</comment_count>
      <attachid>406676</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-15 14:47:19 -0700</bug_when>
    <thetext>Created attachment 406676
test logging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680650</commentid>
    <comment_count>9</comment_count>
      <attachid>406677</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-15 15:11:20 -0700</bug_when>
    <thetext>Created attachment 406677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680654</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-15 15:53:45 -0700</bug_when>
    <thetext>Committed r265740: &lt;https://trac.webkit.org/changeset/265740&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406677.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406622</attachid>
            <date>2020-08-14 14:36:38 -0700</date>
            <delta_ts>2020-08-14 16:19:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215523-20200814143637.patch</filename>
            <type>text/plain</type>
            <size>3690</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjOGM0N2Q4ZmQyZmFhNjQ0
ZGMyNmI2NjBhOTExZmU2YzNjNmQ0NWQuLjM4ZDQ0N2M0YzJkNGI2Yjc0MjVlMjI2MTA4NGVkZjE5
NTg4MjRiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDgtMTQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGl2ZSBXZWIgQ29udGVu
dCBwcm9jZXNzZXMgZG8gbm90IHJlc3BlY3QgYWNjZW50IGNvbG9yIGlmIGR5bmFtaWNhbGx5IGNo
YW5nZWQgdG8gIm11bHRpY29sb3IiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzOTQxMTMzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVs
dHMgX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6dG9WYWx1ZXNGb3JL
ZXlzOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZXRQcmVmZXJlbmNlVmFsdWUpOgorICAgICAgICBUaGUgTlNVc2Vy
RGVmYXVsdHMgc3luY2luZyBtZWNoYW5pc20gZG9lcyBub3QgcHJvcGFnYXRlIGRlZmF1bHRzIHRo
YXQgYXJlCisgICAgICAgIGRlbGV0ZWQgb3IgY2hhbmdlZCB0byBuaWwuCisKKyAgICAgICAgQWxs
b3cgbmlsLCBhbmQgZml4IHVwIGFuIGFzc2VydCB0aGF0IHdvdWxkIGZpcmUgZm9yIHRoZSBzYW1l
IHJlYXNvbi4KKwogMjAyMC0wOC0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUSzRdIE5vdGlmeSB0aGUgd2ViIHByb2Nlc3Mgb24gZHJh
ZyBsZWF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVy
ZW5jZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5j
ZU9ic2VydmVyLm1tCmluZGV4IDY2NTAyNzYzMWEyYjIzZDA2ZDcxNjdmY2E5MzI1ZWVjMWVmNWZm
ZTkuLjI3NTFhZjYzZWNkOTU1Njg1NDNiYWY0NWUwODMyNmUwOWM3NzU0MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0KQEAg
LTczLDExICs3MywxNyBAQCAtICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1
ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+CiAKICAgICAgICAgYXV0byBn
bG9iYWxWYWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpa2V5LCBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKTsKICAgICAgICAgYXV0byBkb21h
aW5WYWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpa2V5LCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpbV9zdWl0ZU5hbWUsIGtDRlByZWZlcmVu
Y2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9zdCkpOworCisgICAgICAgIGF1dG8g
cHJlZmVyZW5jZVZhbHVlc0FyZUVxdWl2YWxlbnQgPSBbXSAoaWQgYSwgaWQgYikgeworICAgICAg
ICAgICAgaWYgKCFhICYmICFiKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgcmV0dXJuIGEgJiYgW2EgaXNFcXVhbDpiXTsKKyAgICAgICAgfTsKICAgICAgICAgCi0g
ICAgICAgIGlmIChnbG9iYWxWYWx1ZSAmJiBbbmV3VmFsdWUgaXNFcXVhbDooX19icmlkZ2UgaWQp
Z2xvYmFsVmFsdWUuZ2V0KCldKQorICAgICAgICBpZiAocHJlZmVyZW5jZVZhbHVlc0FyZUVxdWl2
YWxlbnQoKF9fYnJpZGdlIGlkKWdsb2JhbFZhbHVlLmdldCgpLCBuZXdWYWx1ZSkpCiAgICAgICAg
ICAgICBbbV9vYnNlcnZlciBwcmVmZXJlbmNlRGlkQ2hhbmdlOm5pbCBrZXk6a2V5IGVuY29kZWRW
YWx1ZTplbmNvZGVkU3RyaW5nXTsKIAotICAgICAgICBpZiAoZG9tYWluVmFsdWUgJiYgW25ld1Zh
bHVlIGlzRXF1YWw6KF9fYnJpZGdlIGlkKWRvbWFpblZhbHVlLmdldCgpXSkKKyAgICAgICAgaWYg
KHByZWZlcmVuY2VWYWx1ZXNBcmVFcXVpdmFsZW50KChfX2JyaWRnZSBpZClkb21haW5WYWx1ZS5n
ZXQoKSwgbmV3VmFsdWUpKQogICAgICAgICAgICAgW21fb2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENo
YW5nZTptX3N1aXRlTmFtZSBrZXk6a2V5IGVuY29kZWRWYWx1ZTplbmNvZGVkU3RyaW5nXTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQppbmRleCAzYjhiZGVhM2E2YWI1YjQzNjZhNjA2ZGFhN2RhOGNjZmJmNTYyZjM3Li4y
YWYwYWM1OWY1M2E3M2QzMzI3MzE0NTMyOTIzZjJlMzJjN2RhYmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTk3NSw3ICs5
NzUsMTAgQEAgc3RhdGljIHZvaWQgc2V0UHJlZmVyZW5jZVZhbHVlKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBjb25zdCBTdHJpbmcmIGtleSwgaWQgdmFsdWUKIHsKICAgICBpZiAoZG9tYWluLmlzRW1w
dHkoKSkgewogICAgICAgICBDRlByZWZlcmVuY2VzU2V0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIChfX2JyaWRnZSBDRlByb3BlcnR5TGlzdFJlZil2YWx1ZSwga0NGUHJlZmVyZW5j
ZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5j
ZXNBbnlIb3N0KTsKLSAgICAgICAgQVNTRVJUKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6a2V5XSBpc0VxdWFsOnZhbHVlXSk7CisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgaWQgdmFsdWVBZnRlclNldHRpbmcgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgQVNTRVJU
KCghdmFsdWVBZnRlclNldHRpbmcgJiYgIXZhbHVlKSB8fCBbdmFsdWVBZnRlclNldHRpbmcgaXNF
cXVhbDp2YWx1ZV0pOworI2VuZGlmCiAgICAgfSBlbHNlCiAgICAgICAgIENGUHJlZmVyZW5jZXNT
ZXRWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgKF9fYnJpZGdlIENGUHJvcGVydHlM
aXN0UmVmKXZhbHVlLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGUHJlZmVyZW5j
ZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406633</attachid>
            <date>2020-08-14 16:19:01 -0700</date>
            <delta_ts>2020-08-15 15:11:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215523-20200814161900.patch</filename>
            <type>text/plain</type>
            <size>17852</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjOGM0N2Q4ZmQyZmFhNjQ0
ZGMyNmI2NjBhOTExZmU2YzNjNmQ0NWQuLjM4ZDQ0N2M0YzJkNGI2Yjc0MjVlMjI2MTA4NGVkZjE5
NTg4MjRiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDgtMTQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGl2ZSBXZWIgQ29udGVu
dCBwcm9jZXNzZXMgZG8gbm90IHJlc3BlY3QgYWNjZW50IGNvbG9yIGlmIGR5bmFtaWNhbGx5IGNo
YW5nZWQgdG8gIm11bHRpY29sb3IiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzOTQxMTMzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVs
dHMgX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6dG9WYWx1ZXNGb3JL
ZXlzOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZXRQcmVmZXJlbmNlVmFsdWUpOgorICAgICAgICBUaGUgTlNVc2Vy
RGVmYXVsdHMgc3luY2luZyBtZWNoYW5pc20gZG9lcyBub3QgcHJvcGFnYXRlIGRlZmF1bHRzIHRo
YXQgYXJlCisgICAgICAgIGRlbGV0ZWQgb3IgY2hhbmdlZCB0byBuaWwuCisKKyAgICAgICAgQWxs
b3cgbmlsLCBhbmQgZml4IHVwIGFuIGFzc2VydCB0aGF0IHdvdWxkIGZpcmUgZm9yIHRoZSBzYW1l
IHJlYXNvbi4KKwogMjAyMC0wOC0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUSzRdIE5vdGlmeSB0aGUgd2ViIHByb2Nlc3Mgb24gZHJh
ZyBsZWF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVy
ZW5jZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5j
ZU9ic2VydmVyLm1tCmluZGV4IDY2NTAyNzYzMWEyYjIzZDA2ZDcxNjdmY2E5MzI1ZWVjMWVmNWZm
ZTkuLmIxMGMxMWVjZWMyNzgzNzkyNjU1NTE0M2Y4N2MxZjcwZGM0MzNmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0KQEAg
LTczLDExICs3MywxNSBAQCAtICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1
ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+CiAKICAgICAgICAgYXV0byBn
bG9iYWxWYWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpa2V5LCBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKTsKICAgICAgICAgYXV0byBkb21h
aW5WYWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpa2V5LCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpbV9zdWl0ZU5hbWUsIGtDRlByZWZlcmVu
Y2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9zdCkpOwotICAgICAgICAKLSAgICAg
ICAgaWYgKGdsb2JhbFZhbHVlICYmIFtuZXdWYWx1ZSBpc0VxdWFsOihfX2JyaWRnZSBpZClnbG9i
YWxWYWx1ZS5nZXQoKV0pCisKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWVzQXJlRXF1YWwg
PSBbXSAoaWQgYSwgaWQgYikgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiB8fCBbYSBpc0Vx
dWFsOmJdOworICAgICAgICB9OworCisgICAgICAgIGlmIChwcmVmZXJlbmNlVmFsdWVzQXJlRXF1
YWwoKF9fYnJpZGdlIGlkKWdsb2JhbFZhbHVlLmdldCgpLCBuZXdWYWx1ZSkpCiAgICAgICAgICAg
ICBbbV9vYnNlcnZlciBwcmVmZXJlbmNlRGlkQ2hhbmdlOm5pbCBrZXk6a2V5IGVuY29kZWRWYWx1
ZTplbmNvZGVkU3RyaW5nXTsKIAotICAgICAgICBpZiAoZG9tYWluVmFsdWUgJiYgW25ld1ZhbHVl
IGlzRXF1YWw6KF9fYnJpZGdlIGlkKWRvbWFpblZhbHVlLmdldCgpXSkKKyAgICAgICAgaWYgKHBy
ZWZlcmVuY2VWYWx1ZXNBcmVFcXVhbCgoX19icmlkZ2UgaWQpZG9tYWluVmFsdWUuZ2V0KCksIG5l
d1ZhbHVlKSkKICAgICAgICAgICAgIFttX29ic2VydmVyIHByZWZlcmVuY2VEaWRDaGFuZ2U6bV9z
dWl0ZU5hbWUga2V5OmtleSBlbmNvZGVkVmFsdWU6ZW5jb2RlZFN0cmluZ107CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggM2I4YmRlYTNhNmFiNWI0MzY2YTYwNmRhYTdkYThjY2ZiZjU2MmYzNy4uMjViNWM1M2Fh
NDJiODA1OTg1MjIyYTM4ZjViMmI0YTA0NzFmMWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC05NzUsNyArOTc1LDEwIEBA
IHN0YXRpYyB2b2lkIHNldFByZWZlcmVuY2VWYWx1ZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29u
c3QgU3RyaW5nJiBrZXksIGlkIHZhbHVlCiB7CiAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpIHsK
ICAgICAgICAgQ0ZQcmVmZXJlbmNlc1NldFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCAoX19icmlkZ2UgQ0ZQcm9wZXJ0eUxpc3RSZWYpdmFsdWUsIGtDRlByZWZlcmVuY2VzQW55QXBw
bGljYXRpb24sIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9z
dCk7Ci0gICAgICAgIEFTU0VSVChbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gb2JqZWN0Rm9yS2V5OmtleV0gaXNFcXVhbDp2YWx1ZV0pOworI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgICAgIGlkIHZhbHVlQWZ0ZXJTZXR0aW5nID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OmtleV07CisgICAgICAgIEFTU0VSVCh2YWx1ZUFm
dGVyU2V0dGluZyA9PSB2YWx1ZSB8fCBbdmFsdWVBZnRlclNldHRpbmcgaXNFcXVhbDp2YWx1ZV0p
OworI2VuZGlmCiAgICAgfSBlbHNlCiAgICAgICAgIENGUHJlZmVyZW5jZXNTZXRWYWx1ZShrZXku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgKF9fYnJpZGdlIENGUHJvcGVydHlMaXN0UmVmKXZhbHVl
LCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNl
ciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZWVhY2JmNTg0NjU0OTUyZDIwN2U1MmU2ZGNkYTRm
MWZiMWJmYzU0Li5iMmZhZmRiYzM0MzUwN2UxZmU4MWFlM2MyOWI1ZjNiNDEwYmNmMDdjIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMjAtMDgtMTQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTGl2ZSBXZWIgQ29udGVudCBwcm9jZXNzZXMgZG8gbm90IHJlc3BlY3QgYWNj
ZW50IGNvbG9yIGlmIGR5bmFtaWNhbGx5IGNoYW5nZWQgdG8gIm11bHRpY29sb3IiCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1MjMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzOTQxMTMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5j
ZUNoYW5nZXMubW06CisgICAgICAgIChkZWxldGVUZXN0RGVmYXVsdHMpOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgIEZpeCBzb21lIG1pbm9yIHN0eWxlIGlzc3VlcyB3aXRoIHRoZXNlIHRlc3Rz
LgorICAgICAgICBGaXggYSBidWcgd2hlcmUgdGhlc2UgdGVzdHMgd291bGQgbGVhayBzdGF0ZSBi
ZXR3ZWVuIHRoZW1zZWx2ZXMgYnkgbGVhdmluZyBkZWZhdWx0cyBiZWhpbmQuCisgICAgICAgIENo
YW5nZSB0aGUgTlNVc2VyRGVmYXVsdHMga2V5IG5hbWUgc28gdGhhdCBpdCBpcyBhYnVuZGFudGx5
IG9idmlvdXMgd2hlcmUgaXQgY29tZXMgZnJvbSB3aGVuIHlvdSBzZWUgaXQgaW4geW91ciBkZWZh
dWx0cy4KKyAgICAgICAgTGVhdmUgYSBGSVhNRSBmb3IgdGhlIGZ1dHVyZSB0aGF0IHRoZXNlIHRl
c3RzIHNob3VsZCBwcm9iYWJseSBub3QgYmUgd3JpdGluZyB0byB0aGUgcmVhbCBwZXJzaXN0ZW50
IGRlZmF1bHRzLgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZW5zdXJlcyB0aGF0IHRoZSBvYnNl
cnZlciBjb3JyZWN0bHkgcmVzcGVjdHMgZGVsZXRpb24gb2YgYSBkZWZhdWx0LgorCiAyMDIwLTA4
LTE0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
RmxhdHBhayBTS10gRW5hYmxlIEdOT01FIGtleXJpbmcgc3VwcG9ydCBpbiBzdWJ2ZXJzaW9uCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hh
bmdlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFu
Z2VzLm1tCmluZGV4IGVmZjY5ZWZjOGY1ZjM2Yjc2MTNmMzg4MWE0YjcyMzMyZWJjYThiODUuLjRk
NjQwMzc4MmUxNDUyMjNiNjM1M2IyZDRhZDUwNzgwYzdmNmIwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCkBAIC0y
NSw2ICsyNSw5IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisvLyBGSVhNRTogVGhlc2UgdGVz
dHMgdG91Y2ggdGhlIHVzZXIncyAqYWN0dWFsKiBnbG9iYWwgYW5kIEFWRm91bmRhdGlvbiBkZWZh
dWx0cyBkb21haW5zLgorLy8gV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gZ2V0IHRoZSBzYW1lIHRl
c3QgY292ZXJhZ2UgdXNpbmcgdm9sYXRpbGUgZG9tYWlucyBvciBzd2l6emxpbmcgb3Igc29tZXRo
aW5nLgorCiAjaWYgV0tfSEFWRV9DX1NQSQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgpAQCAtNDcsMTAgKzUwLDE2IEBAIC0gKHZvaWQpcHJlZmVyZW5jZURpZENoYW5nZTooTlNTdHJp
bmcgKilkb21haW4ga2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVkVmFsdWU6CiB9CiBAZW5kCiAK
LXN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB0ZXN0S2V5ID0gQ0ZTVFIoInRlc3RrZXkiKTsKLXN0
YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBnbG9iYWxEb21haW4gPSBDRlNUUigia0NGUHJlZmVyZW5j
ZXNBbnlBcHBsaWNhdGlvbiIpOworc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHRlc3RLZXkgPSBD
RlNUUigiVGVzdFdlYktpdEFQSV9UZXN0S2V5Iik7CitzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYg
Z2xvYmFsRG9tYWluID0ga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbjsKIHN0YXRpYyBjb25z
dCBDRlN0cmluZ1JlZiB0ZXN0RG9tYWluID0gQ0ZTVFIoImNvbS5hcHBsZS5hdmZvdW5kYXRpb24i
KTsKIAorc3RhdGljIHZvaWQgZGVsZXRlVGVzdERlZmF1bHRzKCkKK3sKKyAgICBDRlByZWZlcmVu
Y2VzU2V0VmFsdWUodGVzdEtleSwgbmlsLCBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBr
Q0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRIb3N0KTsKKyAg
ICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUodGVzdEtleSwgbmlsLCB0ZXN0RG9tYWluKTsKK30K
Kwogc3RhdGljIHZvaWQgd2FpdEZvclByZWZlcmVuY2VTeW5jaHJvbml6YXRpb24oKQogewogICAg
IF9fYmxvY2sgYm9vbCBkaWRTeW5jaHJvbml6ZSA9IGZhbHNlOwpAQCAtNjIsNiArNzEsOCBAQCBz
dGF0aWMgdm9pZCB3YWl0Rm9yUHJlZmVyZW5jZVN5bmNocm9uaXphdGlvbigpCiAKIFRFU1QoV2Vi
S2l0LCBQcmVmZXJlbmNlT2JzZXJ2ZXIpCiB7CisgICAgZGVsZXRlVGVzdERlZmF1bHRzKCk7CisK
ICAgICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsKIAogICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZSh0ZXN0S2V5LCBDRlNUUigiMSIpLCB0ZXN0RG9tYWluKTsKQEAg
LTcxLDM0ICs4Miw0MiBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZU9ic2VydmVyKQogICAgIENG
UHJlZmVyZW5jZXNTZXRBcHBWYWx1ZSh0ZXN0S2V5LCBDRlNUUigiMiIpLCB0ZXN0RG9tYWluKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRQcmVmZXJlbmNlTm90aWZp
Y2F0aW9uKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwogfQogCiBURVNUKFdlYktpdCwg
UHJlZmVyZW5jZU9ic2VydmVyQXJyYXkpCiB7CisgICAgZGVsZXRlVGVzdERlZmF1bHRzKCk7CisK
ICAgICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsKIAogICAgIE5TQXJy
YXkgKmFycmF5ID0gQFtAMSwgQDIsIEAzXTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRv
cHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcg
Kil0ZXN0RG9tYWluXSk7Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6YXJyYXkg
Zm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0
OmFycmF5IGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKIAogICAgIGF1dG8gb2JzZXJ2ZXIg
PSBhZG9wdE5TKFtbV0tUZXN0UHJlZmVyZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CiAKICAg
ICBOU0FycmF5ICpjaGFuZ2VkQXJyYXkgPSBAW0AzLCBAMiwgQDFdOwotICAgIFt1c2VyRGVmYXVs
dHMuZ2V0KCkgc2V0T2JqZWN0OmNoYW5nZWRBcnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtl
eV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6Y2hhbmdlZEFycmF5IGZvcktleTooTlNT
dHJpbmcgKil0ZXN0S2V5XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRQcmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwog
fQogCiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXMpCiB7CisgICAgZGVsZXRlVGVzdERl
ZmF1bHRzKCk7CisKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUodGVzdEtleSwgQ0ZTVFIo
IjAiKSwgdGVzdERvbWFpbik7CiAKICAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVz
dFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwogICAgIAogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5h
bHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
UG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRQcm9jZXNzUG9vbDooV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKIApAQCAtMTI1LDE3ICsxNDQsMjEgQEAgVEVTVChXZWJL
aXQsIFByZWZlcmVuY2VDaGFuZ2VzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVj
ZWl2ZWRQcmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKIAogICAgIEVYUEVDVF9FUShwcmVmZXJlbmNl
VmFsdWUoKSwgMik7CisKKyAgICBkZWxldGVUZXN0RGVmYXVsdHMoKTsKIH0KIAogVEVTVChXZWJL
aXQsIEdsb2JhbFByZWZlcmVuY2VDaGFuZ2VzVXNpbmdEZWZhdWx0c1dyaXRlKQogeworICAgIGRl
bGV0ZVRlc3REZWZhdWx0cygpOworCiAgICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiZGVmYXVsdHMgd3JpdGUgJUAgJUAgMCIsIChfX2JyaWRnZSBpZClnbG9iYWxEb21haW4s
IChfX2JyaWRnZSBpZCl0ZXN0S2V5XS5VVEY4U3RyaW5nKTsKICAgICAKICAgICBhdXRvIG9ic2Vy
dmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwog
ICAgIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0
ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmln
dXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQo
KTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQcm9jZXNzUG9vbCAqKWNv
bnRleHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKICAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKIApAQCAtMTYyLDIw
ICsxODUsMjQgQEAgVEVTVChXZWJLaXQsIEdsb2JhbFByZWZlcmVuY2VDaGFuZ2VzVXNpbmdEZWZh
dWx0c1dyaXRlKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRQcmVmZXJl
bmNlTm90aWZpY2F0aW9uKTsKIAogICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMik7
CisKKyAgICBkZWxldGVUZXN0RGVmYXVsdHMoKTsKIH0KIAogVEVTVChXZWJLaXQsIFByZWZlcmVu
Y2VDaGFuZ2VzQXJyYXkpCiB7CisgICAgZGVsZXRlVGVzdERlZmF1bHRzKCk7CisKICAgICBhdXRv
IG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5p
dF0pOwogCiAgICAgTlNBcnJheSAqYXJyYXkgPSBAW0AxLCBAMiwgQDNdOwogCiAgICAgYXV0byB1
c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3Vp
dGVOYW1lOihOU1N0cmluZyAqKXRlc3REb21haW5dKTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgp
IHNldE9iamVjdDphcnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07CisgICAgW3VzZXJE
ZWZhdWx0cyBzZXRPYmplY3Q6YXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOwogCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBh
ZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRs
ZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5n
ZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogCiAgICAgYXV0byBwcmVmZXJl
bmNlVmFsdWUgPSBbJl0gewpAQCAtMTg3LDcgKzIxNCw3IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJl
bmNlQ2hhbmdlc0FycmF5KQogICAgIHByZWZlcmVuY2VWYWx1ZSgpOwogCiAgICAgTlNBcnJheSAq
Y2hhbmdlZEFycmF5ID0gQFtAMywgQDIsIEAxXTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNl
dE9iamVjdDpjaGFuZ2VkQXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1
c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmNoYW5nZWRBcnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVz
dEtleV07CiAKICAgICBhdXRvIGVuY29kZWRTdHJpbmcgPSBwcmVmZXJlbmNlVmFsdWUoKTsKICAg
ICBhdXRvIGVuY29kZWREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNl
NjRFbmNvZGVkU3RyaW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczowXSk7CkBAIC0xOTcsMTAgKzIy
NCwxNCBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNBcnJheSkKICAgICBBU1NFUlRf
VFJVRSghZXJyKTsKICAgICBBU1NFUlRfVFJVRShvYmplY3QpOwogICAgIEFTU0VSVF9UUlVFKFtv
YmplY3QgaXNFcXVhbDpjaGFuZ2VkQXJyYXldKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygp
OwogfQogCiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNEaWN0aW9uYXJ5KQogeworICAg
IGRlbGV0ZVRlc3REZWZhdWx0cygpOworCiAgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tX
S1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TRGljdGlvbmFy
eSAqZGljdCA9IEB7CkBAIC0yMDksMTEgKzI0MCwxMSBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5j
ZUNoYW5nZXNEaWN0aW9uYXJ5KQogICAgIH07CiAKICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFk
b3B0TlMoW1tOU1VzZXJEZWZhdWx0cyBhbGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5n
ICopdGVzdERvbWFpbl0pOwotICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmRpY3Qg
Zm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0
OmRpY3QgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOwogCiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRB
UEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0lu
amVjdGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29s
ID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
IGFkZFRvV2luZG93OllFU10pOwogCiAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewpA
QCAtMjI5LDcgKzI2MCw3IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0RpY3Rpb25h
cnkpCiAgICAgICAgIEAiYiIgOiBAMiwKICAgICAgICAgQCJjIiA6IEAzLAogICAgIH07Ci0gICAg
W3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZERpY3QgZm9yS2V5OihOU1N0cmlu
ZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmNoYW5nZWREaWN0IGZv
cktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKIAogICAgIGF1dG8gZW5jb2RlZFN0cmluZyA9IHBy
ZWZlcmVuY2VWYWx1ZSgpOwogICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6ZW5jb2RlZFN0cmluZyBvcHRpb25z
OjBdKTsKQEAgLTIzOSwyMCArMjcwLDI0IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdl
c0RpY3Rpb25hcnkpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7CiAgICAgQVNTRVJUX1RSVUUob2Jq
ZWN0KTsKICAgICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1YWw6Y2hhbmdlZERpY3RdKTsKKwor
ICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwogfQogCiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNo
YW5nZXNEYXRhKQogeworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOworCiAgICAgYXV0byBvYnNl
cnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsK
IAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiYWJjIiBsZW5ndGg6
M107CiAKICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0TlMoW1tOU1VzZXJEZWZhdWx0cyBh
bGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopdGVzdERvbWFpbl0pOwotICAgIFt1
c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmRhdGEgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RL
ZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmRhdGEgZm9yS2V5OihOU1N0cmluZyAq
KXRlc3RLZXldOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKLSAg
ICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250
ZXh0LmdldCgpOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQ
b29sICopY29udGV4dC5nZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogCiAg
ICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewpAQCAtMjY0LDcgKzI5OSw3IEBAIFRFU1Qo
V2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0RhdGEpCiAgICAgcHJlZmVyZW5jZVZhbHVlKCk7CiAK
ICAgICBOU0RhdGEgKmNoYW5nZWREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJhYmNkIiBs
ZW5ndGg6NF07Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZERhdGEg
Zm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0
OmNoYW5nZWREYXRhIGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKIAogICAgIGF1dG8gZW5j
b2RlZFN0cmluZyA9IHByZWZlcmVuY2VWYWx1ZSgpOwogICAgIGF1dG8gZW5jb2RlZERhdGEgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6ZW5jb2Rl
ZFN0cmluZyBvcHRpb25zOjBdKTsKQEAgLTI3NCwyMCArMzA5LDI0IEBAIFRFU1QoV2ViS2l0LCBQ
cmVmZXJlbmNlQ2hhbmdlc0RhdGEpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7CiAgICAgQVNTRVJU
X1RSVUUob2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1YWw6Y2hhbmdlZERh
dGFdKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwogfQogCiBURVNUKFdlYktpdCwgUHJl
ZmVyZW5jZUNoYW5nZXNEYXRlKQogeworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOworCiAgICAg
YXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2Nd
IGluaXRdKTsKIAogICAgIE5TRGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZU5vdzowXTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNl
ckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKil0ZXN0RG9tYWlu
XSk7Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6ZGF0ZSBmb3JLZXk6KE5TU3Ry
aW5nICopdGVzdEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6ZGF0ZSBmb3JLZXk6
KE5TU3RyaW5nICopdGVzdEtleV07CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFdLUmV0YWluUHRy
PFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3Jl
YXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVU
ZXN0IikpOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNz
UG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6
KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6
WUVTXSk7CiAKICAgICBhdXRvIHByZWZlcmVuY2VWYWx1ZSA9IFsmXSB7CkBAIC0yOTksNyArMzM4
LDcgQEAgVEVTVChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzRGF0ZSkKICAgICBwcmVmZXJlbmNl
VmFsdWUoKTsKIAogICAgIE5TRGF0ZSAqY2hhbmdlZERhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGlt
ZUludGVydmFsU2luY2VOb3c6MTBdOwotICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0
OmNoYW5nZWREYXRlIGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKKyAgICBbdXNlckRlZmF1
bHRzIHNldE9iamVjdDpjaGFuZ2VkRGF0ZSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07CiAK
ICAgICBhdXRvIGVuY29kZWRTdHJpbmcgPSBwcmVmZXJlbmNlVmFsdWUoKTsKICAgICBhdXRvIGVu
Y29kZWREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVk
U3RyaW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczowXSk7CkBAIC0zMDksNiArMzQ4LDM4IEBAIFRF
U1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0RhdGUpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7
CiAgICAgQVNTRVJUX1RSVUUob2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1
YWw6Y2hhbmdlZERhdGVdKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOworfQorCitURVNU
KFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNOaWwpCit7CisgICAgZGVsZXRlVGVzdERlZmF1bHRz
KCk7CisKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNl
cnZlciBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtb
TlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXRlc3RE
b21haW5dKTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpAMSBmb3JLZXk6KE5TU3RyaW5n
ICopdGVzdEtleV07CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4
dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4
dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4
dC5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgYXV0byBwcmVm
ZXJlbmNlVmFsdWUgPSBbJl0geworICAgICAgICB3YWl0Rm9yUHJlZmVyZW5jZVN5bmNocm9uaXph
dGlvbigpOworICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIndpbmRvdy5pbnRlcm5hbHMucmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwiJUBcIixcIiVAXCIp
IiwgKE5TU3RyaW5nICopdGVzdERvbWFpbiwgKE5TU3RyaW5nICopdGVzdEtleV07CisgICAgICAg
IHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OmpzXS5pbnRWYWx1
ZTsKKyAgICB9OworCisgICAgRVhQRUNUX0VRKDEsIHByZWZlcmVuY2VWYWx1ZSgpKTsKKworICAg
IFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0Om5pbCBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07
CisKKyAgICBFWFBFQ1RfRVEoMCwgcHJlZmVyZW5jZVZhbHVlKCkpOworCisgICAgZGVsZXRlVGVz
dERlZmF1bHRzKCk7CiB9CiAKIHN0YXRpYyBJTVAgc2hhcmVkSW5zdGFuY2VNZXRob2RPcmlnaW5h
bCA9IG5pbDsKQEAgLTMzMSw3ICs0MDIsNyBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZU9ic2Vy
dmVyU3RhcnRlZE9uQWN0aXZhdGlvbikKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpj
cmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRs
ZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nl
c3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9v
bDooV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRv
dzpZRVNdKTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
InNpbXBsZSJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406640</attachid>
            <date>2020-08-14 18:12:47 -0700</date>
            <delta_ts>2020-08-15 15:11:18 -0700</delta_ts>
            <desc>test logging</desc>
            <filename>bug-215523-20200814181246.patch</filename>
            <type>text/plain</type>
            <size>19502</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjOGM0N2Q4ZmQyZmFhNjQ0
ZGMyNmI2NjBhOTExZmU2YzNjNmQ0NWQuLjNlODllNTJjNmU4ZTU1OGZhMTllN2I3ZGU1ZmFjNTEx
NWVmYTY0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDgtMTQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGl2ZSBXZWIgQ29udGVu
dCBwcm9jZXNzZXMgZG8gbm90IHJlc3BlY3QgYWNjZW50IGNvbG9yIGlmIGR5bmFtaWNhbGx5IGNo
YW5nZWQgdG8gIm11bHRpY29sb3IiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzOTQxMTMzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW06CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRz
IF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5
czpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6c2V0UHJlZmVyZW5jZVZhbHVlKToKKyAgICAgICAgVGhlIE5TVXNlckRl
ZmF1bHRzIHN5bmNpbmcgbWVjaGFuaXNtIGRvZXMgbm90IHByb3BhZ2F0ZSBkZWZhdWx0cyB0aGF0
IGFyZQorICAgICAgICBkZWxldGVkIG9yIGNoYW5nZWQgdG8gbmlsLgorCisgICAgICAgIEFsbG93
IG5pbCwgYW5kIGZpeCB1cCBhbiBhc3NlcnQgdGhhdCB3b3VsZCBmaXJlIGZvciB0aGUgc2FtZSBy
ZWFzb24uCisKIDIwMjAtMDgtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEs0XSBOb3RpZnkgdGhlIHdlYiBwcm9jZXNzIG9uIGRyYWcg
bGVhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMDUzYTRkZGEyMDA4
ZWZkN2E2Njg4ZDM0NDhmZmJmM2JmY2JlMWY1Li5mZjJhOTMwMzEzYjg2OGQwYzQyM2RlOTZlNDE4
ZjJkZTgyYjQ4NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01OTE5
LDYgKzU5MTksOCBAQCB2b2lkIEludGVybmFsczo6c2V0VlA5U2NyZWVuU2l6ZUFuZFNjYWxlRm9y
VGVzdGluZyhkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQsCiAKIGludCBJbnRlcm5hbHM6OnJl
YWRQcmVmZXJlbmNlSW50ZWdlcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBr
ZXkpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJyZWFkUHJlZmVyZW5jZUludGVnZXIgJXMiLCBrZXku
dXRmOCgpLmRhdGEoKSk7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBCb29sZWFuIGtleUV4
aXN0c0FuZEhhc1ZhbGlkRm9ybWF0ID0gZmFsc2U7CiAgICAgcmV0dXJuIENGUHJlZmVyZW5jZXNH
ZXRBcHBJbnRlZ2VyVmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAma2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCmlu
ZGV4IDY2NTAyNzYzMWEyYjIzZDA2ZDcxNjdmY2E5MzI1ZWVjMWVmNWZmZTkuLjE0ODY3YzBmNzIw
YmM3OTU4YjNmMWE0MDRlN2I4ZDVkMTUzYTZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0KQEAgLTYyLDYgKzYyLDggQEAg
LSAodm9pZClfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czooTlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIGlkPgogICAgICAgICBpZiAobmV3VmFsdWUgJiYgIVtbbmV3VmFs
dWUgY2xhc3NdIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVl
c0ZvcktleXMgJUAgJUAiLCBrZXksIG5ld1ZhbHVlKTsKKwogICAgICAgICBOU1N0cmluZyAqZW5j
b2RlZFN0cmluZyA9IG5pbDsKIAogICAgICAgICBpZiAobmV3VmFsdWUpIHsKQEAgLTczLDExICs3
NSwxNSBAQCAtICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlz
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+CiAKICAgICAgICAgYXV0byBnbG9iYWxWYWx1
ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
a2V5LCBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRV
c2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKTsKICAgICAgICAgYXV0byBkb21haW5WYWx1ZSA9
IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5
LCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpbV9zdWl0ZU5hbWUsIGtDRlByZWZlcmVuY2VzQ3VycmVu
dFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9zdCkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGds
b2JhbFZhbHVlICYmIFtuZXdWYWx1ZSBpc0VxdWFsOihfX2JyaWRnZSBpZClnbG9iYWxWYWx1ZS5n
ZXQoKV0pCisKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWVzQXJlRXF1YWwgPSBbXSAoaWQg
YSwgaWQgYikgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiB8fCBbYSBpc0VxdWFsOmJdOwor
ICAgICAgICB9OworCisgICAgICAgIGlmIChwcmVmZXJlbmNlVmFsdWVzQXJlRXF1YWwoKF9fYnJp
ZGdlIGlkKWdsb2JhbFZhbHVlLmdldCgpLCBuZXdWYWx1ZSkpCiAgICAgICAgICAgICBbbV9vYnNl
cnZlciBwcmVmZXJlbmNlRGlkQ2hhbmdlOm5pbCBrZXk6a2V5IGVuY29kZWRWYWx1ZTplbmNvZGVk
U3RyaW5nXTsKIAotICAgICAgICBpZiAoZG9tYWluVmFsdWUgJiYgW25ld1ZhbHVlIGlzRXF1YWw6
KF9fYnJpZGdlIGlkKWRvbWFpblZhbHVlLmdldCgpXSkKKyAgICAgICAgaWYgKHByZWZlcmVuY2VW
YWx1ZXNBcmVFcXVhbCgoX19icmlkZ2UgaWQpZG9tYWluVmFsdWUuZ2V0KCksIG5ld1ZhbHVlKSkK
ICAgICAgICAgICAgIFttX29ic2VydmVyIHByZWZlcmVuY2VEaWRDaGFuZ2U6bV9zdWl0ZU5hbWUg
a2V5OmtleSBlbmNvZGVkVmFsdWU6ZW5jb2RlZFN0cmluZ107CiAgICAgfQogfQpAQCAtMTY3LDYg
KzE3Myw4IEBAIC0gKHZvaWQpcHJlZmVyZW5jZURpZENoYW5nZTooTlNTdHJpbmcgKilkb21haW4g
a2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVkVmFsdWU6CiAgICAgICAgIGlmIChlbmNvZGVkVmFs
dWUpCiAgICAgICAgICAgICBlbmNvZGVkU3RyaW5nID0gU3RyaW5nKGVuY29kZWRWYWx1ZSk7CiAK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJwcmVmZXJlbmNlRGlkQ2hhbmdlICVAICVAIiwga2V5LCBl
bmNvZGVkVmFsdWUpOworCiAgICAgICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKICAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT5ub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRTdHJpbmcp
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KaW5kZXggM2I4YmRlYTNhNmFiNWI0MzY2YTYwNmRhYTdkYThjY2ZiZjU2MmYz
Ny4uODg5OGM5NmU4ZDQ0ZmEwMjRjMjY2YzU4M2MzYjYwYzQ1MThjYWMxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC05NzMs
OSArOTczLDEzIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkTm90aWZpY2F0aW9uc0Zv
clByZWZlcmVuY2VDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHN0YXRpYyB2b2lkIHNldFBy
ZWZlcmVuY2VWYWx1ZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGlk
IHZhbHVlKQogeworICAgIFdURkxvZ0Fsd2F5cygic2V0UHJlZmVyZW5jZVZhbHVlICVzICVAIiwg
a2V5LnV0ZjgoKS5kYXRhKCksIHZhbHVlKTsKICAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkgewog
ICAgICAgICBDRlByZWZlcmVuY2VzU2V0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IChfX2JyaWRnZSBDRlByb3BlcnR5TGlzdFJlZil2YWx1ZSwga0NGUHJlZmVyZW5jZXNBbnlBcHBs
aWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0
KTsKLSAgICAgICAgQVNTRVJUKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6a2V5XSBpc0VxdWFsOnZhbHVlXSk7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgaWQgdmFsdWVBZnRlclNldHRpbmcgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgQVNTRVJUKHZhbHVlQWZ0
ZXJTZXR0aW5nID09IHZhbHVlIHx8IFt2YWx1ZUFmdGVyU2V0dGluZyBpc0VxdWFsOnZhbHVlXSk7
CisjZW5kaWYKICAgICB9IGVsc2UKICAgICAgICAgQ0ZQcmVmZXJlbmNlc1NldFZhbHVlKGtleS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAoX19icmlkZ2UgQ0ZQcm9wZXJ0eUxpc3RSZWYpdmFsdWUs
IGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2Vy
LCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFlZWFjYmY1ODQ2NTQ5NTJkMjA3ZTUyZTZkY2RhNGYx
ZmIxYmZjNTQuLmEwMjhhOGIyYTUxOTE3NDY0NGYxNDMxYzQ5NTRiMzdhZGY2NTEyZWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAyMC0wOC0xNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
KworICAgICAgICBMaXZlIFdlYiBDb250ZW50IHByb2Nlc3NlcyBkbyBub3QgcmVzcGVjdCBhY2Nl
bnQgY29sb3IgaWYgZHluYW1pY2FsbHkgY2hhbmdlZCB0byAibXVsdGljb2xvciIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTUyMworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjM5NDExMzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhz
aWVoLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5jZUNo
YW5nZXMubW06CisgICAgICAgIChkZWxldGVUZXN0RGVmYXVsdHMpOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgIEZpeCBzb21lIG1pbm9yIHN0eWxlIGlzc3VlcyB3aXRoIHRoZXNlIHRlc3RzLgor
ICAgICAgICBGaXggYSBidWcgd2hlcmUgdGhlc2UgdGVzdHMgd291bGQgbGVhayBzdGF0ZSBiZXR3
ZWVuIHRoZW1zZWx2ZXMgYnkgbGVhdmluZyBkZWZhdWx0cyBiZWhpbmQuCisgICAgICAgIENoYW5n
ZSB0aGUgTlNVc2VyRGVmYXVsdHMga2V5IG5hbWUgc28gdGhhdCBpdCBpcyBhYnVuZGFudGx5IG9i
dmlvdXMgd2hlcmUgaXQgY29tZXMgZnJvbSB3aGVuIHlvdSBzZWUgaXQgaW4geW91ciBkZWZhdWx0
cy4KKyAgICAgICAgTGVhdmUgYSBGSVhNRSBmb3IgdGhlIGZ1dHVyZSB0aGF0IHRoZXNlIHRlc3Rz
IHNob3VsZCBwcm9iYWJseSBub3QgYmUgd3JpdGluZyB0byB0aGUgcmVhbCBwZXJzaXN0ZW50IGRl
ZmF1bHRzLgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZW5zdXJlcyB0aGF0IHRoZSBvYnNlcnZl
ciBjb3JyZWN0bHkgcmVzcGVjdHMgZGVsZXRpb24gb2YgYSBkZWZhdWx0LgorCiAyMDIwLTA4LTE0
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxh
dHBhayBTS10gRW5hYmxlIEdOT01FIGtleXJpbmcgc3VwcG9ydCBpbiBzdWJ2ZXJzaW9uCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hhbmdl
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2Vz
Lm1tCmluZGV4IGVmZjY5ZWZjOGY1ZjM2Yjc2MTNmMzg4MWE0YjcyMzMyZWJjYThiODUuLjRkNjQw
Mzc4MmUxNDUyMjNiNjM1M2IyZDRhZDUwNzgwYzdmNmIwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCkBAIC0yNSw2
ICsyNSw5IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisvLyBGSVhNRTogVGhlc2UgdGVzdHMg
dG91Y2ggdGhlIHVzZXIncyAqYWN0dWFsKiBnbG9iYWwgYW5kIEFWRm91bmRhdGlvbiBkZWZhdWx0
cyBkb21haW5zLgorLy8gV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gZ2V0IHRoZSBzYW1lIHRlc3Qg
Y292ZXJhZ2UgdXNpbmcgdm9sYXRpbGUgZG9tYWlucyBvciBzd2l6emxpbmcgb3Igc29tZXRoaW5n
LgorCiAjaWYgV0tfSEFWRV9DX1NQSQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgpA
QCAtNDcsMTAgKzUwLDE2IEBAIC0gKHZvaWQpcHJlZmVyZW5jZURpZENoYW5nZTooTlNTdHJpbmcg
Kilkb21haW4ga2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVkVmFsdWU6CiB9CiBAZW5kCiAKLXN0
YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB0ZXN0S2V5ID0gQ0ZTVFIoInRlc3RrZXkiKTsKLXN0YXRp
YyBjb25zdCBDRlN0cmluZ1JlZiBnbG9iYWxEb21haW4gPSBDRlNUUigia0NGUHJlZmVyZW5jZXNB
bnlBcHBsaWNhdGlvbiIpOworc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHRlc3RLZXkgPSBDRlNU
UigiVGVzdFdlYktpdEFQSV9UZXN0S2V5Iik7CitzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgZ2xv
YmFsRG9tYWluID0ga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbjsKIHN0YXRpYyBjb25zdCBD
RlN0cmluZ1JlZiB0ZXN0RG9tYWluID0gQ0ZTVFIoImNvbS5hcHBsZS5hdmZvdW5kYXRpb24iKTsK
IAorc3RhdGljIHZvaWQgZGVsZXRlVGVzdERlZmF1bHRzKCkKK3sKKyAgICBDRlByZWZlcmVuY2Vz
U2V0VmFsdWUodGVzdEtleSwgbmlsLCBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQ
cmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRIb3N0KTsKKyAgICBD
RlByZWZlcmVuY2VzU2V0QXBwVmFsdWUodGVzdEtleSwgbmlsLCB0ZXN0RG9tYWluKTsKK30KKwog
c3RhdGljIHZvaWQgd2FpdEZvclByZWZlcmVuY2VTeW5jaHJvbml6YXRpb24oKQogewogICAgIF9f
YmxvY2sgYm9vbCBkaWRTeW5jaHJvbml6ZSA9IGZhbHNlOwpAQCAtNjIsNiArNzEsOCBAQCBzdGF0
aWMgdm9pZCB3YWl0Rm9yUHJlZmVyZW5jZVN5bmNocm9uaXphdGlvbigpCiAKIFRFU1QoV2ViS2l0
LCBQcmVmZXJlbmNlT2JzZXJ2ZXIpCiB7CisgICAgZGVsZXRlVGVzdERlZmF1bHRzKCk7CisKICAg
ICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsKIAogICAgIENGUHJlZmVy
ZW5jZXNTZXRBcHBWYWx1ZSh0ZXN0S2V5LCBDRlNUUigiMSIpLCB0ZXN0RG9tYWluKTsKQEAgLTcx
LDM0ICs4Miw0MiBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZU9ic2VydmVyKQogICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZSh0ZXN0S2V5LCBDRlNUUigiMiIpLCB0ZXN0RG9tYWluKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRQcmVmZXJlbmNlTm90aWZpY2F0
aW9uKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwogfQogCiBURVNUKFdlYktpdCwgUHJl
ZmVyZW5jZU9ic2VydmVyQXJyYXkpCiB7CisgICAgZGVsZXRlVGVzdERlZmF1bHRzKCk7CisKICAg
ICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsKIAogICAgIE5TQXJyYXkg
KmFycmF5ID0gQFtAMSwgQDIsIEAzXTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHRO
UyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKil0
ZXN0RG9tYWluXSk7Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6YXJyYXkgZm9y
S2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmFy
cmF5IGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKIAogICAgIGF1dG8gb2JzZXJ2ZXIgPSBh
ZG9wdE5TKFtbV0tUZXN0UHJlZmVyZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CiAKICAgICBO
U0FycmF5ICpjaGFuZ2VkQXJyYXkgPSBAW0AzLCBAMiwgQDFdOwotICAgIFt1c2VyRGVmYXVsdHMu
Z2V0KCkgc2V0T2JqZWN0OmNoYW5nZWRBcnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07
CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6Y2hhbmdlZEFycmF5IGZvcktleTooTlNTdHJp
bmcgKil0ZXN0S2V5XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRQ
cmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwogfQog
CiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXMpCiB7CisgICAgZGVsZXRlVGVzdERlZmF1
bHRzKCk7CisKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUodGVzdEtleSwgQ0ZTVFIoIjAi
KSwgdGVzdERvbWFpbik7CiAKICAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFBy
ZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwogICAgIAogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0
QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJ
bmplY3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9v
bCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRQcm9jZXNzUG9vbDooV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KSBhZGRUb1dpbmRvdzpZRVNdKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJzaW1wbGUiXTsKIApAQCAtMTI1LDE3ICsxNDQsMjEgQEAgVEVTVChXZWJLaXQs
IFByZWZlcmVuY2VDaGFuZ2VzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRQcmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKIAogICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFs
dWUoKSwgMik7CisKKyAgICBkZWxldGVUZXN0RGVmYXVsdHMoKTsKIH0KIAogVEVTVChXZWJLaXQs
IEdsb2JhbFByZWZlcmVuY2VDaGFuZ2VzVXNpbmdEZWZhdWx0c1dyaXRlKQogeworICAgIGRlbGV0
ZVRlc3REZWZhdWx0cygpOworCiAgICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiZGVmYXVsdHMgd3JpdGUgJUAgJUAgMCIsIChfX2JyaWRnZSBpZClnbG9iYWxEb21haW4sIChf
X2JyaWRnZSBpZCl0ZXN0S2V5XS5VVEY4U3RyaW5nKTsKICAgICAKICAgICBhdXRvIG9ic2VydmVy
ID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwogICAg
IAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0
ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRC
dW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJh
dGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQcm9jZXNzUG9vbCAqKWNvbnRl
eHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKIApAQCAtMTYyLDIwICsx
ODUsMjQgQEAgVEVTVChXZWJLaXQsIEdsb2JhbFByZWZlcmVuY2VDaGFuZ2VzVXNpbmdEZWZhdWx0
c1dyaXRlKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRQcmVmZXJlbmNl
Tm90aWZpY2F0aW9uKTsKIAogICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMik7CisK
KyAgICBkZWxldGVUZXN0RGVmYXVsdHMoKTsKIH0KIAogVEVTVChXZWJLaXQsIFByZWZlcmVuY2VD
aGFuZ2VzQXJyYXkpCiB7CisgICAgZGVsZXRlVGVzdERlZmF1bHRzKCk7CisKICAgICBhdXRvIG9i
c2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0p
OwogCiAgICAgTlNBcnJheSAqYXJyYXkgPSBAW0AxLCBAMiwgQDNdOwogCiAgICAgYXV0byB1c2Vy
RGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVO
YW1lOihOU1N0cmluZyAqKXRlc3REb21haW5dKTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNl
dE9iamVjdDphcnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07CisgICAgW3VzZXJEZWZh
dWx0cyBzZXRPYmplY3Q6YXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOwogCiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9w
dFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRl
c3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIFtj
b25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQo
KV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogCiAgICAgYXV0byBwcmVmZXJlbmNl
VmFsdWUgPSBbJl0gewpAQCAtMTg3LDcgKzIxNCw3IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNl
Q2hhbmdlc0FycmF5KQogICAgIHByZWZlcmVuY2VWYWx1ZSgpOwogCiAgICAgTlNBcnJheSAqY2hh
bmdlZEFycmF5ID0gQFtAMywgQDIsIEAxXTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9i
amVjdDpjaGFuZ2VkQXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2Vy
RGVmYXVsdHMgc2V0T2JqZWN0OmNoYW5nZWRBcnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtl
eV07CiAKICAgICBhdXRvIGVuY29kZWRTdHJpbmcgPSBwcmVmZXJlbmNlVmFsdWUoKTsKICAgICBh
dXRvIGVuY29kZWREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRF
bmNvZGVkU3RyaW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczowXSk7CkBAIC0xOTcsMTAgKzIyNCwx
NCBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNBcnJheSkKICAgICBBU1NFUlRfVFJV
RSghZXJyKTsKICAgICBBU1NFUlRfVFJVRShvYmplY3QpOwogICAgIEFTU0VSVF9UUlVFKFtvYmpl
Y3QgaXNFcXVhbDpjaGFuZ2VkQXJyYXldKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwog
fQogCiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNEaWN0aW9uYXJ5KQogeworICAgIGRl
bGV0ZVRlc3REZWZhdWx0cygpOworCiAgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rl
c3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TRGljdGlvbmFyeSAq
ZGljdCA9IEB7CkBAIC0yMDksMTEgKzI0MCwxMSBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNo
YW5nZXNEaWN0aW9uYXJ5KQogICAgIH07CiAKICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0
TlMoW1tOU1VzZXJEZWZhdWx0cyBhbGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5nICop
dGVzdERvbWFpbl0pOwotICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmRpY3QgZm9y
S2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmRp
Y3QgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVj
dGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0g
KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIFtjb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07CiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFk
ZFRvV2luZG93OllFU10pOwogCiAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewpAQCAt
MjI5LDcgKzI2MCw3IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0RpY3Rpb25hcnkp
CiAgICAgICAgIEAiYiIgOiBAMiwKICAgICAgICAgQCJjIiA6IEAzLAogICAgIH07Ci0gICAgW3Vz
ZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZERpY3QgZm9yS2V5OihOU1N0cmluZyAq
KXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmNoYW5nZWREaWN0IGZvcktl
eTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKIAogICAgIGF1dG8gZW5jb2RlZFN0cmluZyA9IHByZWZl
cmVuY2VWYWx1ZSgpOwogICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6ZW5jb2RlZFN0cmluZyBvcHRpb25zOjBd
KTsKQEAgLTIzOSwyMCArMjcwLDI0IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0Rp
Y3Rpb25hcnkpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7CiAgICAgQVNTRVJUX1RSVUUob2JqZWN0
KTsKICAgICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1YWw6Y2hhbmdlZERpY3RdKTsKKworICAg
IGRlbGV0ZVRlc3REZWZhdWx0cygpOwogfQogCiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5n
ZXNEYXRhKQogeworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOworCiAgICAgYXV0byBvYnNlcnZl
ciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKIAog
ICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiYWJjIiBsZW5ndGg6M107
CiAKICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0TlMoW1tOU1VzZXJEZWZhdWx0cyBhbGxv
Y10gaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopdGVzdERvbWFpbl0pOwotICAgIFt1c2Vy
RGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmRhdGEgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXld
OworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmRhdGEgZm9yS2V5OihOU1N0cmluZyAqKXRl
c3RLZXldOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+
IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKLSAgICBj
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0
LmdldCgpOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29s
ICopY29udGV4dC5nZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogCiAgICAg
YXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewpAQCAtMjY0LDcgKzI5OSw3IEBAIFRFU1QoV2Vi
S2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0RhdGEpCiAgICAgcHJlZmVyZW5jZVZhbHVlKCk7CiAKICAg
ICBOU0RhdGEgKmNoYW5nZWREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJhYmNkIiBsZW5n
dGg6NF07Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZERhdGEgZm9y
S2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmNo
YW5nZWREYXRhIGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKIAogICAgIGF1dG8gZW5jb2Rl
ZFN0cmluZyA9IHByZWZlcmVuY2VWYWx1ZSgpOwogICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6ZW5jb2RlZFN0
cmluZyBvcHRpb25zOjBdKTsKQEAgLTI3NCwyMCArMzA5LDI0IEBAIFRFU1QoV2ViS2l0LCBQcmVm
ZXJlbmNlQ2hhbmdlc0RhdGEpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7CiAgICAgQVNTRVJUX1RS
VUUob2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1YWw6Y2hhbmdlZERhdGFd
KTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOwogfQogCiBURVNUKFdlYktpdCwgUHJlZmVy
ZW5jZUNoYW5nZXNEYXRlKQogeworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOworCiAgICAgYXV0
byBvYnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGlu
aXRdKTsKIAogICAgIE5TRGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxT
aW5jZU5vdzowXTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRl
ZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKil0ZXN0RG9tYWluXSk7
Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6ZGF0ZSBmb3JLZXk6KE5TU3RyaW5n
ICopdGVzdEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6ZGF0ZSBmb3JLZXk6KE5T
U3RyaW5nICopdGVzdEtleV07CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRl
Q29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0
IikpOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9v
bCAqKWNvbnRleHQuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6KFdL
UHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMw
MCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVT
XSk7CiAKICAgICBhdXRvIHByZWZlcmVuY2VWYWx1ZSA9IFsmXSB7CkBAIC0yOTksNyArMzM4LDcg
QEAgVEVTVChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzRGF0ZSkKICAgICBwcmVmZXJlbmNlVmFs
dWUoKTsKIAogICAgIE5TRGF0ZSAqY2hhbmdlZERhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUlu
dGVydmFsU2luY2VOb3c6MTBdOwotICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmNo
YW5nZWREYXRlIGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKKyAgICBbdXNlckRlZmF1bHRz
IHNldE9iamVjdDpjaGFuZ2VkRGF0ZSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07CiAKICAg
ICBhdXRvIGVuY29kZWRTdHJpbmcgPSBwcmVmZXJlbmNlVmFsdWUoKTsKICAgICBhdXRvIGVuY29k
ZWREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3Ry
aW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczowXSk7CkBAIC0zMDksNiArMzQ4LDM4IEBAIFRFU1Qo
V2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0RhdGUpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7CiAg
ICAgQVNTRVJUX1RSVUUob2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1YWw6
Y2hhbmdlZERhdGVdKTsKKworICAgIGRlbGV0ZVRlc3REZWZhdWx0cygpOworfQorCitURVNUKFdl
YktpdCwgUHJlZmVyZW5jZUNoYW5nZXNOaWwpCit7CisgICAgZGVsZXRlVGVzdERlZmF1bHRzKCk7
CisKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZl
ciBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNV
c2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXRlc3REb21h
aW5dKTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpAMSBmb3JLZXk6KE5TU3RyaW5nICop
dGVzdEtleV07CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZv
ckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5n
ZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgYXV0byBwcmVmZXJl
bmNlVmFsdWUgPSBbJl0geworICAgICAgICB3YWl0Rm9yUHJlZmVyZW5jZVN5bmNocm9uaXphdGlv
bigpOworICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IndpbmRvdy5pbnRlcm5hbHMucmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwiJUBcIixcIiVAXCIpIiwg
KE5TU3RyaW5nICopdGVzdERvbWFpbiwgKE5TU3RyaW5nICopdGVzdEtleV07CisgICAgICAgIHJl
dHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OmpzXS5pbnRWYWx1ZTsK
KyAgICB9OworCisgICAgRVhQRUNUX0VRKDEsIHByZWZlcmVuY2VWYWx1ZSgpKTsKKworICAgIFt1
c2VyRGVmYXVsdHMgc2V0T2JqZWN0Om5pbCBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07CisK
KyAgICBFWFBFQ1RfRVEoMCwgcHJlZmVyZW5jZVZhbHVlKCkpOworCisgICAgZGVsZXRlVGVzdERl
ZmF1bHRzKCk7CiB9CiAKIHN0YXRpYyBJTVAgc2hhcmVkSW5zdGFuY2VNZXRob2RPcmlnaW5hbCA9
IG5pbDsKQEAgLTMzMSw3ICs0MDIsNyBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZU9ic2VydmVy
U3RhcnRlZE9uQWN0aXZhdGlvbikKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVh
dGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRl
c3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQ
b29sICopY29udGV4dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDoo
V0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZ
RVNdKTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNp
bXBsZSJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406676</attachid>
            <date>2020-08-15 14:47:19 -0700</date>
            <delta_ts>2020-08-15 15:11:19 -0700</delta_ts>
            <desc>test logging</desc>
            <filename>bug-215523-20200815144718.patch</filename>
            <type>text/plain</type>
            <size>23861</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjOGM0N2Q4ZmQyZmFhNjQ0
ZGMyNmI2NjBhOTExZmU2YzNjNmQ0NWQuLjNlODllNTJjNmU4ZTU1OGZhMTllN2I3ZGU1ZmFjNTEx
NWVmYTY0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDgtMTQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGl2ZSBXZWIgQ29udGVu
dCBwcm9jZXNzZXMgZG8gbm90IHJlc3BlY3QgYWNjZW50IGNvbG9yIGlmIGR5bmFtaWNhbGx5IGNo
YW5nZWQgdG8gIm11bHRpY29sb3IiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzOTQxMTMzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW06CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRz
IF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5
czpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6c2V0UHJlZmVyZW5jZVZhbHVlKToKKyAgICAgICAgVGhlIE5TVXNlckRl
ZmF1bHRzIHN5bmNpbmcgbWVjaGFuaXNtIGRvZXMgbm90IHByb3BhZ2F0ZSBkZWZhdWx0cyB0aGF0
IGFyZQorICAgICAgICBkZWxldGVkIG9yIGNoYW5nZWQgdG8gbmlsLgorCisgICAgICAgIEFsbG93
IG5pbCwgYW5kIGZpeCB1cCBhbiBhc3NlcnQgdGhhdCB3b3VsZCBmaXJlIGZvciB0aGUgc2FtZSBy
ZWFzb24uCisKIDIwMjAtMDgtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEs0XSBOb3RpZnkgdGhlIHdlYiBwcm9jZXNzIG9uIGRyYWcg
bGVhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMDUzYTRkZGEyMDA4
ZWZkN2E2Njg4ZDM0NDhmZmJmM2JmY2JlMWY1Li5mZjJhOTMwMzEzYjg2OGQwYzQyM2RlOTZlNDE4
ZjJkZTgyYjQ4NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01OTE5
LDYgKzU5MTksOCBAQCB2b2lkIEludGVybmFsczo6c2V0VlA5U2NyZWVuU2l6ZUFuZFNjYWxlRm9y
VGVzdGluZyhkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQsCiAKIGludCBJbnRlcm5hbHM6OnJl
YWRQcmVmZXJlbmNlSW50ZWdlcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBr
ZXkpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJyZWFkUHJlZmVyZW5jZUludGVnZXIgJXMiLCBrZXku
dXRmOCgpLmRhdGEoKSk7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBCb29sZWFuIGtleUV4
aXN0c0FuZEhhc1ZhbGlkRm9ybWF0ID0gZmFsc2U7CiAgICAgcmV0dXJuIENGUHJlZmVyZW5jZXNH
ZXRBcHBJbnRlZ2VyVmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAma2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCmlu
ZGV4IDY2NTAyNzYzMWEyYjIzZDA2ZDcxNjdmY2E5MzI1ZWVjMWVmNWZmZTkuLjE0ODY3YzBmNzIw
YmM3OTU4YjNmMWE0MDRlN2I4ZDVkMTUzYTZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0KQEAgLTYyLDYgKzYyLDggQEAg
LSAodm9pZClfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czooTlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIGlkPgogICAgICAgICBpZiAobmV3VmFsdWUgJiYgIVtbbmV3VmFs
dWUgY2xhc3NdIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVl
c0ZvcktleXMgJUAgJUAiLCBrZXksIG5ld1ZhbHVlKTsKKwogICAgICAgICBOU1N0cmluZyAqZW5j
b2RlZFN0cmluZyA9IG5pbDsKIAogICAgICAgICBpZiAobmV3VmFsdWUpIHsKQEAgLTczLDExICs3
NSwxNSBAQCAtICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlz
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+CiAKICAgICAgICAgYXV0byBnbG9iYWxWYWx1
ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
a2V5LCBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRV
c2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKTsKICAgICAgICAgYXV0byBkb21haW5WYWx1ZSA9
IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZSgoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5
LCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpbV9zdWl0ZU5hbWUsIGtDRlByZWZlcmVuY2VzQ3VycmVu
dFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9zdCkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGds
b2JhbFZhbHVlICYmIFtuZXdWYWx1ZSBpc0VxdWFsOihfX2JyaWRnZSBpZClnbG9iYWxWYWx1ZS5n
ZXQoKV0pCisKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWVzQXJlRXF1YWwgPSBbXSAoaWQg
YSwgaWQgYikgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiB8fCBbYSBpc0VxdWFsOmJdOwor
ICAgICAgICB9OworCisgICAgICAgIGlmIChwcmVmZXJlbmNlVmFsdWVzQXJlRXF1YWwoKF9fYnJp
ZGdlIGlkKWdsb2JhbFZhbHVlLmdldCgpLCBuZXdWYWx1ZSkpCiAgICAgICAgICAgICBbbV9vYnNl
cnZlciBwcmVmZXJlbmNlRGlkQ2hhbmdlOm5pbCBrZXk6a2V5IGVuY29kZWRWYWx1ZTplbmNvZGVk
U3RyaW5nXTsKIAotICAgICAgICBpZiAoZG9tYWluVmFsdWUgJiYgW25ld1ZhbHVlIGlzRXF1YWw6
KF9fYnJpZGdlIGlkKWRvbWFpblZhbHVlLmdldCgpXSkKKyAgICAgICAgaWYgKHByZWZlcmVuY2VW
YWx1ZXNBcmVFcXVhbCgoX19icmlkZ2UgaWQpZG9tYWluVmFsdWUuZ2V0KCksIG5ld1ZhbHVlKSkK
ICAgICAgICAgICAgIFttX29ic2VydmVyIHByZWZlcmVuY2VEaWRDaGFuZ2U6bV9zdWl0ZU5hbWUg
a2V5OmtleSBlbmNvZGVkVmFsdWU6ZW5jb2RlZFN0cmluZ107CiAgICAgfQogfQpAQCAtMTY3LDYg
KzE3Myw4IEBAIC0gKHZvaWQpcHJlZmVyZW5jZURpZENoYW5nZTooTlNTdHJpbmcgKilkb21haW4g
a2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVkVmFsdWU6CiAgICAgICAgIGlmIChlbmNvZGVkVmFs
dWUpCiAgICAgICAgICAgICBlbmNvZGVkU3RyaW5nID0gU3RyaW5nKGVuY29kZWRWYWx1ZSk7CiAK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJwcmVmZXJlbmNlRGlkQ2hhbmdlICVAICVAIiwga2V5LCBl
bmNvZGVkVmFsdWUpOworCiAgICAgICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKICAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT5ub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRTdHJpbmcp
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KaW5kZXggM2I4YmRlYTNhNmFiNWI0MzY2YTYwNmRhYTdkYThjY2ZiZjU2MmYz
Ny4uODg5OGM5NmU4ZDQ0ZmEwMjRjMjY2YzU4M2MzYjYwYzQ1MThjYWMxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC05NzMs
OSArOTczLDEzIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkTm90aWZpY2F0aW9uc0Zv
clByZWZlcmVuY2VDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHN0YXRpYyB2b2lkIHNldFBy
ZWZlcmVuY2VWYWx1ZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGlk
IHZhbHVlKQogeworICAgIFdURkxvZ0Fsd2F5cygic2V0UHJlZmVyZW5jZVZhbHVlICVzICVAIiwg
a2V5LnV0ZjgoKS5kYXRhKCksIHZhbHVlKTsKICAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkgewog
ICAgICAgICBDRlByZWZlcmVuY2VzU2V0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IChfX2JyaWRnZSBDRlByb3BlcnR5TGlzdFJlZil2YWx1ZSwga0NGUHJlZmVyZW5jZXNBbnlBcHBs
aWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0
KTsKLSAgICAgICAgQVNTRVJUKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6a2V5XSBpc0VxdWFsOnZhbHVlXSk7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgaWQgdmFsdWVBZnRlclNldHRpbmcgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgQVNTRVJUKHZhbHVlQWZ0
ZXJTZXR0aW5nID09IHZhbHVlIHx8IFt2YWx1ZUFmdGVyU2V0dGluZyBpc0VxdWFsOnZhbHVlXSk7
CisjZW5kaWYKICAgICB9IGVsc2UKICAgICAgICAgQ0ZQcmVmZXJlbmNlc1NldFZhbHVlKGtleS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAoX19icmlkZ2UgQ0ZQcm9wZXJ0eUxpc3RSZWYpdmFsdWUs
IGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2Vy
LCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFlZWFjYmY1ODQ2NTQ5NTJkMjA3ZTUyZTZkY2RhNGYx
ZmIxYmZjNTQuLmEwMjhhOGIyYTUxOTE3NDY0NGYxNDMxYzQ5NTRiMzdhZGY2NTEyZWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAyMC0wOC0xNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
KworICAgICAgICBMaXZlIFdlYiBDb250ZW50IHByb2Nlc3NlcyBkbyBub3QgcmVzcGVjdCBhY2Nl
bnQgY29sb3IgaWYgZHluYW1pY2FsbHkgY2hhbmdlZCB0byAibXVsdGljb2xvciIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTUyMworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjM5NDExMzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhz
aWVoLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5jZUNo
YW5nZXMubW06CisgICAgICAgIChkZWxldGVUZXN0RGVmYXVsdHMpOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgIEZpeCBzb21lIG1pbm9yIHN0eWxlIGlzc3VlcyB3aXRoIHRoZXNlIHRlc3RzLgor
ICAgICAgICBGaXggYSBidWcgd2hlcmUgdGhlc2UgdGVzdHMgd291bGQgbGVhayBzdGF0ZSBiZXR3
ZWVuIHRoZW1zZWx2ZXMgYnkgbGVhdmluZyBkZWZhdWx0cyBiZWhpbmQuCisgICAgICAgIENoYW5n
ZSB0aGUgTlNVc2VyRGVmYXVsdHMga2V5IG5hbWUgc28gdGhhdCBpdCBpcyBhYnVuZGFudGx5IG9i
dmlvdXMgd2hlcmUgaXQgY29tZXMgZnJvbSB3aGVuIHlvdSBzZWUgaXQgaW4geW91ciBkZWZhdWx0
cy4KKyAgICAgICAgTGVhdmUgYSBGSVhNRSBmb3IgdGhlIGZ1dHVyZSB0aGF0IHRoZXNlIHRlc3Rz
IHNob3VsZCBwcm9iYWJseSBub3QgYmUgd3JpdGluZyB0byB0aGUgcmVhbCBwZXJzaXN0ZW50IGRl
ZmF1bHRzLgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZW5zdXJlcyB0aGF0IHRoZSBvYnNlcnZl
ciBjb3JyZWN0bHkgcmVzcGVjdHMgZGVsZXRpb24gb2YgYSBkZWZhdWx0LgorCiAyMDIwLTA4LTE0
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxh
dHBhayBTS10gRW5hYmxlIEdOT01FIGtleXJpbmcgc3VwcG9ydCBpbiBzdWJ2ZXJzaW9uCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hhbmdl
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2Vz
Lm1tCmluZGV4IGVmZjY5ZWZjOGY1ZjM2Yjc2MTNmMzg4MWE0YjcyMzMyZWJjYThiODUuLmJlMTdi
Yzc1NzBlYjEzNDVhOWI4YTBjYzMyYWQ4ZGZkMjc4NjkwZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCkBAIC0yNSw2
ICsyNSw5IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisvLyBGSVhNRTogVGhlc2UgdGVzdHMg
dG91Y2ggdGhlIHVzZXIncyAqYWN0dWFsKiBnbG9iYWwgYW5kIEFWRm91bmRhdGlvbiBkZWZhdWx0
cyBkb21haW5zLgorLy8gV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gZ2V0IHRoZSBzYW1lIHRlc3Qg
Y292ZXJhZ2UgdXNpbmcgdm9sYXRpbGUgZG9tYWlucyBvciBzd2l6emxpbmcgb3Igc29tZXRoaW5n
LgorCiAjaWYgV0tfSEFWRV9DX1NQSQogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgpA
QCAtNDcsMTAgKzUwLDE1IEBAIC0gKHZvaWQpcHJlZmVyZW5jZURpZENoYW5nZTooTlNTdHJpbmcg
Kilkb21haW4ga2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVkVmFsdWU6CiB9CiBAZW5kCiAKLXN0
YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB0ZXN0S2V5ID0gQ0ZTVFIoInRlc3RrZXkiKTsKLXN0YXRp
YyBjb25zdCBDRlN0cmluZ1JlZiBnbG9iYWxEb21haW4gPSBDRlNUUigia0NGUHJlZmVyZW5jZXNB
bnlBcHBsaWNhdGlvbiIpOworc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGdsb2JhbERvbWFpbiA9
IGtDRlByZWZlcmVuY2VzQW55QXBwbGljYXRpb247CiBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYg
dGVzdERvbWFpbiA9IENGU1RSKCJjb20uYXBwbGUuYXZmb3VuZGF0aW9uIik7CiAKKyNkZWZpbmUg
VEVTVF9LRVkoKSAoKENGU3RyaW5nUmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiVGVz
dFdlYktpdEFQSV9UZXN0S2V5XyVzIiwgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFtZSgpXSkKKyNkZWZpbmUgQ0xFQVJfREVGQVVMVFMo
KSB7IFwKKyAgICBDRlByZWZlcmVuY2VzU2V0VmFsdWUoVEVTVF9LRVkoKSwgbmlsLCBrQ0ZQcmVm
ZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRIb3N0KTsgXAorICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShURVNU
X0tFWSgpLCBuaWwsIHRlc3REb21haW4pOyBcCit9CisKIHN0YXRpYyB2b2lkIHdhaXRGb3JQcmVm
ZXJlbmNlU3luY2hyb25pemF0aW9uKCkKIHsKICAgICBfX2Jsb2NrIGJvb2wgZGlkU3luY2hyb25p
emUgPSBmYWxzZTsKQEAgLTYyLDU3ICs3MCw2NyBAQCBzdGF0aWMgdm9pZCB3YWl0Rm9yUHJlZmVy
ZW5jZVN5bmNocm9uaXphdGlvbigpCiAKIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlT2JzZXJ2ZXIp
CiB7CisgICAgQ0xFQVJfREVGQVVMVFMoKTsKKwogICAgIHJlY2VpdmVkUHJlZmVyZW5jZU5vdGlm
aWNhdGlvbiA9IGZhbHNlOwogCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHRlc3RLZXks
IENGU1RSKCIxIiksIHRlc3REb21haW4pOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShU
RVNUX0tFWSgpLCBDRlNUUigiMSIpLCB0ZXN0RG9tYWluKTsKIAogICAgIGF1dG8gb2JzZXJ2ZXIg
PSBhZG9wdE5TKFtbV0tUZXN0UHJlZmVyZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CiAKLSAg
ICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUodGVzdEtleSwgQ0ZTVFIoIjIiKSwgdGVzdERvbWFp
bik7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFRFU1RfS0VZKCksIENGU1RSKCIyIiks
IHRlc3REb21haW4pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFBy
ZWZlcmVuY2VOb3RpZmljYXRpb24pOworCisgICAgQ0xFQVJfREVGQVVMVFMoKTsKIH0KIAogVEVT
VChXZWJLaXQsIFByZWZlcmVuY2VPYnNlcnZlckFycmF5KQogeworICAgIENMRUFSX0RFRkFVTFRT
KCk7CisKICAgICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsKIAogICAg
IE5TQXJyYXkgKmFycmF5ID0gQFtAMSwgQDIsIEAzXTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRz
ID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNT
dHJpbmcgKil0ZXN0RG9tYWluXSk7Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6
YXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0
T2JqZWN0OmFycmF5IGZvcktleTooTlNTdHJpbmcgKilURVNUX0tFWSgpXTsKIAogICAgIGF1dG8g
b2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tUZXN0UHJlZmVyZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0
XSk7CiAKICAgICBOU0FycmF5ICpjaGFuZ2VkQXJyYXkgPSBAW0AzLCBAMiwgQDFdOwotICAgIFt1
c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmNoYW5nZWRBcnJheSBmb3JLZXk6KE5TU3RyaW5n
ICopdGVzdEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6Y2hhbmdlZEFycmF5IGZv
cktleTooTlNTdHJpbmcgKilURVNUX0tFWSgpXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcmVjZWl2ZWRQcmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKKworICAgIENMRUFSX0RFRkFV
TFRTKCk7CiB9CiAKIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlcykKIHsKLSAgICBDRlBy
ZWZlcmVuY2VzU2V0QXBwVmFsdWUodGVzdEtleSwgQ0ZTVFIoIjAiKSwgdGVzdERvbWFpbik7Cisg
ICAgQ0xFQVJfREVGQVVMVFMoKTsKKworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShURVNU
X0tFWSgpLCBDRlNUUigiMCIpLCB0ZXN0RG9tYWluKTsKIAogICAgIGF1dG8gb2JzZXJ2ZXIgPSBh
ZG9wdE5TKFtbV0tUZXN0UHJlZmVyZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CiAgICAgCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBh
ZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRs
ZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5n
ZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwogCiAgICAgcmVjZWl2ZWRQcmVm
ZXJlbmNlTm90aWZpY2F0aW9uID0gZmFsc2U7CiAKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFs
dWUodGVzdEtleSwgQ0ZTVFIoIjEiKSwgdGVzdERvbWFpbik7CisgICAgQ0ZQcmVmZXJlbmNlc1Nl
dEFwcFZhbHVlKFRFU1RfS0VZKCksIENGU1RSKCIxIiksIHRlc3REb21haW4pOwogCi0gICAgRVhQ
RUNUX0VRKDEsIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUodGVzdEtleSwgdGVzdERv
bWFpbiwgbnVsbHB0cikpOworICAgIEVYUEVDVF9FUSgxLCBDRlByZWZlcmVuY2VzR2V0QXBwSW50
ZWdlclZhbHVlKFRFU1RfS0VZKCksIHRlc3REb21haW4sIG51bGxwdHIpKTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRQcmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKIAog
ICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKICAgICAgICAgd2FpdEZvclByZWZlcmVu
Y2VTeW5jaHJvbml6YXRpb24oKTsKLSAgICAgICAgTlNTdHJpbmcgKmpzID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLnJlYWRQcmVmZXJlbmNlSW50ZWdlcihc
IiVAXCIsXCIlQFwiKSIsIChOU1N0cmluZyAqKXRlc3REb21haW4sIChOU1N0cmluZyAqKXRlc3RL
ZXldOworICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IndpbmRvdy5pbnRlcm5hbHMucmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwiJUBcIixcIiVAXCIpIiwg
KE5TU3RyaW5nICopdGVzdERvbWFpbiwgKE5TU3RyaW5nICopVEVTVF9LRVkoKV07CiAgICAgICAg
IHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OmpzXS5pbnRWYWx1
ZTsKICAgICB9OwogCkBAIC0xMjAsMzYgKzEzOCw0MCBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5j
ZUNoYW5nZXMpCiAKICAgICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsK
IAotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZSh0ZXN0S2V5LCBDRlNUUigiMiIpLCB0ZXN0
RG9tYWluKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoVEVTVF9LRVkoKSwgQ0ZTVFIo
IjIiKSwgdGVzdERvbWFpbik7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkUHJlZmVyZW5jZU5vdGlmaWNhdGlvbik7CiAKICAgICBFWFBFQ1RfRVEocHJlZmVyZW5jZVZh
bHVlKCksIDIpOworCisgICAgQ0xFQVJfREVGQVVMVFMoKTsKIH0KIAogVEVTVChXZWJLaXQsIEds
b2JhbFByZWZlcmVuY2VDaGFuZ2VzVXNpbmdEZWZhdWx0c1dyaXRlKQogewotICAgIHN5c3RlbShb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRlZmF1bHRzIHdyaXRlICVAICVAIDAiLCAoX19i
cmlkZ2UgaWQpZ2xvYmFsRG9tYWluLCAoX19icmlkZ2UgaWQpdGVzdEtleV0uVVRGOFN0cmluZyk7
CisgICAgQ0xFQVJfREVGQVVMVFMoKTsKKworICAgIHN5c3RlbShbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImRlZmF1bHRzIHdyaXRlICVAICVAIDAiLCAoX19icmlkZ2UgaWQpZ2xvYmFsRG9t
YWluLCAoX19icmlkZ2UgaWQpVEVTVF9LRVkoKV0uVVRGOFN0cmluZyk7CiAgICAgCiAgICAgYXV0
byBvYnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGlu
aXRdKTsKICAgICAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZv
ckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOwotICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRl
eHQuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bv
b2wgKiljb250ZXh0LmdldCgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CiAgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAKICAg
ICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsKIAotICAgIHN5c3RlbShb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRlZmF1bHRzIHdyaXRlICVAICVAIDEiLCAoX19i
cmlkZ2UgaWQpZ2xvYmFsRG9tYWluLCAoX19icmlkZ2UgaWQpdGVzdEtleV0uVVRGOFN0cmluZyk7
CisgICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZGVmYXVsdHMgd3JpdGUg
JUAgJUAgMSIsIChfX2JyaWRnZSBpZClnbG9iYWxEb21haW4sIChfX2JyaWRnZSBpZClURVNUX0tF
WSgpXS5VVEY4U3RyaW5nKTsKIAotICAgIEVYUEVDVF9FUSgxLCBDRlByZWZlcmVuY2VzR2V0QXBw
SW50ZWdlclZhbHVlKHRlc3RLZXksIGdsb2JhbERvbWFpbiwgbnVsbHB0cikpOworICAgIEVYUEVD
VF9FUSgxLCBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKFRFU1RfS0VZKCksIGdsb2Jh
bERvbWFpbiwgbnVsbHB0cikpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24pOwogCiAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUg
PSBbJl0gewogICAgICAgICB3YWl0Rm9yUHJlZmVyZW5jZVN5bmNocm9uaXphdGlvbigpOwotICAg
ICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIndpbmRvdy5p
bnRlcm5hbHMucmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwiJUBcIixcIiVAXCIpIiwgKE5TU3RyaW5n
ICopZ2xvYmFsRG9tYWluLCAoTlNTdHJpbmcgKil0ZXN0S2V5XTsKKyAgICAgICAgTlNTdHJpbmcg
KmpzID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLnJlYWRQ
cmVmZXJlbmNlSW50ZWdlcihcIiVAXCIsXCIlQFwiKSIsIChOU1N0cmluZyAqKWdsb2JhbERvbWFp
biwgKE5TU3RyaW5nICopVEVTVF9LRVkoKV07CiAgICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OmpzXS5pbnRWYWx1ZTsKICAgICB9OwogCkBAIC0xNTcs
MzcgKzE3OSw0MSBAQCBURVNUKFdlYktpdCwgR2xvYmFsUHJlZmVyZW5jZUNoYW5nZXNVc2luZ0Rl
ZmF1bHRzV3JpdGUpCiAKICAgICByZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24gPSBmYWxz
ZTsKIAotICAgIHN5c3RlbShbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRlZmF1bHRzIHdy
aXRlICVAICVAIDIiLCAoX19icmlkZ2UgaWQpZ2xvYmFsRG9tYWluLCAoX19icmlkZ2UgaWQpdGVz
dEtleV0uVVRGOFN0cmluZyk7CisgICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiZGVmYXVsdHMgd3JpdGUgJUAgJUAgMiIsIChfX2JyaWRnZSBpZClnbG9iYWxEb21haW4sIChf
X2JyaWRnZSBpZClURVNUX0tFWSgpXS5VVEY4U3RyaW5nKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRQcmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKIAogICAgIEVYUEVD
VF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMik7CisKKyAgICBDTEVBUl9ERUZBVUxUUygpOwogfQog
CiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNBcnJheSkKIHsKKyAgICBDTEVBUl9ERUZB
VUxUUygpOworCiAgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNl
T2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TQXJyYXkgKmFycmF5ID0gQFtAMSwgQDIs
IEAzXTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRz
IGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKil0ZXN0RG9tYWluXSk7Ci0gICAg
W3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6YXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKXRl
c3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmFycmF5IGZvcktleTooTlNTdHJp
bmcgKilURVNUX0tFWSgpXTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVD
b250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3Qi
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29s
ICopY29udGV4dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQ
cm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAw
LCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNd
KTsKIAogICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKICAgICAgICAgd2FpdEZvclBy
ZWZlcmVuY2VTeW5jaHJvbml6YXRpb24oKTsKLSAgICAgICAgTlNTdHJpbmcgKmpzID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmVuY29kZWRQcmVmZXJlbmNl
VmFsdWUoXCIlQFwiLFwiJUBcIikiLCAoTlNTdHJpbmcgKil0ZXN0RG9tYWluLCAoTlNTdHJpbmcg
Kil0ZXN0S2V5XTsKKyAgICAgICAgTlNTdHJpbmcgKmpzID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmVuY29kZWRQcmVmZXJlbmNlVmFsdWUoXCIlQFwiLFwi
JUBcIikiLCAoTlNTdHJpbmcgKil0ZXN0RG9tYWluLCAoTlNTdHJpbmcgKilURVNUX0tFWSgpXTsK
ICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6anNd
OwogICAgIH07CiAKICAgICBwcmVmZXJlbmNlVmFsdWUoKTsKIAogICAgIE5TQXJyYXkgKmNoYW5n
ZWRBcnJheSA9IEBbQDMsIEAyLCBAMV07Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmpl
Y3Q6Y2hhbmdlZEFycmF5IGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKKyAgICBbdXNlckRl
ZmF1bHRzIHNldE9iamVjdDpjaGFuZ2VkQXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKVRFU1RfS0VZ
KCldOwogCiAgICAgYXV0byBlbmNvZGVkU3RyaW5nID0gcHJlZmVyZW5jZVZhbHVlKCk7CiAgICAg
YXV0byBlbmNvZGVkRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0
RW5jb2RlZFN0cmluZzplbmNvZGVkU3RyaW5nIG9wdGlvbnM6MF0pOwpAQCAtMTk3LDEwICsyMjMs
MTQgQEAgVEVTVChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzQXJyYXkpCiAgICAgQVNTRVJUX1RS
VUUoIWVycik7CiAgICAgQVNTRVJUX1RSVUUob2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShbb2Jq
ZWN0IGlzRXF1YWw6Y2hhbmdlZEFycmF5XSk7CisKKyAgICBDTEVBUl9ERUZBVUxUUygpOwogfQog
CiBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNEaWN0aW9uYXJ5KQogeworICAgIENMRUFS
X0RFRkFVTFRTKCk7CisKICAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZl
cmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0g
QHsKQEAgLTIwOSwxNiArMjM5LDE2IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0Rp
Y3Rpb25hcnkpCiAgICAgfTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW05T
VXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKil0ZXN0RG9t
YWluXSk7Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6ZGljdCBmb3JLZXk6KE5T
U3RyaW5nICopdGVzdEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6ZGljdCBmb3JL
ZXk6KE5TU3RyaW5nICopVEVTVF9LRVkoKV07CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRp
bDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRC
dW5kbGVUZXN0IikpOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQ
cm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vz
c1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9X
aW5kb3c6WUVTXSk7CiAKICAgICBhdXRvIHByZWZlcmVuY2VWYWx1ZSA9IFsmXSB7CiAgICAgICAg
IHdhaXRGb3JQcmVmZXJlbmNlU3luY2hyb25pemF0aW9uKCk7Ci0gICAgICAgIE5TU3RyaW5nICpq
cyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAid2luZG93LmludGVybmFscy5lbmNvZGVk
UHJlZmVyZW5jZVZhbHVlKFwiJUBcIixcIiVAXCIpIiwgKE5TU3RyaW5nICopdGVzdERvbWFpbiwg
KE5TU3RyaW5nICopdGVzdEtleV07CisgICAgICAgIE5TU3RyaW5nICpqcyA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAid2luZG93LmludGVybmFscy5lbmNvZGVkUHJlZmVyZW5jZVZhbHVl
KFwiJUBcIixcIiVAXCIpIiwgKE5TU3RyaW5nICopdGVzdERvbWFpbiwgKE5TU3RyaW5nICopVEVT
VF9LRVkoKV07CiAgICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OmpzXTsKICAgICB9OwogCkBAIC0yMjksNyArMjU5LDcgQEAgVEVTVChXZWJLaXQsIFBy
ZWZlcmVuY2VDaGFuZ2VzRGljdGlvbmFyeSkKICAgICAgICAgQCJiIiA6IEAyLAogICAgICAgICBA
ImMiIDogQDMsCiAgICAgfTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVjdDpjaGFu
Z2VkRGljdCBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBz
ZXRPYmplY3Q6Y2hhbmdlZERpY3QgZm9yS2V5OihOU1N0cmluZyAqKVRFU1RfS0VZKCldOwogCiAg
ICAgYXV0byBlbmNvZGVkU3RyaW5nID0gcHJlZmVyZW5jZVZhbHVlKCk7CiAgICAgYXV0byBlbmNv
ZGVkRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0
cmluZzplbmNvZGVkU3RyaW5nIG9wdGlvbnM6MF0pOwpAQCAtMjM5LDMyICsyNjksMzYgQEAgVEVT
VChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzRGljdGlvbmFyeSkKICAgICBBU1NFUlRfVFJVRSgh
ZXJyKTsKICAgICBBU1NFUlRfVFJVRShvYmplY3QpOwogICAgIEFTU0VSVF9UUlVFKFtvYmplY3Qg
aXNFcXVhbDpjaGFuZ2VkRGljdF0pOworCisgICAgQ0xFQVJfREVGQVVMVFMoKTsKIH0KIAogVEVT
VChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzRGF0YSkKIHsKKyAgICBDTEVBUl9ERUZBVUxUUygp
OworCiAgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2
ZXIgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoiYWJjIiBsZW5ndGg6M107CiAKICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0TlMo
W1tOU1VzZXJEZWZhdWx0cyBhbGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopdGVz
dERvbWFpbl0pOwotICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmRhdGEgZm9yS2V5
OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmRhdGEg
Zm9yS2V5OihOU1N0cmluZyAqKVRFU1RfS0VZKCldOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVj
dGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0g
KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIFtjb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07CiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFk
ZFRvV2luZG93OllFU10pOwogCiAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewogICAg
ICAgICB3YWl0Rm9yUHJlZmVyZW5jZVN5bmNocm9uaXphdGlvbigpOwotICAgICAgICBOU1N0cmlu
ZyAqanMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIndpbmRvdy5pbnRlcm5hbHMuZW5j
b2RlZFByZWZlcmVuY2VWYWx1ZShcIiVAXCIsXCIlQFwiKSIsIChOU1N0cmluZyAqKXRlc3REb21h
aW4sIChOU1N0cmluZyAqKXRlc3RLZXldOworICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIndpbmRvdy5pbnRlcm5hbHMuZW5jb2RlZFByZWZlcmVuY2VW
YWx1ZShcIiVAXCIsXCIlQFwiKSIsIChOU1N0cmluZyAqKXRlc3REb21haW4sIChOU1N0cmluZyAq
KVRFU1RfS0VZKCldOwogICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpqc107CiAgICAgfTsKIAogICAgIHByZWZlcmVuY2VWYWx1ZSgpOwogCiAgICAg
TlNEYXRhICpjaGFuZ2VkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiYWJjZCIgbGVuZ3Ro
OjRdOwotICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmNoYW5nZWREYXRhIGZvcktl
eTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpjaGFu
Z2VkRGF0YSBmb3JLZXk6KE5TU3RyaW5nICopVEVTVF9LRVkoKV07CiAKICAgICBhdXRvIGVuY29k
ZWRTdHJpbmcgPSBwcmVmZXJlbmNlVmFsdWUoKTsKICAgICBhdXRvIGVuY29kZWREYXRhID0gYWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmVuY29kZWRT
dHJpbmcgb3B0aW9uczowXSk7CkBAIC0yNzQsMzIgKzMwOCwzNiBAQCBURVNUKFdlYktpdCwgUHJl
ZmVyZW5jZUNoYW5nZXNEYXRhKQogICAgIEFTU0VSVF9UUlVFKCFlcnIpOwogICAgIEFTU0VSVF9U
UlVFKG9iamVjdCk7CiAgICAgQVNTRVJUX1RSVUUoW29iamVjdCBpc0VxdWFsOmNoYW5nZWREYXRh
XSk7CisKKyAgICBDTEVBUl9ERUZBVUxUUygpOwogfQogCiBURVNUKFdlYktpdCwgUHJlZmVyZW5j
ZUNoYW5nZXNEYXRlKQogeworICAgIENMRUFSX0RFRkFVTFRTKCk7CisKICAgICBhdXRvIG9ic2Vy
dmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwog
CiAgICAgTlNEYXRlICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93
OjBdOwogCiAgICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMg
YWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXRlc3REb21haW5dKTsKLSAgICBb
dXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVjdDpkYXRlIGZvcktleTooTlNTdHJpbmcgKil0ZXN0
S2V5XTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpkYXRlIGZvcktleTooTlNTdHJpbmcg
KilURVNUX0tFWSgpXTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7
Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICop
Y29udGV4dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQcm9j
ZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAz
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsK
IAogICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKICAgICAgICAgd2FpdEZvclByZWZl
cmVuY2VTeW5jaHJvbml6YXRpb24oKTsKLSAgICAgICAgTlNTdHJpbmcgKmpzID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmVuY29kZWRQcmVmZXJlbmNlVmFs
dWUoXCIlQFwiLFwiJUBcIikiLCAoTlNTdHJpbmcgKil0ZXN0RG9tYWluLCAoTlNTdHJpbmcgKil0
ZXN0S2V5XTsKKyAgICAgICAgTlNTdHJpbmcgKmpzID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmVuY29kZWRQcmVmZXJlbmNlVmFsdWUoXCIlQFwiLFwiJUBc
IikiLCAoTlNTdHJpbmcgKil0ZXN0RG9tYWluLCAoTlNTdHJpbmcgKilURVNUX0tFWSgpXTsKICAg
ICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6anNdOwog
ICAgIH07CiAKICAgICBwcmVmZXJlbmNlVmFsdWUoKTsKIAogICAgIE5TRGF0ZSAqY2hhbmdlZERh
dGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6MTBdOwotICAgIFt1c2Vy
RGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmNoYW5nZWREYXRlIGZvcktleTooTlNTdHJpbmcgKil0
ZXN0S2V5XTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpjaGFuZ2VkRGF0ZSBmb3JLZXk6
KE5TU3RyaW5nICopVEVTVF9LRVkoKV07CiAKICAgICBhdXRvIGVuY29kZWRTdHJpbmcgPSBwcmVm
ZXJlbmNlVmFsdWUoKTsKICAgICBhdXRvIGVuY29kZWREYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczow
XSk7CkBAIC0zMDksNiArMzQ3LDM4IEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0Rh
dGUpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7CiAgICAgQVNTRVJUX1RSVUUob2JqZWN0KTsKICAg
ICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1YWw6Y2hhbmdlZERhdGVdKTsKKworICAgIENMRUFS
X0RFRkFVTFRTKCk7Cit9CisKK1RFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc05pbCkKK3sK
KyAgICBDTEVBUl9ERUZBVUxUUygpOworCisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tX
S1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gdXNlckRl
ZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFt
ZTooTlNTdHJpbmcgKil0ZXN0RG9tYWluXSk7CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6
QDEgZm9yS2V5OihOU1N0cmluZyAqKVRFU1RfS0VZKCldOworCisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRB
UEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0lu
amVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDoo
V0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZ
RVNdKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1w
bGUiXTsKKworICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKKyAgICAgICAgd2FpdEZv
clByZWZlcmVuY2VTeW5jaHJvbml6YXRpb24oKTsKKyAgICAgICAgTlNTdHJpbmcgKmpzID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLnJlYWRQcmVmZXJlbmNl
SW50ZWdlcihcIiVAXCIsXCIlQFwiKSIsIChOU1N0cmluZyAqKXRlc3REb21haW4sIChOU1N0cmlu
ZyAqKVRFU1RfS0VZKCldOworICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpqc10uaW50VmFsdWU7CisgICAgfTsKKworICAgIEVYUEVDVF9FUSgxLCBw
cmVmZXJlbmNlVmFsdWUoKSk7CisKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpuaWwgZm9y
S2V5OihOU1N0cmluZyAqKVRFU1RfS0VZKCldOworCisgICAgRVhQRUNUX0VRKDAsIHByZWZlcmVu
Y2VWYWx1ZSgpKTsKKworICAgIENMRUFSX0RFRkFVTFRTKCk7CiB9CiAKIHN0YXRpYyBJTVAgc2hh
cmVkSW5zdGFuY2VNZXRob2RPcmlnaW5hbCA9IG5pbDsKQEAgLTMzMSw3ICs0MDEsNyBAQCBURVNU
KFdlYktpdCwgUHJlZmVyZW5jZU9ic2VydmVyU3RhcnRlZE9uQWN0aXZhdGlvbikKIAogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRX
SyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0
KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCld
OwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406677</attachid>
            <date>2020-08-15 15:11:20 -0700</date>
            <delta_ts>2020-08-15 15:53:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215523-20200815151119.patch</filename>
            <type>text/plain</type>
            <size>22207</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjOGM0N2Q4ZmQyZmFhNjQ0
ZGMyNmI2NjBhOTExZmU2YzNjNmQ0NWQuLjNlODllNTJjNmU4ZTU1OGZhMTllN2I3ZGU1ZmFjNTEx
NWVmYTY0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDgtMTQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGl2ZSBXZWIgQ29udGVu
dCBwcm9jZXNzZXMgZG8gbm90IHJlc3BlY3QgYWNjZW50IGNvbG9yIGlmIGR5bmFtaWNhbGx5IGNo
YW5nZWQgdG8gIm11bHRpY29sb3IiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzOTQxMTMzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW06CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRz
IF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5
czpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6c2V0UHJlZmVyZW5jZVZhbHVlKToKKyAgICAgICAgVGhlIE5TVXNlckRl
ZmF1bHRzIHN5bmNpbmcgbWVjaGFuaXNtIGRvZXMgbm90IHByb3BhZ2F0ZSBkZWZhdWx0cyB0aGF0
IGFyZQorICAgICAgICBkZWxldGVkIG9yIGNoYW5nZWQgdG8gbmlsLgorCisgICAgICAgIEFsbG93
IG5pbCwgYW5kIGZpeCB1cCBhbiBhc3NlcnQgdGhhdCB3b3VsZCBmaXJlIGZvciB0aGUgc2FtZSBy
ZWFzb24uCisKIDIwMjAtMDgtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEs0XSBOb3RpZnkgdGhlIHdlYiBwcm9jZXNzIG9uIGRyYWcg
bGVhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVu
Y2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VP
YnNlcnZlci5tbQppbmRleCA2NjUwMjc2MzFhMmIyM2QwNmQ3MTY3ZmNhOTMyNWVlYzFlZjVmZmU5
Li5iMTBjMTFlY2VjMjc4Mzc5MjY1NTUxNDNmODdjMWY3MGRjNDMzZmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCkBAIC03
MywxMSArNzMsMTUgQEAgLSAodm9pZClfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVz
Rm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPgogCiAgICAgICAgIGF1dG8gZ2xv
YmFsVmFsdWUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5VmFsdWUoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKWtleSwga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXND
dXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSk7CiAgICAgICAgIGF1dG8gZG9tYWlu
VmFsdWUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5VmFsdWUoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKWtleSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKW1fc3VpdGVOYW1lLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChnbG9iYWxWYWx1ZSAmJiBbbmV3VmFsdWUgaXNFcXVhbDooX19icmlkZ2UgaWQpZ2xvYmFs
VmFsdWUuZ2V0KCldKQorCisgICAgICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlc0FyZUVxdWFsID0g
W10gKGlkIGEsIGlkIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGIgfHwgW2EgaXNFcXVh
bDpiXTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAocHJlZmVyZW5jZVZhbHVlc0FyZUVxdWFs
KChfX2JyaWRnZSBpZClnbG9iYWxWYWx1ZS5nZXQoKSwgbmV3VmFsdWUpKQogICAgICAgICAgICAg
W21fb2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTpuaWwga2V5OmtleSBlbmNvZGVkVmFsdWU6
ZW5jb2RlZFN0cmluZ107CiAKLSAgICAgICAgaWYgKGRvbWFpblZhbHVlICYmIFtuZXdWYWx1ZSBp
c0VxdWFsOihfX2JyaWRnZSBpZClkb21haW5WYWx1ZS5nZXQoKV0pCisgICAgICAgIGlmIChwcmVm
ZXJlbmNlVmFsdWVzQXJlRXF1YWwoKF9fYnJpZGdlIGlkKWRvbWFpblZhbHVlLmdldCgpLCBuZXdW
YWx1ZSkpCiAgICAgICAgICAgICBbbV9vYnNlcnZlciBwcmVmZXJlbmNlRGlkQ2hhbmdlOm1fc3Vp
dGVOYW1lIGtleTprZXkgZW5jb2RlZFZhbHVlOmVuY29kZWRTdHJpbmddOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmlu
ZGV4IDNiOGJkZWEzYTZhYjViNDM2NmE2MDZkYWE3ZGE4Y2NmYmY1NjJmMzcuLjI1YjVjNTNhYTQy
YjgwNTk4NTIyMmEzOGY1YjJiNGEwNDcxZjFiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtOTc1LDcgKzk3NSwxMCBAQCBz
dGF0aWMgdm9pZCBzZXRQcmVmZXJlbmNlVmFsdWUoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0
IFN0cmluZyYga2V5LCBpZCB2YWx1ZQogewogICAgIGlmIChkb21haW4uaXNFbXB0eSgpKSB7CiAg
ICAgICAgIENGUHJlZmVyZW5jZXNTZXRWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
KF9fYnJpZGdlIENGUHJvcGVydHlMaXN0UmVmKXZhbHVlLCBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxp
Y2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3Qp
OwotICAgICAgICBBU1NFUlQoW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IG9iamVjdEZvcktleTprZXldIGlzRXF1YWw6dmFsdWVdKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgICAgICBpZCB2YWx1ZUFmdGVyU2V0dGluZyA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTprZXldOworICAgICAgICBBU1NFUlQodmFsdWVBZnRl
clNldHRpbmcgPT0gdmFsdWUgfHwgW3ZhbHVlQWZ0ZXJTZXR0aW5nIGlzRXF1YWw6dmFsdWVdKTsK
KyNlbmRpZgogICAgIH0gZWxzZQogICAgICAgICBDRlByZWZlcmVuY2VzU2V0VmFsdWUoa2V5LmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIChfX2JyaWRnZSBDRlByb3BlcnR5TGlzdFJlZil2YWx1ZSwg
ZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIs
IGtDRlByZWZlcmVuY2VzQW55SG9zdCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWVlYWNiZjU4NDY1NDk1MmQyMDdlNTJlNmRjZGE0ZjFm
YjFiZmM1NC4uYTAyOGE4YjJhNTE5MTc0NjQ0ZjE0MzFjNDk1NGIzN2FkZjY1MTJlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIwLTA4LTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIExpdmUgV2ViIENvbnRlbnQgcHJvY2Vzc2VzIGRvIG5vdCByZXNwZWN0IGFjY2Vu
dCBjb2xvciBpZiBkeW5hbWljYWxseSBjaGFuZ2VkIHRvICJtdWx0aWNvbG9yIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTIzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Mzk0MTEzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNp
ZWguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hh
bmdlcy5tbToKKyAgICAgICAgKGRlbGV0ZVRlc3REZWZhdWx0cyk6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgRml4IHNvbWUgbWlub3Igc3R5bGUgaXNzdWVzIHdpdGggdGhlc2UgdGVzdHMuCisg
ICAgICAgIEZpeCBhIGJ1ZyB3aGVyZSB0aGVzZSB0ZXN0cyB3b3VsZCBsZWFrIHN0YXRlIGJldHdl
ZW4gdGhlbXNlbHZlcyBieSBsZWF2aW5nIGRlZmF1bHRzIGJlaGluZC4KKyAgICAgICAgQ2hhbmdl
IHRoZSBOU1VzZXJEZWZhdWx0cyBrZXkgbmFtZSBzbyB0aGF0IGl0IGlzIGFidW5kYW50bHkgb2J2
aW91cyB3aGVyZSBpdCBjb21lcyBmcm9tIHdoZW4geW91IHNlZSBpdCBpbiB5b3VyIGRlZmF1bHRz
LgorICAgICAgICBMZWF2ZSBhIEZJWE1FIGZvciB0aGUgZnV0dXJlIHRoYXQgdGhlc2UgdGVzdHMg
c2hvdWxkIHByb2JhYmx5IG5vdCBiZSB3cml0aW5nIHRvIHRoZSByZWFsIHBlcnNpc3RlbnQgZGVm
YXVsdHMuCisgICAgICAgIEFkZCBhIHRlc3QgdGhhdCBlbnN1cmVzIHRoYXQgdGhlIG9ic2VydmVy
IGNvcnJlY3RseSByZXNwZWN0cyBkZWxldGlvbiBvZiBhIGRlZmF1bHQuCisKIDIwMjAtMDgtMTQg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGbGF0
cGFrIFNLXSBFbmFibGUgR05PTUUga2V5cmluZyBzdXBwb3J0IGluIHN1YnZlcnNpb24KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2Vz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5jZUNoYW5nZXMu
bW0KaW5kZXggZWZmNjllZmM4ZjVmMzZiNzYxM2YzODgxYTRiNzIzMzJlYmNhOGI4NS4uYmUxN2Jj
NzU3MGViMTM0NWE5YjhhMGNjMzJhZDhkZmQyNzg2OTBkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5jZUNoYW5nZXMubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5jZUNoYW5nZXMubW0KQEAgLTI1LDYg
KzI1LDkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKy8vIEZJWE1FOiBUaGVzZSB0ZXN0cyB0
b3VjaCB0aGUgdXNlcidzICphY3R1YWwqIGdsb2JhbCBhbmQgQVZGb3VuZGF0aW9uIGRlZmF1bHRz
IGRvbWFpbnMuCisvLyBXZSBzaG91bGQgZmluZCBhIHdheSB0byBnZXQgdGhlIHNhbWUgdGVzdCBj
b3ZlcmFnZSB1c2luZyB2b2xhdGlsZSBkb21haW5zIG9yIHN3aXp6bGluZyBvciBzb21ldGhpbmcu
CisKICNpZiBXS19IQVZFX0NfU1BJCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCkBA
IC00NywxMCArNTAsMTUgQEAgLSAodm9pZClwcmVmZXJlbmNlRGlkQ2hhbmdlOihOU1N0cmluZyAq
KWRvbWFpbiBrZXk6KE5TU3RyaW5nICopa2V5IGVuY29kZWRWYWx1ZToKIH0KIEBlbmQKIAotc3Rh
dGljIGNvbnN0IENGU3RyaW5nUmVmIHRlc3RLZXkgPSBDRlNUUigidGVzdGtleSIpOwotc3RhdGlj
IGNvbnN0IENGU3RyaW5nUmVmIGdsb2JhbERvbWFpbiA9IENGU1RSKCJrQ0ZQcmVmZXJlbmNlc0Fu
eUFwcGxpY2F0aW9uIik7CitzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgZ2xvYmFsRG9tYWluID0g
a0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbjsKIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB0
ZXN0RG9tYWluID0gQ0ZTVFIoImNvbS5hcHBsZS5hdmZvdW5kYXRpb24iKTsKIAorI2RlZmluZSBU
RVNUX0tFWSgpICgoQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJUZXN0
V2ViS2l0QVBJX1Rlc3RLZXlfJXMiLCA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5jdXJyZW50X3Rlc3RfaW5mbygpLT5uYW1lKCldKQorI2RlZmluZSBDTEVBUl9ERUZBVUxUUygp
IHsgXAorICAgIENGUHJlZmVyZW5jZXNTZXRWYWx1ZShURVNUX0tFWSgpLCBuaWwsIGtDRlByZWZl
cmVuY2VzQW55QXBwbGljYXRpb24sIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZl
cmVuY2VzQ3VycmVudEhvc3QpOyBcCisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFRFU1Rf
S0VZKCksIG5pbCwgdGVzdERvbWFpbik7IFwKK30KKwogc3RhdGljIHZvaWQgd2FpdEZvclByZWZl
cmVuY2VTeW5jaHJvbml6YXRpb24oKQogewogICAgIF9fYmxvY2sgYm9vbCBkaWRTeW5jaHJvbml6
ZSA9IGZhbHNlOwpAQCAtNjIsNTcgKzcwLDY3IEBAIHN0YXRpYyB2b2lkIHdhaXRGb3JQcmVmZXJl
bmNlU3luY2hyb25pemF0aW9uKCkKIAogVEVTVChXZWJLaXQsIFByZWZlcmVuY2VPYnNlcnZlcikK
IHsKKyAgICBDTEVBUl9ERUZBVUxUUygpOworCiAgICAgcmVjZWl2ZWRQcmVmZXJlbmNlTm90aWZp
Y2F0aW9uID0gZmFsc2U7CiAKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUodGVzdEtleSwg
Q0ZTVFIoIjEiKSwgdGVzdERvbWFpbik7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFRF
U1RfS0VZKCksIENGU1RSKCIxIiksIHRlc3REb21haW4pOwogCiAgICAgYXV0byBvYnNlcnZlciA9
IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKIAotICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZSh0ZXN0S2V5LCBDRlNUUigiMiIpLCB0ZXN0RG9tYWlu
KTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoVEVTVF9LRVkoKSwgQ0ZTVFIoIjIiKSwg
dGVzdERvbWFpbik7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkUHJl
ZmVyZW5jZU5vdGlmaWNhdGlvbik7CisKKyAgICBDTEVBUl9ERUZBVUxUUygpOwogfQogCiBURVNU
KFdlYktpdCwgUHJlZmVyZW5jZU9ic2VydmVyQXJyYXkpCiB7CisgICAgQ0xFQVJfREVGQVVMVFMo
KTsKKwogICAgIHJlY2VpdmVkUHJlZmVyZW5jZU5vdGlmaWNhdGlvbiA9IGZhbHNlOwogCiAgICAg
TlNBcnJheSAqYXJyYXkgPSBAW0AxLCBAMiwgQDNdOwogCiAgICAgYXV0byB1c2VyRGVmYXVsdHMg
PSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOihOU1N0
cmluZyAqKXRlc3REb21haW5dKTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVjdDph
cnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVzdEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRP
YmplY3Q6YXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKVRFU1RfS0VZKCldOwogCiAgICAgYXV0byBv
YnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRd
KTsKIAogICAgIE5TQXJyYXkgKmNoYW5nZWRBcnJheSA9IEBbQDMsIEAyLCBAMV07Ci0gICAgW3Vz
ZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZEFycmF5IGZvcktleTooTlNTdHJpbmcg
Kil0ZXN0S2V5XTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpjaGFuZ2VkQXJyYXkgZm9y
S2V5OihOU1N0cmluZyAqKVRFU1RfS0VZKCldOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24pOworCisgICAgQ0xFQVJfREVGQVVM
VFMoKTsKIH0KIAogVEVTVChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzKQogewotICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZSh0ZXN0S2V5LCBDRlNUUigiMCIpLCB0ZXN0RG9tYWluKTsKKyAg
ICBDTEVBUl9ERUZBVUxUUygpOworCisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFRFU1Rf
S0VZKCksIENGU1RSKCIwIiksIHRlc3REb21haW4pOwogCiAgICAgYXV0byBvYnNlcnZlciA9IGFk
b3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKICAgICAKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFk
b3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxl
VGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOwotICAgIGNvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0Lmdl
dCgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAKICAgICByZWNlaXZlZFByZWZl
cmVuY2VOb3RpZmljYXRpb24gPSBmYWxzZTsKIAotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1
ZSh0ZXN0S2V5LCBDRlNUUigiMSIpLCB0ZXN0RG9tYWluKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0
QXBwVmFsdWUoVEVTVF9LRVkoKSwgQ0ZTVFIoIjEiKSwgdGVzdERvbWFpbik7CiAKLSAgICBFWFBF
Q1RfRVEoMSwgQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZSh0ZXN0S2V5LCB0ZXN0RG9t
YWluLCBudWxscHRyKSk7CisgICAgRVhQRUNUX0VRKDEsIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRl
Z2VyVmFsdWUoVEVTVF9LRVkoKSwgdGVzdERvbWFpbiwgbnVsbHB0cikpOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24pOwogCiAg
ICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewogICAgICAgICB3YWl0Rm9yUHJlZmVyZW5j
ZVN5bmNocm9uaXphdGlvbigpOwotICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIndpbmRvdy5pbnRlcm5hbHMucmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwi
JUBcIixcIiVAXCIpIiwgKE5TU3RyaW5nICopdGVzdERvbWFpbiwgKE5TU3RyaW5nICopdGVzdEtl
eV07CisgICAgICAgIE5TU3RyaW5nICpqcyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
d2luZG93LmludGVybmFscy5yZWFkUHJlZmVyZW5jZUludGVnZXIoXCIlQFwiLFwiJUBcIikiLCAo
TlNTdHJpbmcgKil0ZXN0RG9tYWluLCAoTlNTdHJpbmcgKilURVNUX0tFWSgpXTsKICAgICAgICAg
cmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6anNdLmludFZhbHVl
OwogICAgIH07CiAKQEAgLTEyMCwzNiArMTM4LDQwIEBAIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNl
Q2hhbmdlcykKIAogICAgIHJlY2VpdmVkUHJlZmVyZW5jZU5vdGlmaWNhdGlvbiA9IGZhbHNlOwog
Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHRlc3RLZXksIENGU1RSKCIyIiksIHRlc3RE
b21haW4pOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShURVNUX0tFWSgpLCBDRlNUUigi
MiIpLCB0ZXN0RG9tYWluKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRQcmVmZXJlbmNlTm90aWZpY2F0aW9uKTsKIAogICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFs
dWUoKSwgMik7CisKKyAgICBDTEVBUl9ERUZBVUxUUygpOwogfQogCiBURVNUKFdlYktpdCwgR2xv
YmFsUHJlZmVyZW5jZUNoYW5nZXNVc2luZ0RlZmF1bHRzV3JpdGUpCiB7Ci0gICAgc3lzdGVtKFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZGVmYXVsdHMgd3JpdGUgJUAgJUAgMCIsIChfX2Jy
aWRnZSBpZClnbG9iYWxEb21haW4sIChfX2JyaWRnZSBpZCl0ZXN0S2V5XS5VVEY4U3RyaW5nKTsK
KyAgICBDTEVBUl9ERUZBVUxUUygpOworCisgICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiZGVmYXVsdHMgd3JpdGUgJUAgJUAgMCIsIChfX2JyaWRnZSBpZClnbG9iYWxEb21h
aW4sIChfX2JyaWRnZSBpZClURVNUX0tFWSgpXS5VVEY4U3RyaW5nKTsKICAgICAKICAgICBhdXRv
IG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5p
dF0pOwogICAgIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVm
PiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
SW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4
dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQcm9jZXNzUG9v
bCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKICAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKIAogICAg
IHJlY2VpdmVkUHJlZmVyZW5jZU5vdGlmaWNhdGlvbiA9IGZhbHNlOwogCi0gICAgc3lzdGVtKFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZGVmYXVsdHMgd3JpdGUgJUAgJUAgMSIsIChfX2Jy
aWRnZSBpZClnbG9iYWxEb21haW4sIChfX2JyaWRnZSBpZCl0ZXN0S2V5XS5VVEY4U3RyaW5nKTsK
KyAgICBzeXN0ZW0oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkZWZhdWx0cyB3cml0ZSAl
QCAlQCAxIiwgKF9fYnJpZGdlIGlkKWdsb2JhbERvbWFpbiwgKF9fYnJpZGdlIGlkKVRFU1RfS0VZ
KCldLlVURjhTdHJpbmcpOwogCi0gICAgRVhQRUNUX0VRKDEsIENGUHJlZmVyZW5jZXNHZXRBcHBJ
bnRlZ2VyVmFsdWUodGVzdEtleSwgZ2xvYmFsRG9tYWluLCBudWxscHRyKSk7CisgICAgRVhQRUNU
X0VRKDEsIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUoVEVTVF9LRVkoKSwgZ2xvYmFs
RG9tYWluLCBudWxscHRyKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkUHJlZmVyZW5jZU5vdGlmaWNhdGlvbik7CiAKICAgICBhdXRvIHByZWZlcmVuY2VWYWx1ZSA9
IFsmXSB7CiAgICAgICAgIHdhaXRGb3JQcmVmZXJlbmNlU3luY2hyb25pemF0aW9uKCk7Ci0gICAg
ICAgIE5TU3RyaW5nICpqcyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAid2luZG93Lmlu
dGVybmFscy5yZWFkUHJlZmVyZW5jZUludGVnZXIoXCIlQFwiLFwiJUBcIikiLCAoTlNTdHJpbmcg
KilnbG9iYWxEb21haW4sIChOU1N0cmluZyAqKXRlc3RLZXldOworICAgICAgICBOU1N0cmluZyAq
anMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIndpbmRvdy5pbnRlcm5hbHMucmVhZFBy
ZWZlcmVuY2VJbnRlZ2VyKFwiJUBcIixcIiVAXCIpIiwgKE5TU3RyaW5nICopZ2xvYmFsRG9tYWlu
LCAoTlNTdHJpbmcgKilURVNUX0tFWSgpXTsKICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6anNdLmludFZhbHVlOwogICAgIH07CiAKQEAgLTE1Nywz
NyArMTc5LDQxIEBAIFRFU1QoV2ViS2l0LCBHbG9iYWxQcmVmZXJlbmNlQ2hhbmdlc1VzaW5nRGVm
YXVsdHNXcml0ZSkKIAogICAgIHJlY2VpdmVkUHJlZmVyZW5jZU5vdGlmaWNhdGlvbiA9IGZhbHNl
OwogCi0gICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZGVmYXVsdHMgd3Jp
dGUgJUAgJUAgMiIsIChfX2JyaWRnZSBpZClnbG9iYWxEb21haW4sIChfX2JyaWRnZSBpZCl0ZXN0
S2V5XS5VVEY4U3RyaW5nKTsKKyAgICBzeXN0ZW0oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJkZWZhdWx0cyB3cml0ZSAlQCAlQCAyIiwgKF9fYnJpZGdlIGlkKWdsb2JhbERvbWFpbiwgKF9f
YnJpZGdlIGlkKVRFU1RfS0VZKCldLlVURjhTdHJpbmcpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZFByZWZlcmVuY2VOb3RpZmljYXRpb24pOwogCiAgICAgRVhQRUNU
X0VRKHByZWZlcmVuY2VWYWx1ZSgpLCAyKTsKKworICAgIENMRUFSX0RFRkFVTFRTKCk7CiB9CiAK
IFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0FycmF5KQogeworICAgIENMRUFSX0RFRkFV
TFRTKCk7CisKICAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VP
YnNlcnZlciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNBcnJheSAqYXJyYXkgPSBAW0AxLCBAMiwg
QDNdOwogCiAgICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMg
YWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXRlc3REb21haW5dKTsKLSAgICBb
dXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVjdDphcnJheSBmb3JLZXk6KE5TU3RyaW5nICopdGVz
dEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6YXJyYXkgZm9yS2V5OihOU1N0cmlu
ZyAqKVRFU1RfS0VZKCldOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIp
KTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wg
Kiljb250ZXh0LmdldCgpOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1By
b2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAs
IDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10p
OwogCiAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewogICAgICAgICB3YWl0Rm9yUHJl
ZmVyZW5jZVN5bmNocm9uaXphdGlvbigpOwotICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIndpbmRvdy5pbnRlcm5hbHMuZW5jb2RlZFByZWZlcmVuY2VW
YWx1ZShcIiVAXCIsXCIlQFwiKSIsIChOU1N0cmluZyAqKXRlc3REb21haW4sIChOU1N0cmluZyAq
KXRlc3RLZXldOworICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIndpbmRvdy5pbnRlcm5hbHMuZW5jb2RlZFByZWZlcmVuY2VWYWx1ZShcIiVAXCIsXCIl
QFwiKSIsIChOU1N0cmluZyAqKXRlc3REb21haW4sIChOU1N0cmluZyAqKVRFU1RfS0VZKCldOwog
ICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpqc107
CiAgICAgfTsKIAogICAgIHByZWZlcmVuY2VWYWx1ZSgpOwogCiAgICAgTlNBcnJheSAqY2hhbmdl
ZEFycmF5ID0gQFtAMywgQDIsIEAxXTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVj
dDpjaGFuZ2VkQXJyYXkgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVm
YXVsdHMgc2V0T2JqZWN0OmNoYW5nZWRBcnJheSBmb3JLZXk6KE5TU3RyaW5nICopVEVTVF9LRVko
KV07CiAKICAgICBhdXRvIGVuY29kZWRTdHJpbmcgPSBwcmVmZXJlbmNlVmFsdWUoKTsKICAgICBh
dXRvIGVuY29kZWREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRF
bmNvZGVkU3RyaW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczowXSk7CkBAIC0xOTcsMTAgKzIyMywx
NCBAQCBURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNBcnJheSkKICAgICBBU1NFUlRfVFJV
RSghZXJyKTsKICAgICBBU1NFUlRfVFJVRShvYmplY3QpOwogICAgIEFTU0VSVF9UUlVFKFtvYmpl
Y3QgaXNFcXVhbDpjaGFuZ2VkQXJyYXldKTsKKworICAgIENMRUFSX0RFRkFVTFRTKCk7CiB9CiAK
IFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0RpY3Rpb25hcnkpCiB7CisgICAgQ0xFQVJf
REVGQVVMVFMoKTsKKwogICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tUZXN0UHJlZmVy
ZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CiAKICAgICBOU0RpY3Rpb25hcnkgKmRpY3QgPSBA
ewpAQCAtMjA5LDE2ICsyMzksMTYgQEAgVEVTVChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzRGlj
dGlvbmFyeSkKICAgICB9OwogCiAgICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNV
c2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXRlc3REb21h
aW5dKTsKLSAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVjdDpkaWN0IGZvcktleTooTlNT
dHJpbmcgKil0ZXN0S2V5XTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpkaWN0IGZvcktl
eTooTlNTdHJpbmcgKilURVNUX0tFWSgpXTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGls
OjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1
bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1By
b2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNz
UG9vbDooV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOwogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dp
bmRvdzpZRVNdKTsKIAogICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKICAgICAgICAg
d2FpdEZvclByZWZlcmVuY2VTeW5jaHJvbml6YXRpb24oKTsKLSAgICAgICAgTlNTdHJpbmcgKmpz
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmVuY29kZWRQ
cmVmZXJlbmNlVmFsdWUoXCIlQFwiLFwiJUBcIikiLCAoTlNTdHJpbmcgKil0ZXN0RG9tYWluLCAo
TlNTdHJpbmcgKil0ZXN0S2V5XTsKKyAgICAgICAgTlNTdHJpbmcgKmpzID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmVuY29kZWRQcmVmZXJlbmNlVmFsdWUo
XCIlQFwiLFwiJUBcIikiLCAoTlNTdHJpbmcgKil0ZXN0RG9tYWluLCAoTlNTdHJpbmcgKilURVNU
X0tFWSgpXTsKICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6anNdOwogICAgIH07CiAKQEAgLTIyOSw3ICsyNTksNyBAQCBURVNUKFdlYktpdCwgUHJl
ZmVyZW5jZUNoYW5nZXNEaWN0aW9uYXJ5KQogICAgICAgICBAImIiIDogQDIsCiAgICAgICAgIEAi
YyIgOiBAMywKICAgICB9OwotICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmNoYW5n
ZWREaWN0IGZvcktleTooTlNTdHJpbmcgKil0ZXN0S2V5XTsKKyAgICBbdXNlckRlZmF1bHRzIHNl
dE9iamVjdDpjaGFuZ2VkRGljdCBmb3JLZXk6KE5TU3RyaW5nICopVEVTVF9LRVkoKV07CiAKICAg
ICBhdXRvIGVuY29kZWRTdHJpbmcgPSBwcmVmZXJlbmNlVmFsdWUoKTsKICAgICBhdXRvIGVuY29k
ZWREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3Ry
aW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczowXSk7CkBAIC0yMzksMzIgKzI2OSwzNiBAQCBURVNU
KFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNEaWN0aW9uYXJ5KQogICAgIEFTU0VSVF9UUlVFKCFl
cnIpOwogICAgIEFTU0VSVF9UUlVFKG9iamVjdCk7CiAgICAgQVNTRVJUX1RSVUUoW29iamVjdCBp
c0VxdWFsOmNoYW5nZWREaWN0XSk7CisKKyAgICBDTEVBUl9ERUZBVUxUUygpOwogfQogCiBURVNU
KFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXNEYXRhKQogeworICAgIENMRUFSX0RFRkFVTFRTKCk7
CisKICAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZl
ciBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOiJhYmMiIGxlbmd0aDozXTsKIAogICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhb
W05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKil0ZXN0
RG9tYWluXSk7Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6ZGF0YSBmb3JLZXk6
KE5TU3RyaW5nICopdGVzdEtleV07CisgICAgW3VzZXJEZWZhdWx0cyBzZXRPYmplY3Q6ZGF0YSBm
b3JLZXk6KE5TU3RyaW5nICopVEVTVF9LRVkoKV07CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6
VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0
ZWRCdW5kbGVUZXN0IikpOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAo
V0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJv
Y2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRk
VG9XaW5kb3c6WUVTXSk7CiAKICAgICBhdXRvIHByZWZlcmVuY2VWYWx1ZSA9IFsmXSB7CiAgICAg
ICAgIHdhaXRGb3JQcmVmZXJlbmNlU3luY2hyb25pemF0aW9uKCk7Ci0gICAgICAgIE5TU3RyaW5n
ICpqcyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAid2luZG93LmludGVybmFscy5lbmNv
ZGVkUHJlZmVyZW5jZVZhbHVlKFwiJUBcIixcIiVAXCIpIiwgKE5TU3RyaW5nICopdGVzdERvbWFp
biwgKE5TU3RyaW5nICopdGVzdEtleV07CisgICAgICAgIE5TU3RyaW5nICpqcyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAid2luZG93LmludGVybmFscy5lbmNvZGVkUHJlZmVyZW5jZVZh
bHVlKFwiJUBcIixcIiVAXCIpIiwgKE5TU3RyaW5nICopdGVzdERvbWFpbiwgKE5TU3RyaW5nICop
VEVTVF9LRVkoKV07CiAgICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OmpzXTsKICAgICB9OwogCiAgICAgcHJlZmVyZW5jZVZhbHVlKCk7CiAKICAgICBO
U0RhdGEgKmNoYW5nZWREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJhYmNkIiBsZW5ndGg6
NF07Ci0gICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZERhdGEgZm9yS2V5
OihOU1N0cmluZyAqKXRlc3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmNoYW5n
ZWREYXRhIGZvcktleTooTlNTdHJpbmcgKilURVNUX0tFWSgpXTsKIAogICAgIGF1dG8gZW5jb2Rl
ZFN0cmluZyA9IHByZWZlcmVuY2VWYWx1ZSgpOwogICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6ZW5jb2RlZFN0
cmluZyBvcHRpb25zOjBdKTsKQEAgLTI3NCwzMiArMzA4LDM2IEBAIFRFU1QoV2ViS2l0LCBQcmVm
ZXJlbmNlQ2hhbmdlc0RhdGEpCiAgICAgQVNTRVJUX1RSVUUoIWVycik7CiAgICAgQVNTRVJUX1RS
VUUob2JqZWN0KTsKICAgICBBU1NFUlRfVFJVRShbb2JqZWN0IGlzRXF1YWw6Y2hhbmdlZERhdGFd
KTsKKworICAgIENMRUFSX0RFRkFVTFRTKCk7CiB9CiAKIFRFU1QoV2ViS2l0LCBQcmVmZXJlbmNl
Q2hhbmdlc0RhdGUpCiB7CisgICAgQ0xFQVJfREVGQVVMVFMoKTsKKwogICAgIGF1dG8gb2JzZXJ2
ZXIgPSBhZG9wdE5TKFtbV0tUZXN0UHJlZmVyZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CiAK
ICAgICBOU0RhdGUgKmRhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6
MF07CiAKICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0TlMoW1tOU1VzZXJEZWZhdWx0cyBh
bGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopdGVzdERvbWFpbl0pOwotICAgIFt1
c2VyRGVmYXVsdHMuZ2V0KCkgc2V0T2JqZWN0OmRhdGUgZm9yS2V5OihOU1N0cmluZyAqKXRlc3RL
ZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmRhdGUgZm9yS2V5OihOU1N0cmluZyAq
KVRFU1RfS0VZKCldOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRl
eHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsK
LSAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKilj
b250ZXh0LmdldCgpOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nl
c3NQb29sICopY29udGV4dC5nZXQoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwog
CiAgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0gewogICAgICAgICB3YWl0Rm9yUHJlZmVy
ZW5jZVN5bmNocm9uaXphdGlvbigpOwotICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIndpbmRvdy5pbnRlcm5hbHMuZW5jb2RlZFByZWZlcmVuY2VWYWx1
ZShcIiVAXCIsXCIlQFwiKSIsIChOU1N0cmluZyAqKXRlc3REb21haW4sIChOU1N0cmluZyAqKXRl
c3RLZXldOworICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIndpbmRvdy5pbnRlcm5hbHMuZW5jb2RlZFByZWZlcmVuY2VWYWx1ZShcIiVAXCIsXCIlQFwi
KSIsIChOU1N0cmluZyAqKXRlc3REb21haW4sIChOU1N0cmluZyAqKVRFU1RfS0VZKCldOwogICAg
ICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpqc107CiAg
ICAgfTsKIAogICAgIHByZWZlcmVuY2VWYWx1ZSgpOwogCiAgICAgTlNEYXRlICpjaGFuZ2VkRGF0
ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzoxMF07Ci0gICAgW3VzZXJE
ZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZERhdGUgZm9yS2V5OihOU1N0cmluZyAqKXRl
c3RLZXldOworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0OmNoYW5nZWREYXRlIGZvcktleToo
TlNTdHJpbmcgKilURVNUX0tFWSgpXTsKIAogICAgIGF1dG8gZW5jb2RlZFN0cmluZyA9IHByZWZl
cmVuY2VWYWx1ZSgpOwogICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6ZW5jb2RlZFN0cmluZyBvcHRpb25zOjBd
KTsKQEAgLTMwOSw2ICszNDcsMzggQEAgVEVTVChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzRGF0
ZSkKICAgICBBU1NFUlRfVFJVRSghZXJyKTsKICAgICBBU1NFUlRfVFJVRShvYmplY3QpOwogICAg
IEFTU0VSVF9UUlVFKFtvYmplY3QgaXNFcXVhbDpjaGFuZ2VkRGF0ZV0pOworCisgICAgQ0xFQVJf
REVGQVVMVFMoKTsKK30KKworVEVTVChXZWJLaXQsIFByZWZlcmVuY2VDaGFuZ2VzTmlsKQorewor
ICAgIENMRUFSX0RFRkFVTFRTKCk7CisKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dL
VGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB1c2VyRGVm
YXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1l
OihOU1N0cmluZyAqKXRlc3REb21haW5dKTsKKyAgICBbdXNlckRlZmF1bHRzIHNldE9iamVjdDpA
MSBmb3JLZXk6KE5TU3RyaW5nICopVEVTVF9LRVkoKV07CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQ
STo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5q
ZWN0ZWRCdW5kbGVUZXN0IikpOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihX
S1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAz
MDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllF
U10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBs
ZSJdOworCisgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0geworICAgICAgICB3YWl0Rm9y
UHJlZmVyZW5jZVN5bmNocm9uaXphdGlvbigpOworICAgICAgICBOU1N0cmluZyAqanMgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIndpbmRvdy5pbnRlcm5hbHMucmVhZFByZWZlcmVuY2VJ
bnRlZ2VyKFwiJUBcIixcIiVAXCIpIiwgKE5TU3RyaW5nICopdGVzdERvbWFpbiwgKE5TU3RyaW5n
ICopVEVTVF9LRVkoKV07CisgICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OmpzXS5pbnRWYWx1ZTsKKyAgICB9OworCisgICAgRVhQRUNUX0VRKDEsIHBy
ZWZlcmVuY2VWYWx1ZSgpKTsKKworICAgIFt1c2VyRGVmYXVsdHMgc2V0T2JqZWN0Om5pbCBmb3JL
ZXk6KE5TU3RyaW5nICopVEVTVF9LRVkoKV07CisKKyAgICBFWFBFQ1RfRVEoMCwgcHJlZmVyZW5j
ZVZhbHVlKCkpOworCisgICAgQ0xFQVJfREVGQVVMVFMoKTsKIH0KIAogc3RhdGljIElNUCBzaGFy
ZWRJbnN0YW5jZU1ldGhvZE9yaWdpbmFsID0gbmlsOwpAQCAtMzMxLDcgKzQwMSw3IEBAIFRFU1Qo
V2ViS2l0LCBQcmVmZXJlbmNlT2JzZXJ2ZXJTdGFydGVkT25BY3RpdmF0aW9uKQogCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdL
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3Qo
IkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgp
LnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIFtjb25m
aWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>