<?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>209380</bug_id>
          
          <creation_ts>2020-03-21 16:54:00 -0700</creation_ts>
          <short_desc>Support inserting text or dictation alternative by simulating keyboard input</short_desc>
          <delta_ts>2020-07-21 10:57:07 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214434</see_also>
          <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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1632538</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 16:54:00 -0700</bug_when>
    <thetext>Some web sites, like facebook.com or reddit.com, implement their own text editing system, which listens for DOM keyboard events or the DOM change event. When text corrections or dictation alternatives are inserted the behavior of the editor does not match what it would have done if a user manually typed the correction or alternative. For example, facebook.com listens for a DOM keyup event to hide the placeholder text shown in their fields. Towards having a good user experience, expose an insertion option that when enabled dispatches dummy keyboard and change events when performing a text insertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632539</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 16:54:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/59445102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632543</commentid>
    <comment_count>2</comment_count>
      <attachid>394184</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 17:16:42 -0700</bug_when>
    <thetext>Created attachment 394184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632544</commentid>
    <comment_count>3</comment_count>
      <attachid>394185</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 17:17:30 -0700</bug_when>
    <thetext>Created attachment 394185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632577</commentid>
    <comment_count>4</comment_count>
      <attachid>394185</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 20:18:56 -0700</bug_when>
    <thetext>Comment on attachment 394185
Patch

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

&gt; Tools/TestWebKitAPI/cocoa/TestCocoa.h:45
&gt; +// This is a template instead of a macro to support passing arguments written in Objective-C

Yikes, this will not preserve original expressions....doesn&apos;t look like there is an exposed way  to retrieve stringified values of the passed args in C++. So, going to go back to using a macro for this and just surround the array literals with parens</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632587</commentid>
    <comment_count>5</comment_count>
      <attachid>394195</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 23:01:23 -0700</bug_when>
    <thetext>Created attachment 394195
Patch and unit tests

Now EXPECT_NS_EQUAL is a macro, again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632588</commentid>
    <comment_count>6</comment_count>
      <attachid>394196</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 23:02:52 -0700</bug_when>
    <thetext>Created attachment 394196
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632589</commentid>
    <comment_count>7</comment_count>
      <attachid>394196</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 23:33:18 -0700</bug_when>
    <thetext>Comment on attachment 394196
Patch and unit tests

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:4716
&gt; +    [self _shouldSimulateKeyboardInputOnTextInsertionInternal];

r-, this is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632590</commentid>
    <comment_count>8</comment_count>
      <attachid>394197</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-21 23:34:37 -0700</bug_when>
    <thetext>Created attachment 394197
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632646</commentid>
    <comment_count>9</comment_count>
      <attachid>394197</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-22 09:50:20 -0700</bug_when>
    <thetext>Comment on attachment 394197
Patch and unit tests

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

&gt; Source/WebKit/Shared/Cocoa/InsertTextOptions.h:37
&gt; +    bool simulateKeyboardInput { false };

As you know, Cocoa programming style suggests naming boolean properties in a way that disambiguates from a function that would take action. So shouldSimulateKeyboardInput because simulateKeyboardInput reads like a command that would do something immediately rather than a setting for what should be done.

We should consider that style for the booleans in this structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633010</commentid>
    <comment_count>10</comment_count>
      <attachid>394300</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-23 13:57:36 -0700</bug_when>
    <thetext>Created attachment 394300
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633011</commentid>
    <comment_count>11</comment_count>
      <attachid>394197</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-23 13:58:18 -0700</bug_when>
    <thetext>Comment on attachment 394197
Patch and unit tests

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

Thanks for the review.

&gt;&gt; Source/WebKit/Shared/Cocoa/InsertTextOptions.h:37
&gt;&gt; +    bool simulateKeyboardInput { false };
&gt; 
&gt; As you know, Cocoa programming style suggests naming boolean properties in a way that disambiguates from a function that would take action. So shouldSimulateKeyboardInput because simulateKeyboardInput reads like a command that would do something immediately rather than a setting for what should be done.
&gt; 
&gt; We should consider that style for the booleans in this structure.

Renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633012</commentid>
    <comment_count>12</comment_count>
      <attachid>394300</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-23 14:00:05 -0700</bug_when>
    <thetext>Comment on attachment 394300
To Land

Clearing flags on attachment: 394300

Committed r258873: &lt;https://trac.webkit.org/changeset/258873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633013</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-23 14:00:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394184</attachid>
            <date>2020-03-21 17:16:42 -0700</date>
            <delta_ts>2020-03-21 17:17:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209380-20200321171642.patch</filename>
            <type>text/plain</type>
            <size>21432</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiMDJhYWU5YWMyZDc1Y2Qw
NGViNjE2ZjlmNmNlZjllNzRmMTU3ODYuLjQ1YzFiZDhkY2E0ZTdlYjNmZDBkNDkwN2ViZTU3YWI5
ODkxYjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMjEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0aW5nIHRl
eHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9hcmQgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSB3b3JrYXJvdW5kIGZvciBzaXRlcyB0aGUg
aW1wbGVtZW50IHRoZWlyIG93biBlZGl0aW5nIHN5c3RlbSAoZS5nLiBmYWNlYm9vay5jb20pCisg
ICAgICAgIGFkZCBhIG5ldyBpbnNlcnRpb24gb3B0aW9uIHRoYXQgbWFrZXMgdGhlIGluc2VydGlv
biBoYXZpbmcgYSBwYXNzaW5nIHJlc2VtYmxhbmNlCisgICAgICAgIG9mIGEgcGVyc29uIHR5cGlu
Zy4gVGhlIHJlc2VtYmxhbmNlIGlzIGFjaGlldmVkIGJ5IGRpc3BhdGNoaW5nIERPTSBldmVudHMg
d2l0aCB0eXBlCisgICAgICAgICJrZXlkb3duIiwgImtleXVwIiwgYW5kICJjaGFuZ2UiLgorCisg
ICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVj
b2RlKToKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgdGhlIG5ldyBvcHRpb24uCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaDogRGVmYXVsdCB0aGUgbmV3IG9w
dGlvbiwgc2ltdWxhdGVLZXlib2FyZElucHV0LCB0byBmYWxzZQorICAgICAgICB0byBrZWVwIG91
ciBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRTaW11bGF0
ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25dKTogQWRkZWQuIFJldHVybnMgTk8gd2hlbgor
ICAgICAgICBidWlsZGluZyB3aXRob3V0IFVTRShURVhUX0lOVEVSQUNUSU9OX0FERElUSU9OUykg
dG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGluc2VydFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDphbHRl
cm5hdGl2ZXM6c3R5bGU6XSk6CisgICAgICAgIFNldCB0aGUgc2ltdWxhdGVLZXlib2FyZElucHV0
IG9wdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisgICAgICAgIElmIHNpbXVsYXRlS2V5
Ym9hcmRJbnB1dCBpcyBmYWxzZSB0aGVuIGRvIHdoYXQgd2UgZG8gbm93LiBPdGhlcndpc2UsIGRp
c3BhdGNoIGEgRE9NIGV2ZW50CisgICAgICAgIG9mIHR5cGUgImtleWRvd24iIGFuZCBwZXJmb3Jt
IHRoZSBpbnNlcnRpb24uIFRoZW4gZGlzcGF0Y2ggRE9NIGV2ZW50cyBvZiB0eXBlICJrZXl1cCIg
YW5kICJjaGFuZ2UiLiAKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlz
dCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNl
cnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0
T3B0aW9ucy5jcHAKaW5kZXggODE2NDQyNjEyYTIyNzlhOGMzM2JkNWNmM2E4ZTI0MDM3NDY3NTBi
ZS4uMmQ5NTJiYWFhM2QwMzUyNjY0ZThmMjllNDE5MjAxNjc4OGYxM2VkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMzMsNiAr
MzMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZQogICAgIGVuY29kZXIgPDwgb3B0aW9ucy5y
ZWdpc3RlclVuZG9Hcm91cDsKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rp
b25VcGRhdGU7CiAgICAgZW5jb2RlciA8PCBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZTsK
KyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0OwogICAgIGVuY29k
ZXIgPDwgb3B0aW9ucy5lZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG87CiB9CiAKQEAgLTQ1LDYgKzQ2
LDggQEAgT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gb3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCmlu
ZGV4IGNkMjAxYWIyYmFkM2QyOTNkZjhiM2VhMDM4N2UzNDFhZDRiNzBiNTEuLjk4YzkyYjQ0OTlk
MDVhNTZhYTA4OTVjNjFmNmM3OWRhNjAxODRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgSW5z
ZXJ0VGV4dE9wdGlvbnMgewogICAgIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlIHsgZmFsc2UgfTsKKyAgICBib29sIHNpbXVsYXRlS2V5Ym9hcmRJ
bnB1dCB7IGZhbHNlIH07CiAgICAgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyB7IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290IH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmNjZiZWUyODFhNmZhMTFlNjhlNWE1ZmY4NTU2NWZh
OTMzYzQzMTg4Li5jNTI3ODQ1MTkyMzg1YmFiODE3NzAxZWVhMjQwMjIzNDM3OWI4ZDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTQ3MTAsNiArNDcxMCwxNSBAQCAtICh2b2lkKWRlbGV0ZUJhY2t3YXJk
CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiZGVsZXRlQmFja3dhcmQiX3MpOwogfQog
CistIChCT09MKV9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24KK3sK
KyNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCisgICAgW3NlbGYgX3Nob3VsZFNp
bXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbkludGVybmFsXTsKKyNlbHNlCisgICAg
cmV0dXJuIE5POworI2VuZGlmCit9CisKIC8vIEluc2VydHMgdGhlIGdpdmVuIHN0cmluZywgcmVw
bGFjaW5nIGFueSBzZWxlY3RlZCBvciBtYXJrZWQgdGV4dC4KIC0gKHZvaWQpaW5zZXJ0VGV4dDoo
TlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIHsKQEAgLTQ3MTcsNyArNDcyNiw3IEBAIC0gKHZvaWQp
aW5zZXJ0VGV4dDooTlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIAogICAgIFdlYktpdDo6SW5zZXJ0
VGV4dE9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSA9
IFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlzQ2FsbGluZ0lucHV0RGVs
ZWdhdGUpXSAmJiBrZXlib2FyZC5pc0NhbGxpbmdJbnB1dERlbGVnYXRlOwotCisgICAgb3B0aW9u
cy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElu
cHV0T25UZXh0SW5zZXJ0aW9uXTsKICAgICBfcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdW
YWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKQEAg
LTQ3MzEsNyArNDc0MCwxMCBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICopYVN0cmlu
Z1ZhbHVlIGFsdGVybmF0aXZlczooTlNBcnJheTxOU1N0cmluZyAqPiAqKQogICAgICAgICBCT09M
IGlzTG93Q29uZmlkZW5jZSA9IHN0eWxlID09IFVJVGV4dEFsdGVybmF0aXZlU3R5bGVMb3dDb25m
aWRlbmNlOwogICAgICAgICBhdXRvIHRleHRBbHRlcm5hdGl2ZXMgPSBhZG9wdE5TKFtbTlNUZXh0
QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6YVN0cmluZ1ZhbHVlIGFs
dGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMgaXNMb3dDb25maWRlbmNlOmlzTG93Q29uZmlk
ZW5jZV0pOwogICAgICAgICBXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgdGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlIHsgdGV4dEFsdGVybmF0aXZlcy5nZXQoKSwgTlNNYWtlUmFuZ2Uo
MCwgYVN0cmluZ1ZhbHVlLmxlbmd0aCkgfTsKLSAgICAgICAgX3BhZ2UtPmluc2VydERpY3RhdGVk
VGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB9
LCB7IH0pOworCisgICAgICAgIFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKKyAg
ICAgICAgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uXTsKKyAgICAgICAgX3BhZ2UtPmluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZSB9LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBi
YzBhYzY4YzcyMGU5NjExNDUzMzIyMWM5NWU4YmFmYjVlZGEyZWMzLi5jNjk4NGEzYmQzNzNjNjky
YzAzNmI2NmYzZThmZjhlYzczMTg4MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVu
dE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgpA
QCAtMjAwLDggKzIwMSwxNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZQogICAgIGlmIChvcHRp
b25zLnJlZ2lzdGVyVW5kb0dyb3VwKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nIHsgfSk7CiAKKyAgICBSZWZQdHI8RWxl
bWVudD4gZm9jdXNlZEVsZW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQo
KS0+Zm9jdXNlZEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYm
IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KQorICAgICAgICBmb2N1c2VkRWxlbWVudC0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisKICAgICBB
U1NFUlQoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwogICAgIGZyYW1lLmVkaXRv
cigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cywgbnVsbHB0ciAvKiB0cmlnZ2VyaW5nRXZlbnQgKi8pOworCisgICAgaWYgKGZvY3VzZWRFbGVt
ZW50ICYmIG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSB7CisgICAgICAgIGZvY3VzZWRF
bGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXVwRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Cisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcykpOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTFiOTI2NDIyMWE0
OWE4NjM4NWRjODhjZDU4NDMyNDhiYzU2MWVhOS4uMTA0ODc4OGEzMTQzYzYzM2E1OWZlYzYzYWEy
OGM5ZmRmZmQ1OTEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTUyOTMsMTMgKzUyOTMsMjIgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4K
ICAgICAKICAgICBpZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsK
LSAgICAKKworICAgIFJlZlB0cjxFbGVtZW50PiBmb2N1c2VkRWxlbWVudCA9IGZyYW1lLmRvY3Vt
ZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpIDogbnVsbHB0cjsKKyAg
ICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQpCisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMpKTsKKwogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVy
IHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAg
Ly8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93
biB0aGUgcGFnZS4KICAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxs
cHRyLCByZXBsYWNlc1RleHQgPyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2
ZW50SW5wdXRLZXlib2FyZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNv
bmZpcm1Db21wb3NpdGlvbih0ZXh0KTsKKworICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBvcHRp
b25zLnNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkgeworICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBmb2N1
c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMp
KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4NTM2ZmUyZTI4Mjc3ZTUyYjExYjRh
OTFiYWVhYTcxNzhjODhiOGQuLjcyM2ZlNjJmMjQ4MjM0NzllNGI1YWM2YzVkYmFlZjlmZmJlZDcz
ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNCBAQAorMjAyMC0wMy0yMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnRpbmcgdGV4dCBvciBkaWN0YXRpb24gYWx0ZXJu
YXRpdmUgYnkgc2ltdWxhdGluZyBrZXlib2FyZCBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81OTQ0NTEwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMgdG8gZW5zdXJlIHRoYXQgRE9NIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBv
biBpbnNlcnRpb24gd2hlbiBzaW11bGF0ZUtleWJvYXJkSW5wdXQKKyAgICAgICAgaXMgZW5hYmxl
ZC4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBjb252ZW5pZW5jZSBhc3NlcnRpb24gZnVuY3Rp
b24sIEVYUEVDVF9OU19FUVVBTCwgdGhhdCBjYW4KKyAgICAgICAgY29tcGFyZSBOU09iamVjdHMg
c28gbG9uZyBhcyB0aGV5IGltcGxlbWVudCAtaXNFcXVhbCBhbmQgLWRlc2NyaXB0aW9uLiBJCisg
ICAgICAgIG1ha2UgdXNlIG9mIHRoaXMgdG8gY29tcGFyZSB0aGUgYWN0dWFsIGFycmF5IG9mIGZp
cmVkIERPTSBldmVudHMgdHlwZXMgdG8KKyAgICAgICAgYW4gZXhwZWN0ZWQgYXJyYXkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzaG91bGRTaW11bGF0ZUtleWJvYXJk
SW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlkZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6YXNzZXJ0TlNPYmplY3RzQXJlRXF1YWwpOiBBZGRlZC4K
KyAgICAgICAgKEVYUEVDVF9OU19FUVVBTCk6IEFkZGVkLiBUaGlzIGlzIGEgdGVtcGxhdGUgaW5z
dGVhZCBvZiBhIG1hY3JvIHRvIGF2b2lkIGEgY29tcGlsZS0KKyAgICAgICAgdGltZSBmYWlsdXJl
IHdoZW4gaXQncyBjYWxsZWQgd2l0aCBPYmplY3RpdmUtQyBsaXRlcmFsIGV4cHJlc3Npb25zIHRo
YXQgY29udGFpbiBhICcsJy4KKyAgICAgICAgRm9yIGV4YW1wbGUsIEBbIEAxLCBAMiBdLiBUaGlz
IGZhaWx1cmUgaXMgYmVjYXVzZSB0aGUgcHJlcHJvY2Vzc29yIHdvcmtzIGF0IHRoZSB0b2tlbgor
ICAgICAgICBsZXZlbCBhbmQgaXMgbm90IGtub3dsZWRnYWJsZSBhYm91dCBzdWNoIHN5bnRheC4g
SXQganVzdCBzcGxpdHMgdG9rZW5zIGJhc2VkIG9uIHRoZQorICAgICAgICBmaXJzdCBjb21tYS4g
QWx0aG91Z2ggY2FuIHdvcmthcm91bmQgdGhpcyBmYWlsdXJlIGJ5IHN1cnJvdW5kaW5nIHRoZSBl
eHByZXNzaW9uIHdpdGgKKyAgICAgICAgcGFyZW50aGVzZXMsIEkgZmVsdCB0aGlzIHdhcyB0b28g
c3VidGxlIGFuZCBjaG9zZSB0byBhdm9pZGVkIHRoaXMgaXNzdWUgYWx0b2dldGhlcgorICAgICAg
ICBieSB1c2luZyBhIHRlbXBsYXRlIGZ1bmN0aW9uLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
aW9zL2luc2VydC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTAyICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbbGxkYi13ZWJraXRdIEFkZCBzdXBwb3J0
IGZvciBwcmV0dHktcHJpbnRpbmcgY29tcGxleCBiaXRtYXNrcyAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNGJhNzFiMWI3YmY2YWVhZjlkZWEyNTMyMTEzZWYyODRkODY2OWZkNC4uMzc3ZTEw
NjFiNDhiYzhlZGMwZTdmNmVkODA2ODA3Mzc0N2RiN2JkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTk4NCw2ICs5ODQsNyBAQAogCQlDRTM1MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyogaW5w
dXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJCQkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1i
bHVyLmh0bWwgKi87IH07CiAJCUNFNDQ5RTExMjFBRTBGNzIwMEU3QURBMSAvKiBXS1dlYlZpZXdG
aW5kU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U0NDlFMTAyMUFFMEY3MjAwRTdBREExIC8qIFdLV2ViVmlld0ZpbmRTdHJpbmcubW0gKi87
IH07CiAJCUNFNEQ1REU3MUY2NzQzQkEwMDcyQ0ZDNiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNEQ1REU1
MUY2NzQzQkEwMDcyQ0ZDNiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmNwcCAqLzsgfTsKKwkJQ0U2
RDBFRTMyNDI2QjkzMjAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RDBFRTIyNDI2QjhFRDAw
MkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi87IH07CiAJCUNFNkU4MUEwMjBBNjkzNUYwMEUy
QzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFODE5RjIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91
dEZ1bmN0aW9uLm1tICovOyB9OwogCQlDRTZFODFBNDIwQTkzM0Q1MDBFMkM4MEYgLyogc2V0LXRp
bWVvdXQtZnVuY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQt
ZnVuY3Rpb24uaHRtbCAqLzsgfTsKIAkJQ0U3ODcwNUYyMTA3QUI5ODAwNTNBQzY3IC8qIE1vdmVP
bmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNzg3MDVEMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNs
ZUxvZ2dlci5jcHAgKi87IH07CkBAIC0xMzc0LDYgKzEzNzUsNyBAQAogCQkJCTUxMTBGQ0Y2MUUw
MUNEODMwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQkyRUZGMDZDRDFEOEE0MjlBMDAwNEJCMzAgLyogaW5wdXQtZmllbGQtaW4tc2Nyb2xs
YWJsZS1kb2N1bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNFMzUyNEZBMUIx
NDQzODkwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJQ0U2RDBFRTMyNDI2QjkzMjAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElzTmF2
aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOUI0
QUQyQzFFQ0E2RjdGMDBGNUZFQTAgLyoganMtYXV0b3BsYXktYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQlDOTlCNjc1RDFFMzk3MjIwMDBGQzZDODAgLyoganMtcGxheS13aXRo
LWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNTc4LDYgKzI1ODAsNyBA
QAogCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFNjQwQ0E1MjM3MEE0RjMwMEM1Q0FBNCAvKiBUZXN0Q29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gVGVzdENvY29hLmg7IHBhdGggPSBjb2NvYS9UZXN0Q29jb2EuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8qIFRl
c3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RDb2NvYS5tbTsgcGF0aCA9IGNv
Y29hL1Rlc3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U2RDBFRTIy
NDI2QjhFRDAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IG5hbWUgPSAiaW5zZXJ0LXRleHQuaHRtbCI7IHBhdGggPSAiaW9zL2luc2VydC10ZXh0Lmh0bWwi
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNFNkU4MTlGMjBBNjkzNUYwMEUyQzgw
RiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXRUaW1l
b3V0RnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkU4MUEzMjBB
OTMzQjgwMEUyQzgwRiAvKiBzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBuYW1lID0gInNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwiOyBwYXRoID0gImlvcy9z
ZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQlDRTc4NzA1QzIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2NzEsNiArMzY3NCw3IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMTZCRUQ3MjMwNEExRDEwMEI0
QTE2NyAvKiBjb21wb3NpdGVkLmh0bWwgKi8sCisJCQkJQ0U2RDBFRTIyNDI2QjhFRDAwMkFEOTAx
IC8qIGluc2VydC10ZXh0Lmh0bWwgKi8sCiAJCQkJMEYzNDA3NzcyMzAzODI1NDAwNjBBMUEwIC8q
IG92ZXJmbG93LXNjcm9sbC5odG1sICovLAogCQkJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAv
KiBwYWdlcy5wYWdlcyAqLywKIAkJCQlDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0LXRp
bWVvdXQtZnVuY3Rpb24uaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQppbmRleCA3NDk4YjI4ZTQ0NGU5OWQ5
MzA5NDI5MGEwZDFhMGM0N2FhZjMyOWEyLi5iYWNiOGU4OTQ3NDBmOGI1MTQ5OGQ1MDQzN2I2NDc3
MWRhZjk1YjkzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXli
b2FyZElucHV0VGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJJUGFk
VXNlckludGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1wb3J0ICJJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdENvY29hLmgi
CiAjaW1wb3J0ICJUZXN0SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTM3LDYgKzM4LDEwIEBACiAjaW1wb3J0IDxXZWJL
aXRMZWdhY3kvV2ViRXZlbnQuaD4KICNpbXBvcnQgPGNtYXRoPgogCitAaW50ZXJmYWNlIFdLQ29u
dGVudFZpZXcgKCkKKy0gKEJPT0wpX3Nob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dElu
c2VydGlvbjsKK0BlbmQKKwogQGludGVyZmFjZSBJbnB1dEFzc2lzdGFudEl0ZW1UZXN0aW5nV2Vi
VmlldyA6IFRlc3RXS1dlYlZpZXcKICsgKFVJQmFyQnV0dG9uSXRlbUdyb3VwICopbGVhZGluZ0l0
ZW1zRm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKICsgKFVJQmFyQnV0dG9uSXRlbUdy
b3VwICopdHJhaWxpbmdJdGVtc0ZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CkBAIC02
NDcsNiArNjUyLDQ3IEBAIFRFU1QoS2V5Ym9hcmRJbnB1dFRlc3RzLCBTdXBwcmVzc1NvZnR3YXJl
S2V5Ym9hcmQpCiAgICAgRVhQRUNUX1RSVUUoVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFuY2Uu
X3Nob3VsZFN1cHByZXNzU29mdHdhcmVLZXlib2FyZCk7CiB9CiAKK3N0YXRpYyBCT09MIHNob3Vs
ZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbk92ZXJyaWRlKGlkLCBTRUwpCit7
CisgICAgcmV0dXJuIFlFUzsKK30KKworVEVTVChLZXlib2FyZElucHV0VGVzdHMsIEluc2VydFRl
eHRTaW11bGF0aW5nS2V5Ym9hcmRJbnB1dCkKK3sKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
IG92ZXJyaWRlU2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uIHsgTlND
bGFzc0Zyb21TdHJpbmcoQCJXS0NvbnRlbnRWaWV3IiksIEBzZWxlY3Rvcihfc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNo
b3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbk92ZXJyaWRlKSB9OworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBhdXRvIGlucHV0RGVsZWdh
dGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5w
dXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6WyZdKFdL
V2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNT
dGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0
RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaW5zZXJ0LXRl
eHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5i
b2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2Vy
dFRleHQ6QCJoZWxsbyJdOworICAgIEVYUEVDVF9OU19FUVVBTChAW0Aia2V5ZG93biIsIEAiYmVm
b3JlaW5wdXQiLCBAImlucHV0IiwgQCJrZXl1cCIsIEAiY2hhbmdlIl0sIFt3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmaXJlZEV2ZW50cyJdKTsKK30KKworI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQorCitURVNUKEtleWJvYXJkSW5wdXRUZXN0cywgSW5zZXJ0
RGljdGF0aW9uQWx0ZXJuYXRpdmVzU2ltdWxhdGluZ0tleWJvYXJkSW5wdXQpCit7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBvdmVycmlkZVNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9u
VGV4dEluc2VydGlvbiB7IE5TQ2xhc3NGcm9tU3RyaW5nKEAiV0tDb250ZW50VmlldyIpLCBAc2Vs
ZWN0b3IoX3Nob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihzaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRp
b25PdmVycmlkZSkgfTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7Cisg
ICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Q
b2xpY3lIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4p
IHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAg
IFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImluc2VydC10ZXh0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRv
Q2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1
dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAWyBAImhlbG8i
IF0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIEVYUEVDVF9OU19FUVVB
TChAW0Aia2V5ZG93biIsIEAiYmVmb3JlaW5wdXQiLCBAImlucHV0IiwgQCJrZXl1cCIsIEAiY2hh
bmdlIl0sIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmaXJlZEV2ZW50
cyJdKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RDb2NvYS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0Q29j
b2EuaAppbmRleCA2ZTQ1Mzk1OWRkYTZiMWI4MWVkYjIxMTc2M2RiYjYyZTllYThjMmYxLi4yMjc3
ODJhNDhmOGZhZjc4ZTQ5NGYzMmM0ZWQwZmMzZTk1NGY5ZmRjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdENvY29hLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsMzIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KK3N0YXRpYyBpbmxpbmUgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgYXNz
ZXJ0TlNPYmplY3RzQXJlRXF1YWwoY29uc3QgY2hhciogZXhwZWN0ZWRFeHByZXNzaW9uLCBjb25z
dCBjaGFyKiBhY3R1YWxFeHByZXNzaW9uLCBUICpleHBlY3RlZCwgVSAqYWN0dWFsKQoreworICAg
IGlmICgoIWV4cGVjdGVkICYmICFhY3R1YWwpIHx8IFtleHBlY3RlZCBpc0VxdWFsOmFjdHVhbF0p
CisgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisgICAgcmV0dXJu
IHRlc3Rpbmc6OmludGVybmFsOjpFcUZhaWx1cmUoZXhwZWN0ZWRFeHByZXNzaW9uLCBhY3R1YWxF
eHByZXNzaW9uLCB0b1NURChbZXhwZWN0ZWQgZGVzY3JpcHRpb25dKSwgdG9TVEQoW2FjdHVhbCBk
ZXNjcmlwdGlvbl0pLCBmYWxzZSAvKiBpZ25vcmluZ19jYXNlICovKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisvLyBUaGlzIGlzIGEg
dGVtcGxhdGUgaW5zdGVhZCBvZiBhIG1hY3JvIHRvIHN1cHBvcnQgcGFzc2luZyBhcmd1bWVudHMg
d3JpdHRlbiBpbiBPYmplY3RpdmUtQworLy8gbGl0ZXJhbCBzeW50YXgsIHdoaWNoIG1heSBjb25m
dXNlIHRoZSBwcmVwcm9jZXNzb3IgKGUuZy4gQFsgQCJmaXJzdCIsIEAic2Vjb25kIiBdKS4gSXQg
aXMKKy8vIGFsc28gaW50ZW50aW9uYWxseSBuYW1lZCB0byBtYXRjaCBvdGhlciBHb29nbGUgdGVz
dCBhc3NlcnRpb25zLgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0YXRpYyBp
bmxpbmUgdm9pZCBFWFBFQ1RfTlNfRVFVQUwoVCBleHBlY3RlZCwgVSBhY3R1YWwpCit7CisgICAg
RVhQRUNUX1BSRURfRk9STUFUMihUZXN0V2ViS2l0QVBJOjpVdGlsOjphc3NlcnROU09iamVjdHNB
cmVFcXVhbCwgZXhwZWN0ZWQsIGFjdHVhbCk7Cit9CisKICNpZiBVU0UoQ0cpCiAKIHN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBDR1JlY3QmKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL2luc2VydC10ZXh0Lmh0bWwgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ODNhM2ViMmRjNjBk
OTc3NWEwODI2M2IwNWI5NWNhYjFjNjNjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4dC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitsZXQgZmlyZWRFdmVudHMgPSBbXTsK
KworZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpCit7CisgICAgZmlyZWRFdmVudHMucHVzaChldmVu
dC50eXBlKTsKK30KKworZnVuY3Rpb24gc2V0dXBUZXN0KCkKK3sKKyAgICBkb2N1bWVudC5ib2R5
LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3Vt
ZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLCBsb2dFdmVudCwgZmFsc2Up
OworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBsb2dFdmVudCwg
ZmFsc2UpOworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCBsb2dF
dmVudCwgZmFsc2UpOworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdl
IiwgbG9nRXZlbnQsIGZhbHNlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJzZXR1cFRlc3QoKSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394185</attachid>
            <date>2020-03-21 17:17:30 -0700</date>
            <delta_ts>2020-03-21 23:01:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209380-20200321171729.patch</filename>
            <type>text/plain</type>
            <size>21430</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiMDJhYWU5YWMyZDc1Y2Qw
NGViNjE2ZjlmNmNlZjllNzRmMTU3ODYuLjQ1YzFiZDhkY2E0ZTdlYjNmZDBkNDkwN2ViZTU3YWI5
ODkxYjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMjEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0aW5nIHRl
eHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9hcmQgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSB3b3JrYXJvdW5kIGZvciBzaXRlcyB0aGUg
aW1wbGVtZW50IHRoZWlyIG93biBlZGl0aW5nIHN5c3RlbSAoZS5nLiBmYWNlYm9vay5jb20pCisg
ICAgICAgIGFkZCBhIG5ldyBpbnNlcnRpb24gb3B0aW9uIHRoYXQgbWFrZXMgdGhlIGluc2VydGlv
biBoYXZpbmcgYSBwYXNzaW5nIHJlc2VtYmxhbmNlCisgICAgICAgIG9mIGEgcGVyc29uIHR5cGlu
Zy4gVGhlIHJlc2VtYmxhbmNlIGlzIGFjaGlldmVkIGJ5IGRpc3BhdGNoaW5nIERPTSBldmVudHMg
d2l0aCB0eXBlCisgICAgICAgICJrZXlkb3duIiwgImtleXVwIiwgYW5kICJjaGFuZ2UiLgorCisg
ICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVj
b2RlKToKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgdGhlIG5ldyBvcHRpb24uCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaDogRGVmYXVsdCB0aGUgbmV3IG9w
dGlvbiwgc2ltdWxhdGVLZXlib2FyZElucHV0LCB0byBmYWxzZQorICAgICAgICB0byBrZWVwIG91
ciBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRTaW11bGF0
ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25dKTogQWRkZWQuIFJldHVybnMgTk8gd2hlbgor
ICAgICAgICBidWlsZGluZyB3aXRob3V0IFVTRShURVhUX0lOVEVSQUNUSU9OX0FERElUSU9OUykg
dG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGluc2VydFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDphbHRl
cm5hdGl2ZXM6c3R5bGU6XSk6CisgICAgICAgIFNldCB0aGUgc2ltdWxhdGVLZXlib2FyZElucHV0
IG9wdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisgICAgICAgIElmIHNpbXVsYXRlS2V5
Ym9hcmRJbnB1dCBpcyBmYWxzZSB0aGVuIGRvIHdoYXQgd2UgZG8gbm93LiBPdGhlcndpc2UsIGRp
c3BhdGNoIGEgRE9NIGV2ZW50CisgICAgICAgIG9mIHR5cGUgImtleWRvd24iIGFuZCBwZXJmb3Jt
IHRoZSBpbnNlcnRpb24uIFRoZW4gZGlzcGF0Y2ggRE9NIGV2ZW50cyBvZiB0eXBlICJrZXl1cCIg
YW5kICJjaGFuZ2UiLiAKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlz
dCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNl
cnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0
T3B0aW9ucy5jcHAKaW5kZXggODE2NDQyNjEyYTIyNzlhOGMzM2JkNWNmM2E4ZTI0MDM3NDY3NTBi
ZS4uMmQ5NTJiYWFhM2QwMzUyNjY0ZThmMjllNDE5MjAxNjc4OGYxM2VkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMzMsNiAr
MzMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZQogICAgIGVuY29kZXIgPDwgb3B0aW9ucy5y
ZWdpc3RlclVuZG9Hcm91cDsKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rp
b25VcGRhdGU7CiAgICAgZW5jb2RlciA8PCBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZTsK
KyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0OwogICAgIGVuY29k
ZXIgPDwgb3B0aW9ucy5lZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG87CiB9CiAKQEAgLTQ1LDYgKzQ2
LDggQEAgT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gb3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCmlu
ZGV4IGNkMjAxYWIyYmFkM2QyOTNkZjhiM2VhMDM4N2UzNDFhZDRiNzBiNTEuLjk4YzkyYjQ0OTlk
MDVhNTZhYTA4OTVjNjFmNmM3OWRhNjAxODRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgSW5z
ZXJ0VGV4dE9wdGlvbnMgewogICAgIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlIHsgZmFsc2UgfTsKKyAgICBib29sIHNpbXVsYXRlS2V5Ym9hcmRJ
bnB1dCB7IGZhbHNlIH07CiAgICAgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyB7IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290IH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmNjZiZWUyODFhNmZhMTFlNjhlNWE1ZmY4NTU2NWZh
OTMzYzQzMTg4Li5jNTI3ODQ1MTkyMzg1YmFiODE3NzAxZWVhMjQwMjIzNDM3OWI4ZDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTQ3MTAsNiArNDcxMCwxNSBAQCAtICh2b2lkKWRlbGV0ZUJhY2t3YXJk
CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiZGVsZXRlQmFja3dhcmQiX3MpOwogfQog
CistIChCT09MKV9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24KK3sK
KyNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCisgICAgW3NlbGYgX3Nob3VsZFNp
bXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbkludGVybmFsXTsKKyNlbHNlCisgICAg
cmV0dXJuIE5POworI2VuZGlmCit9CisKIC8vIEluc2VydHMgdGhlIGdpdmVuIHN0cmluZywgcmVw
bGFjaW5nIGFueSBzZWxlY3RlZCBvciBtYXJrZWQgdGV4dC4KIC0gKHZvaWQpaW5zZXJ0VGV4dDoo
TlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIHsKQEAgLTQ3MTcsNyArNDcyNiw3IEBAIC0gKHZvaWQp
aW5zZXJ0VGV4dDooTlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIAogICAgIFdlYktpdDo6SW5zZXJ0
VGV4dE9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSA9
IFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlzQ2FsbGluZ0lucHV0RGVs
ZWdhdGUpXSAmJiBrZXlib2FyZC5pc0NhbGxpbmdJbnB1dERlbGVnYXRlOwotCisgICAgb3B0aW9u
cy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElu
cHV0T25UZXh0SW5zZXJ0aW9uXTsKICAgICBfcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdW
YWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKQEAg
LTQ3MzEsNyArNDc0MCwxMCBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICopYVN0cmlu
Z1ZhbHVlIGFsdGVybmF0aXZlczooTlNBcnJheTxOU1N0cmluZyAqPiAqKQogICAgICAgICBCT09M
IGlzTG93Q29uZmlkZW5jZSA9IHN0eWxlID09IFVJVGV4dEFsdGVybmF0aXZlU3R5bGVMb3dDb25m
aWRlbmNlOwogICAgICAgICBhdXRvIHRleHRBbHRlcm5hdGl2ZXMgPSBhZG9wdE5TKFtbTlNUZXh0
QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6YVN0cmluZ1ZhbHVlIGFs
dGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMgaXNMb3dDb25maWRlbmNlOmlzTG93Q29uZmlk
ZW5jZV0pOwogICAgICAgICBXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgdGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlIHsgdGV4dEFsdGVybmF0aXZlcy5nZXQoKSwgTlNNYWtlUmFuZ2Uo
MCwgYVN0cmluZ1ZhbHVlLmxlbmd0aCkgfTsKLSAgICAgICAgX3BhZ2UtPmluc2VydERpY3RhdGVk
VGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB9
LCB7IH0pOworCisgICAgICAgIFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKKyAg
ICAgICAgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uXTsKKyAgICAgICAgX3BhZ2UtPmluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZSB9LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBi
YzBhYzY4YzcyMGU5NjExNDUzMzIyMWM5NWU4YmFmYjVlZGEyZWMzLi5jNjk4NGEzYmQzNzNjNjky
YzAzNmI2NmYzZThmZjhlYzczMTg4MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVu
dE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgpA
QCAtMjAwLDggKzIwMSwxNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZQogICAgIGlmIChvcHRp
b25zLnJlZ2lzdGVyVW5kb0dyb3VwKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nIHsgfSk7CiAKKyAgICBSZWZQdHI8RWxl
bWVudD4gZm9jdXNlZEVsZW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQo
KS0+Zm9jdXNlZEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYm
IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KQorICAgICAgICBmb2N1c2VkRWxlbWVudC0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisKICAgICBB
U1NFUlQoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwogICAgIGZyYW1lLmVkaXRv
cigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cywgbnVsbHB0ciAvKiB0cmlnZ2VyaW5nRXZlbnQgKi8pOworCisgICAgaWYgKGZvY3VzZWRFbGVt
ZW50ICYmIG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSB7CisgICAgICAgIGZvY3VzZWRF
bGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXVwRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Cisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcykpOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTFiOTI2NDIyMWE0
OWE4NjM4NWRjODhjZDU4NDMyNDhiYzU2MWVhOS4uMTA0ODc4OGEzMTQzYzYzM2E1OWZlYzYzYWEy
OGM5ZmRmZmQ1OTEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTUyOTMsMTMgKzUyOTMsMjIgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4K
ICAgICAKICAgICBpZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsK
LSAgICAKKworICAgIFJlZlB0cjxFbGVtZW50PiBmb2N1c2VkRWxlbWVudCA9IGZyYW1lLmRvY3Vt
ZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpIDogbnVsbHB0cjsKKyAg
ICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQpCisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMpKTsKKwogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVy
IHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAg
Ly8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93
biB0aGUgcGFnZS4KICAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxs
cHRyLCByZXBsYWNlc1RleHQgPyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2
ZW50SW5wdXRLZXlib2FyZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNv
bmZpcm1Db21wb3NpdGlvbih0ZXh0KTsKKworICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBvcHRp
b25zLnNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkgeworICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBmb2N1
c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMp
KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4NTM2ZmUyZTI4Mjc3ZTUyYjExYjRh
OTFiYWVhYTcxNzhjODhiOGQuLjFkYmVhOTNlZjMxOWQ4MWI2ODEzNzIwMjMyMjMwMWJiOGE1NTkx
M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNCBAQAorMjAyMC0wMy0yMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnRpbmcgdGV4dCBvciBkaWN0YXRpb24gYWx0ZXJu
YXRpdmUgYnkgc2ltdWxhdGluZyBrZXlib2FyZCBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81OTQ0NTEwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMgdG8gZW5zdXJlIHRoYXQgRE9NIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBv
biBpbnNlcnRpb24gd2hlbiBzaW11bGF0ZUtleWJvYXJkSW5wdXQKKyAgICAgICAgaXMgZW5hYmxl
ZC4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBjb252ZW5pZW5jZSBhc3NlcnRpb24gZnVuY3Rp
b24sIEVYUEVDVF9OU19FUVVBTCwgdGhhdCBjYW4KKyAgICAgICAgY29tcGFyZSBOU09iamVjdHMg
c28gbG9uZyBhcyB0aGV5IGltcGxlbWVudCAtaXNFcXVhbCBhbmQgLWRlc2NyaXB0aW9uLiBJCisg
ICAgICAgIG1ha2UgdXNlIG9mIHRoaXMgdG8gY29tcGFyZSB0aGUgYWN0dWFsIGFycmF5IG9mIGZp
cmVkIERPTSBldmVudHMgdHlwZXMgdG8KKyAgICAgICAgYW4gZXhwZWN0ZWQgYXJyYXkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzaG91bGRTaW11bGF0ZUtleWJvYXJk
SW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlkZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6YXNzZXJ0TlNPYmplY3RzQXJlRXF1YWwpOiBBZGRlZC4K
KyAgICAgICAgKEVYUEVDVF9OU19FUVVBTCk6IEFkZGVkLiBUaGlzIGlzIGEgdGVtcGxhdGUgaW5z
dGVhZCBvZiBhIG1hY3JvIHRvIGF2b2lkIGEgY29tcGlsZS0KKyAgICAgICAgdGltZSBmYWlsdXJl
IHdoZW4gaXQncyBjYWxsZWQgd2l0aCBPYmplY3RpdmUtQyBsaXRlcmFsIGV4cHJlc3Npb25zIHRo
YXQgY29udGFpbiBhICcsJy4KKyAgICAgICAgRm9yIGV4YW1wbGUsIEBbIEAxLCBAMiBdLiBUaGlz
IGZhaWx1cmUgaXMgYmVjYXVzZSB0aGUgcHJlcHJvY2Vzc29yIHdvcmtzIGF0IHRoZSB0b2tlbgor
ICAgICAgICBsZXZlbCBhbmQgaXMgbm90IGtub3dsZWRnYWJsZSBhYm91dCBzdWNoIHN5bnRheC4g
SXQganVzdCBzcGxpdHMgdG9rZW5zIGJhc2VkIG9uIHRoZQorICAgICAgICBmaXJzdCBjb21tYS4g
QWx0aG91Z2ggY2FuIHdvcmthcm91bmQgdGhpcyBmYWlsdXJlIGJ5IHN1cnJvdW5kaW5nIHRoZSBl
eHByZXNzaW9uIHdpdGgKKyAgICAgICAgcGFyZW50aGVzZXMsIEkgZmVsdCB0aGlzIHdhcyB0b28g
c3VidGxlIGFuZCBjaG9zZSB0byBhdm9pZCB0aGlzIGlzc3VlIGFsdG9nZXRoZXIKKyAgICAgICAg
YnkgdXNpbmcgYSB0ZW1wbGF0ZSBmdW5jdGlvbi4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lv
cy9pbnNlcnQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0wMiAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2xsZGItd2Via2l0XSBBZGQgc3VwcG9ydCBm
b3IgcHJldHR5LXByaW50aW5nIGNvbXBsZXggYml0bWFza3MgCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDRiYTcxYjFiN2JmNmFlYWY5ZGVhMjUzMjExM2VmMjg0ZDg2NjlmZDQuLjM3N2UxMDYx
YjQ4YmM4ZWRjMGU3ZjZlZDgwNjgwNzM3NDdkYjdiZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC05ODQsNiArOTg0LDcgQEAKIAkJQ0UzNTI0RkExQjE0NDM4OTAwMjhBN0M1IC8qIGlucHV0
LWZvY3VzLWJsdXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTM1MjRGNTFCMTQyQkJCMDAyOEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1
ci5odG1sICovOyB9OwogCQlDRTQ0OUUxMTIxQUUwRjcyMDBFN0FEQTEgLyogV0tXZWJWaWV3Rmlu
ZFN0cmluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFNDQ5RTEwMjFBRTBGNzIwMEU3QURBMSAvKiBXS1dlYlZpZXdGaW5kU3RyaW5nLm1tICovOyB9
OwogCQlDRTRENURFNzFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRENURFNTFG
Njc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAgKi87IH07CisJCUNFNkQw
RUUzMjQyNkI5MzIwMDJBRDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkQwRUUyMjQyNkI4RUQwMDJB
RDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sICovOyB9OwogCQlDRTZFODFBMDIwQTY5MzVGMDBFMkM4
MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxOUYyMEE2OTM1RjAwRTJDODBGIC8qIFNldFRpbWVvdXRG
dW5jdGlvbi5tbSAqLzsgfTsKIAkJQ0U2RTgxQTQyMEE5MzNENTAwRTJDODBGIC8qIHNldC10aW1l
b3V0LWZ1bmN0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U2RTgxQTMyMEE5MzNCODAwRTJDODBGIC8qIHNldC10aW1lb3V0LWZ1
bmN0aW9uLmh0bWwgKi87IH07CiAJCUNFNzg3MDVGMjEwN0FCOTgwMDUzQUM2NyAvKiBNb3ZlT25s
eUxpZmVjeWNsZUxvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTc4NzA1RDIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVM
b2dnZXIuY3BwICovOyB9OwpAQCAtMTM3NCw2ICsxMzc1LDcgQEAKIAkJCQk1MTEwRkNGNjFFMDFD
RDgzMDA2RjhEMEIgLyogSW5kZXhVcGdyYWRlLnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJMkVGRjA2Q0QxRDhBNDI5QTAwMDRCQjMwIC8qIGlucHV0LWZpZWxkLWluLXNjcm9sbGFi
bGUtZG9jdW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRTM1MjRGQTFCMTQ0
Mzg5MDAyOEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAorCQkJCUNFNkQwRUUzMjQyNkI5MzIwMDJBRDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTU3RjU2QTVDMUM3RjhDQzEwMEYzMUQ3RSAvKiBJc05hdmln
YXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzlCNEFE
MkMxRUNBNkY3RjAwRjVGRUEwIC8qIGpzLWF1dG9wbGF5LWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJQzk5QjY3NUQxRTM5NzIyMDAwRkM2QzgwIC8qIGpzLXBsYXktd2l0aC1j
b250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjU3OCw2ICsyNTgwLDcgQEAK
IAkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRTY0MENBNTIzNzBBNEYzMDBDNUNBQTQgLyogVGVzdENvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFRlc3RDb2NvYS5oOyBwYXRoID0gY29jb2EvVGVzdENvY29hLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNjQwQ0E2MjM3MEE0RjMwMEM1Q0FBNCAvKiBUZXN0
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0Q29jb2EubW07IHBhdGggPSBjb2Nv
YS9UZXN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNkQwRUUyMjQy
NkI4RUQwMDJBRDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBu
YW1lID0gImluc2VydC10ZXh0Lmh0bWwiOyBwYXRoID0gImlvcy9pbnNlcnQtdGV4dC5odG1sIjsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRTZFODE5RjIwQTY5MzVGMDBFMkM4MEYg
LyogU2V0VGltZW91dEZ1bmN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2V0VGltZW91
dEZ1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTZFODFBMzIwQTkz
M0I4MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgbmFtZSA9ICJzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgcGF0aCA9ICJpb3Mvc2V0
LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
Q0U3ODcwNUMyMTA3QUI4QzAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjcxLDYgKzM2NzQsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjE2QkVENzIzMDRBMUQxMDBCNEEx
NjcgLyogY29tcG9zaXRlZC5odG1sICovLAorCQkJCUNFNkQwRUUyMjQyNkI4RUQwMDJBRDkwMSAv
KiBpbnNlcnQtdGV4dC5odG1sICovLAogCQkJCTBGMzQwNzc3MjMwMzgyNTQwMDYwQTFBMCAvKiBv
dmVyZmxvdy1zY3JvbGwuaHRtbCAqLywKIAkJCQlBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyog
cGFnZXMucGFnZXMgKi8sCiAJCQkJQ0U2RTgxQTMyMEE5MzNCODAwRTJDODBGIC8qIHNldC10aW1l
b3V0LWZ1bmN0aW9uLmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0KaW5kZXggNzQ5OGIyOGU0NDRlOTlkOTMw
OTQyOTBhMGQxYTBjNDdhYWYzMjlhMi4uYmFjYjhlODk0NzQwZjhiNTE0OThkNTA0MzdiNjQ3NzFk
YWY5NWI5MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9h
cmRJbnB1dFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tl
eWJvYXJkSW5wdXRUZXN0c0lPUy5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiSVBhZFVz
ZXJJbnRlcmZhY2VTd2l6emxlci5oIgogI2ltcG9ydCAiSW5zdGFuY2VNZXRob2RTd2l6emxlci5o
IgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RDb2NvYS5oIgog
I2ltcG9ydCAiVGVzdElucHV0RGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
ICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC0zNyw2ICszOCwxMCBAQAogI2ltcG9ydCA8V2ViS2l0
TGVnYWN5L1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxjbWF0aD4KIAorQGludGVyZmFjZSBXS0NvbnRl
bnRWaWV3ICgpCistIChCT09MKV9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNl
cnRpb247CitAZW5kCisKIEBpbnRlcmZhY2UgSW5wdXRBc3Npc3RhbnRJdGVtVGVzdGluZ1dlYlZp
ZXcgOiBUZXN0V0tXZWJWaWV3CiArIChVSUJhckJ1dHRvbkl0ZW1Hcm91cCAqKWxlYWRpbmdJdGVt
c0ZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiArIChVSUJhckJ1dHRvbkl0ZW1Hcm91
cCAqKXRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwpAQCAtNjQ3
LDYgKzY1Miw0NyBAQCBURVNUKEtleWJvYXJkSW5wdXRUZXN0cywgU3VwcHJlc3NTb2Z0d2FyZUtl
eWJvYXJkKQogICAgIEVYUEVDVF9UUlVFKFVJS2V5Ym9hcmRJbXBsLnNoYXJlZEluc3RhbmNlLl9z
aG91bGRTdXBwcmVzc1NvZnR3YXJlS2V5Ym9hcmQpOwogfQogCitzdGF0aWMgQk9PTCBzaG91bGRT
aW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlkZShpZCwgU0VMKQorewor
ICAgIHJldHVybiBZRVM7Cit9CisKK1RFU1QoS2V5Ym9hcmRJbnB1dFRlc3RzLCBJbnNlcnRUZXh0
U2ltdWxhdGluZ0tleWJvYXJkSW5wdXQpCit7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBv
dmVycmlkZVNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbiB7IE5TQ2xh
c3NGcm9tU3RyaW5nKEAiV0tDb250ZW50VmlldyIpLCBAc2VsZWN0b3IoX3Nob3VsZFNpbXVsYXRl
S2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaG91
bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlkZSkgfTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0
RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOlsmXShXS1dl
YlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3Rh
cnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERl
bGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImluc2VydC10ZXh0
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9k
eS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRU
ZXh0OkAiaGVsbG8iXTsKKyAgICBFWFBFQ1RfTlNfRVFVQUwoQFtAImtleWRvd24iLCBAImJlZm9y
ZWlucHV0IiwgQCJpbnB1dCIsIEAia2V5dXAiLCBAImNoYW5nZSJdLCBbd2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlyZWRFdmVudHMiXSk7Cit9CisKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKKworVEVTVChLZXlib2FyZElucHV0VGVzdHMsIEluc2VydERp
Y3RhdGlvbkFsdGVybmF0aXZlc1NpbXVsYXRpbmdLZXlib2FyZElucHV0KQoreworICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgb3ZlcnJpZGVTaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRl
eHRJbnNlcnRpb24geyBOU0NsYXNzRnJvbVN0cmluZyhAIldLQ29udGVudFZpZXciKSwgQHNlbGVj
dG9yKF9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24pLCByZWludGVy
cHJldF9jYXN0PElNUD4oc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9u
T3ZlcnJpZGUpIH07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAg
IGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9s
aWN5SGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7
IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBb
d2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIFJl
dGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJpbnNlcnQtdGV4dCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwor
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0No
YW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRD
b250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFsgQCJoZWxvIiBd
IHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBFWFBFQ1RfTlNfRVFVQUwo
QFtAImtleWRvd24iLCBAImJlZm9yZWlucHV0IiwgQCJpbnB1dCIsIEAia2V5dXAiLCBAImNoYW5n
ZSJdLCBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlyZWRFdmVudHMi
XSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0Q29jb2EuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdENvY29h
LmgKaW5kZXggNmU0NTM5NTlkZGE2YjFiODFlZGIyMTE3NjNkYmI2MmU5ZWE4YzJmMS4uMjI3Nzgy
YTQ4ZjhmYWY3OGU0OTRmMzJjNGVkMGZjM2U5NTRmOWZkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDMyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CitzdGF0aWMgaW5saW5lIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IGFzc2Vy
dE5TT2JqZWN0c0FyZUVxdWFsKGNvbnN0IGNoYXIqIGV4cGVjdGVkRXhwcmVzc2lvbiwgY29uc3Qg
Y2hhciogYWN0dWFsRXhwcmVzc2lvbiwgVCAqZXhwZWN0ZWQsIFUgKmFjdHVhbCkKK3sKKyAgICBp
ZiAoKCFleHBlY3RlZCAmJiAhYWN0dWFsKSB8fCBbZXhwZWN0ZWQgaXNFcXVhbDphY3R1YWxdKQor
ICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOworICAgIHJldHVybiB0
ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWlsdXJlKGV4cGVjdGVkRXhwcmVzc2lvbiwgYWN0dWFsRXhw
cmVzc2lvbiwgdG9TVEQoW2V4cGVjdGVkIGRlc2NyaXB0aW9uXSksIHRvU1REKFthY3R1YWwgZGVz
Y3JpcHRpb25dKSwgZmFsc2UgLyogaWdub3JpbmdfY2FzZSAqLyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworLy8gVGhpcyBpcyBhIHRl
bXBsYXRlIGluc3RlYWQgb2YgYSBtYWNybyB0byBzdXBwb3J0IHBhc3NpbmcgYXJndW1lbnRzIHdy
aXR0ZW4gaW4gT2JqZWN0aXZlLUMKKy8vIGxpdGVyYWwgc3ludGF4LCB3aGljaCBtYXkgY29uZnVz
ZSB0aGUgcHJlcHJvY2Vzc29yIChlLmcuIEBbIEAiZmlyc3QiLCBAInNlY29uZCIgXSkuIEl0IGlz
CisvLyBhbHNvIGludGVudGlvbmFsbHkgbmFtZWQgdG8gbWF0Y2ggb3RoZXIgR29vZ2xlIHRlc3Qg
YXNzZXJ0aW9ucy4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitzdGF0aWMgaW5s
aW5lIHZvaWQgRVhQRUNUX05TX0VRVUFMKFQgZXhwZWN0ZWQsIFUgYWN0dWFsKQoreworICAgIEVY
UEVDVF9QUkVEX0ZPUk1BVDIoVGVzdFdlYktpdEFQSTo6VXRpbDo6YXNzZXJ0TlNPYmplY3RzQXJl
RXF1YWwsIGV4cGVjdGVkLCBhY3R1YWwpOworfQorCiAjaWYgVVNFKENHKQogCiBzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgQ0dSZWN0Jik7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4dC5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvaW5zZXJ0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODgzYTNlYjJkYzYwZDk3
NzVhMDgyNjNiMDViOTVjYWIxYzYzYzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvaW5zZXJ0LXRleHQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorbGV0IGZpcmVkRXZlbnRzID0gW107CisK
K2Z1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQoreworICAgIGZpcmVkRXZlbnRzLnB1c2goZXZlbnQu
dHlwZSk7Cit9CisKK2Z1bmN0aW9uIHNldHVwVGVzdCgpCit7CisgICAgZG9jdW1lbnQuYm9keS5h
ZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IiwgbG9nRXZlbnQsIGZhbHNlKTsK
KyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgbG9nRXZlbnQsIGZh
bHNlKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgbG9nRXZl
bnQsIGZhbHNlKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIs
IGxvZ0V2ZW50LCBmYWxzZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
c2V0dXBUZXN0KCkiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394195</attachid>
            <date>2020-03-21 23:01:23 -0700</date>
            <delta_ts>2020-03-21 23:02:51 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-209380-20200321230122.patch</filename>
            <type>text/plain</type>
            <size>20559</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiMDJhYWU5YWMyZDc1Y2Qw
NGViNjE2ZjlmNmNlZjllNzRmMTU3ODYuLjQ1YzFiZDhkY2E0ZTdlYjNmZDBkNDkwN2ViZTU3YWI5
ODkxYjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMjEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0aW5nIHRl
eHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9hcmQgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSB3b3JrYXJvdW5kIGZvciBzaXRlcyB0aGUg
aW1wbGVtZW50IHRoZWlyIG93biBlZGl0aW5nIHN5c3RlbSAoZS5nLiBmYWNlYm9vay5jb20pCisg
ICAgICAgIGFkZCBhIG5ldyBpbnNlcnRpb24gb3B0aW9uIHRoYXQgbWFrZXMgdGhlIGluc2VydGlv
biBoYXZpbmcgYSBwYXNzaW5nIHJlc2VtYmxhbmNlCisgICAgICAgIG9mIGEgcGVyc29uIHR5cGlu
Zy4gVGhlIHJlc2VtYmxhbmNlIGlzIGFjaGlldmVkIGJ5IGRpc3BhdGNoaW5nIERPTSBldmVudHMg
d2l0aCB0eXBlCisgICAgICAgICJrZXlkb3duIiwgImtleXVwIiwgYW5kICJjaGFuZ2UiLgorCisg
ICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVj
b2RlKToKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgdGhlIG5ldyBvcHRpb24uCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaDogRGVmYXVsdCB0aGUgbmV3IG9w
dGlvbiwgc2ltdWxhdGVLZXlib2FyZElucHV0LCB0byBmYWxzZQorICAgICAgICB0byBrZWVwIG91
ciBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRTaW11bGF0
ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25dKTogQWRkZWQuIFJldHVybnMgTk8gd2hlbgor
ICAgICAgICBidWlsZGluZyB3aXRob3V0IFVTRShURVhUX0lOVEVSQUNUSU9OX0FERElUSU9OUykg
dG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGluc2VydFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDphbHRl
cm5hdGl2ZXM6c3R5bGU6XSk6CisgICAgICAgIFNldCB0aGUgc2ltdWxhdGVLZXlib2FyZElucHV0
IG9wdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisgICAgICAgIElmIHNpbXVsYXRlS2V5
Ym9hcmRJbnB1dCBpcyBmYWxzZSB0aGVuIGRvIHdoYXQgd2UgZG8gbm93LiBPdGhlcndpc2UsIGRp
c3BhdGNoIGEgRE9NIGV2ZW50CisgICAgICAgIG9mIHR5cGUgImtleWRvd24iIGFuZCBwZXJmb3Jt
IHRoZSBpbnNlcnRpb24uIFRoZW4gZGlzcGF0Y2ggRE9NIGV2ZW50cyBvZiB0eXBlICJrZXl1cCIg
YW5kICJjaGFuZ2UiLiAKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlz
dCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNl
cnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0
T3B0aW9ucy5jcHAKaW5kZXggODE2NDQyNjEyYTIyNzlhOGMzM2JkNWNmM2E4ZTI0MDM3NDY3NTBi
ZS4uMmQ5NTJiYWFhM2QwMzUyNjY0ZThmMjllNDE5MjAxNjc4OGYxM2VkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMzMsNiAr
MzMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZQogICAgIGVuY29kZXIgPDwgb3B0aW9ucy5y
ZWdpc3RlclVuZG9Hcm91cDsKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rp
b25VcGRhdGU7CiAgICAgZW5jb2RlciA8PCBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZTsK
KyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0OwogICAgIGVuY29k
ZXIgPDwgb3B0aW9ucy5lZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG87CiB9CiAKQEAgLTQ1LDYgKzQ2
LDggQEAgT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gb3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCmlu
ZGV4IGNkMjAxYWIyYmFkM2QyOTNkZjhiM2VhMDM4N2UzNDFhZDRiNzBiNTEuLjk4YzkyYjQ0OTlk
MDVhNTZhYTA4OTVjNjFmNmM3OWRhNjAxODRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgSW5z
ZXJ0VGV4dE9wdGlvbnMgewogICAgIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlIHsgZmFsc2UgfTsKKyAgICBib29sIHNpbXVsYXRlS2V5Ym9hcmRJ
bnB1dCB7IGZhbHNlIH07CiAgICAgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyB7IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290IH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmNjZiZWUyODFhNmZhMTFlNjhlNWE1ZmY4NTU2NWZh
OTMzYzQzMTg4Li5jNTI3ODQ1MTkyMzg1YmFiODE3NzAxZWVhMjQwMjIzNDM3OWI4ZDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTQ3MTAsNiArNDcxMCwxNSBAQCAtICh2b2lkKWRlbGV0ZUJhY2t3YXJk
CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiZGVsZXRlQmFja3dhcmQiX3MpOwogfQog
CistIChCT09MKV9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24KK3sK
KyNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCisgICAgW3NlbGYgX3Nob3VsZFNp
bXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbkludGVybmFsXTsKKyNlbHNlCisgICAg
cmV0dXJuIE5POworI2VuZGlmCit9CisKIC8vIEluc2VydHMgdGhlIGdpdmVuIHN0cmluZywgcmVw
bGFjaW5nIGFueSBzZWxlY3RlZCBvciBtYXJrZWQgdGV4dC4KIC0gKHZvaWQpaW5zZXJ0VGV4dDoo
TlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIHsKQEAgLTQ3MTcsNyArNDcyNiw3IEBAIC0gKHZvaWQp
aW5zZXJ0VGV4dDooTlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIAogICAgIFdlYktpdDo6SW5zZXJ0
VGV4dE9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSA9
IFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlzQ2FsbGluZ0lucHV0RGVs
ZWdhdGUpXSAmJiBrZXlib2FyZC5pc0NhbGxpbmdJbnB1dERlbGVnYXRlOwotCisgICAgb3B0aW9u
cy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElu
cHV0T25UZXh0SW5zZXJ0aW9uXTsKICAgICBfcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdW
YWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKQEAg
LTQ3MzEsNyArNDc0MCwxMCBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICopYVN0cmlu
Z1ZhbHVlIGFsdGVybmF0aXZlczooTlNBcnJheTxOU1N0cmluZyAqPiAqKQogICAgICAgICBCT09M
IGlzTG93Q29uZmlkZW5jZSA9IHN0eWxlID09IFVJVGV4dEFsdGVybmF0aXZlU3R5bGVMb3dDb25m
aWRlbmNlOwogICAgICAgICBhdXRvIHRleHRBbHRlcm5hdGl2ZXMgPSBhZG9wdE5TKFtbTlNUZXh0
QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6YVN0cmluZ1ZhbHVlIGFs
dGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMgaXNMb3dDb25maWRlbmNlOmlzTG93Q29uZmlk
ZW5jZV0pOwogICAgICAgICBXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgdGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlIHsgdGV4dEFsdGVybmF0aXZlcy5nZXQoKSwgTlNNYWtlUmFuZ2Uo
MCwgYVN0cmluZ1ZhbHVlLmxlbmd0aCkgfTsKLSAgICAgICAgX3BhZ2UtPmluc2VydERpY3RhdGVk
VGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB9
LCB7IH0pOworCisgICAgICAgIFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKKyAg
ICAgICAgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uXTsKKyAgICAgICAgX3BhZ2UtPmluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZSB9LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBi
YzBhYzY4YzcyMGU5NjExNDUzMzIyMWM5NWU4YmFmYjVlZGEyZWMzLi5jNjk4NGEzYmQzNzNjNjky
YzAzNmI2NmYzZThmZjhlYzczMTg4MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVu
dE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgpA
QCAtMjAwLDggKzIwMSwxNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZQogICAgIGlmIChvcHRp
b25zLnJlZ2lzdGVyVW5kb0dyb3VwKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nIHsgfSk7CiAKKyAgICBSZWZQdHI8RWxl
bWVudD4gZm9jdXNlZEVsZW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQo
KS0+Zm9jdXNlZEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYm
IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KQorICAgICAgICBmb2N1c2VkRWxlbWVudC0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisKICAgICBB
U1NFUlQoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwogICAgIGZyYW1lLmVkaXRv
cigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cywgbnVsbHB0ciAvKiB0cmlnZ2VyaW5nRXZlbnQgKi8pOworCisgICAgaWYgKGZvY3VzZWRFbGVt
ZW50ICYmIG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSB7CisgICAgICAgIGZvY3VzZWRF
bGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXVwRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Cisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcykpOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTFiOTI2NDIyMWE0
OWE4NjM4NWRjODhjZDU4NDMyNDhiYzU2MWVhOS4uMTA0ODc4OGEzMTQzYzYzM2E1OWZlYzYzYWEy
OGM5ZmRmZmQ1OTEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTUyOTMsMTMgKzUyOTMsMjIgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4K
ICAgICAKICAgICBpZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsK
LSAgICAKKworICAgIFJlZlB0cjxFbGVtZW50PiBmb2N1c2VkRWxlbWVudCA9IGZyYW1lLmRvY3Vt
ZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpIDogbnVsbHB0cjsKKyAg
ICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQpCisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMpKTsKKwogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVy
IHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAg
Ly8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93
biB0aGUgcGFnZS4KICAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxs
cHRyLCByZXBsYWNlc1RleHQgPyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2
ZW50SW5wdXRLZXlib2FyZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNv
bmZpcm1Db21wb3NpdGlvbih0ZXh0KTsKKworICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBvcHRp
b25zLnNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkgeworICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBmb2N1
c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMp
KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4NTM2ZmUyZTI4Mjc3ZTUyYjExYjRh
OTFiYWVhYTcxNzhjODhiOGQuLjQyOGQwZWRjNmYxYTJmNTlkMGQ5MzJhNGYzZWQzMzBjNTM2ZTAw
ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAyMC0wMy0yMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnRpbmcgdGV4dCBvciBkaWN0YXRpb24gYWx0ZXJu
YXRpdmUgYnkgc2ltdWxhdGluZyBrZXlib2FyZCBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81OTQ0NTEwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMgdG8gZW5zdXJlIHRoYXQgRE9NIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBv
biBpbnNlcnRpb24gd2hlbiBzaW11bGF0ZUtleWJvYXJkSW5wdXQKKyAgICAgICAgaXMgZW5hYmxl
ZC4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBjb252ZW5pZW5jZSBhc3NlcnRpb24gZnVuY3Rp
b24sIEVYUEVDVF9OU19FUVVBTCwgdGhhdCBjYW4KKyAgICAgICAgY29tcGFyZSBOU09iamVjdHMg
c28gbG9uZyBhcyB0aGV5IGltcGxlbWVudCAtaXNFcXVhbCBhbmQgLWRlc2NyaXB0aW9uLiBJCisg
ICAgICAgIG1ha2UgdXNlIG9mIHRoaXMgdG8gY29tcGFyZSB0aGUgYWN0dWFsIGFycmF5IG9mIGZp
cmVkIERPTSBldmVudHMgdHlwZXMgdG8KKyAgICAgICAgYW4gZXhwZWN0ZWQgYXJyYXkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzaG91bGRTaW11bGF0ZUtleWJvYXJk
SW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlkZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6YXNzZXJ0TlNPYmplY3RzQXJlRXF1YWwpOiBBZGRlZC4K
KyAgICAgICAgKEVYUEVDVF9OU19FUVVBTCk6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvaW9zL2luc2VydC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTAyICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbbGxkYi13ZWJraXRdIEFkZCBzdXBw
b3J0IGZvciBwcmV0dHktcHJpbnRpbmcgY29tcGxleCBiaXRtYXNrcyAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGJhNzFiMWI3YmY2YWVhZjlkZWEyNTMyMTEzZWYyODRkODY2OWZkNC4uMzc3
ZTEwNjFiNDhiYzhlZGMwZTdmNmVkODA2ODA3Mzc0N2RiN2JkYSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk4NCw2ICs5ODQsNyBAQAogCQlDRTM1MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyog
aW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJCQkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1
cy1ibHVyLmh0bWwgKi87IH07CiAJCUNFNDQ5RTExMjFBRTBGNzIwMEU3QURBMSAvKiBXS1dlYlZp
ZXdGaW5kU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U0NDlFMTAyMUFFMEY3MjAwRTdBREExIC8qIFdLV2ViVmlld0ZpbmRTdHJpbmcubW0g
Ki87IH07CiAJCUNFNEQ1REU3MUY2NzQzQkEwMDcyQ0ZDNiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNEQ1
REU1MUY2NzQzQkEwMDcyQ0ZDNiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmNwcCAqLzsgfTsKKwkJ
Q0U2RDBFRTMyNDI2QjkzMjAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RDBFRTIyNDI2QjhF
RDAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi87IH07CiAJCUNFNkU4MUEwMjBBNjkzNUYw
MEUyQzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFODE5RjIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGlt
ZW91dEZ1bmN0aW9uLm1tICovOyB9OwogCQlDRTZFODFBNDIwQTkzM0Q1MDBFMkM4MEYgLyogc2V0
LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0LXRpbWVv
dXQtZnVuY3Rpb24uaHRtbCAqLzsgfTsKIAkJQ0U3ODcwNUYyMTA3QUI5ODAwNTNBQzY3IC8qIE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFNzg3MDVEMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlci5jcHAgKi87IH07CkBAIC0xMzc0LDYgKzEzNzUsNyBAQAogCQkJCTUxMTBGQ0Y2
MUUwMUNEODMwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQkyRUZGMDZDRDFEOEE0MjlBMDAwNEJCMzAgLyogaW5wdXQtZmllbGQtaW4tc2Ny
b2xsYWJsZS1kb2N1bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNFMzUyNEZB
MUIxNDQzODkwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCisJCQkJQ0U2RDBFRTMyNDI2QjkzMjAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElz
TmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
OUI0QUQyQzFFQ0E2RjdGMDBGNUZFQTAgLyoganMtYXV0b3BsYXktYXVkaW8uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDOTlCNjc1RDFFMzk3MjIwMDBGQzZDODAgLyoganMtcGxheS13
aXRoLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNTc4LDYgKzI1ODAs
NyBAQAogCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvblNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFNjQwQ0E1MjM3MEE0RjMwMEM1Q0FBNCAvKiBUZXN0Q29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gVGVzdENvY29hLmg7IHBhdGggPSBjb2NvYS9UZXN0Q29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8q
IFRlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RDb2NvYS5tbTsgcGF0aCA9
IGNvY29hL1Rlc3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U2RDBF
RTIyNDI2QjhFRDAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IG5hbWUgPSAiaW5zZXJ0LXRleHQuaHRtbCI7IHBhdGggPSAiaW9zL2luc2VydC10ZXh0Lmh0
bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNFNkU4MTlGMjBBNjkzNUYwMEUy
QzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXRU
aW1lb3V0RnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkU4MUEz
MjBBOTMzQjgwMEUyQzgwRiAvKiBzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBuYW1lID0gInNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwiOyBwYXRoID0gImlv
cy9zZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlDRTc4NzA1QzIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2NzEsNiArMzY3NCw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMTZCRUQ3MjMwNEExRDEw
MEI0QTE2NyAvKiBjb21wb3NpdGVkLmh0bWwgKi8sCisJCQkJQ0U2RDBFRTIyNDI2QjhFRDAwMkFE
OTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi8sCiAJCQkJMEYzNDA3NzcyMzAzODI1NDAwNjBBMUEw
IC8qIG92ZXJmbG93LXNjcm9sbC5odG1sICovLAogCQkJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJE
MCAvKiBwYWdlcy5wYWdlcyAqLywKIAkJCQlDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0
LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQppbmRleCA3NDk4YjI4ZTQ0NGU5
OWQ5MzA5NDI5MGEwZDFhMGM0N2FhZjMyOWEyLi5lMmQ4NDNiOGMzZDBkYzZkYjZmZmNkYjRkZmJh
ZjIyMTM2YWM4YjI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9L
ZXlib2FyZElucHV0VGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJJ
UGFkVXNlckludGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1wb3J0ICJJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdENvY29h
LmgiCiAjaW1wb3J0ICJUZXN0SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTM3LDYgKzM4LDEwIEBACiAjaW1wb3J0IDxX
ZWJLaXRMZWdhY3kvV2ViRXZlbnQuaD4KICNpbXBvcnQgPGNtYXRoPgogCitAaW50ZXJmYWNlIFdL
Q29udGVudFZpZXcgKCkKKy0gKEJPT0wpX3Nob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4
dEluc2VydGlvbjsKK0BlbmQKKwogQGludGVyZmFjZSBJbnB1dEFzc2lzdGFudEl0ZW1UZXN0aW5n
V2ViVmlldyA6IFRlc3RXS1dlYlZpZXcKICsgKFVJQmFyQnV0dG9uSXRlbUdyb3VwICopbGVhZGlu
Z0l0ZW1zRm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKICsgKFVJQmFyQnV0dG9uSXRl
bUdyb3VwICopdHJhaWxpbmdJdGVtc0ZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CkBA
IC02NDcsNiArNjUyLDQ3IEBAIFRFU1QoS2V5Ym9hcmRJbnB1dFRlc3RzLCBTdXBwcmVzc1NvZnR3
YXJlS2V5Ym9hcmQpCiAgICAgRVhQRUNUX1RSVUUoVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFu
Y2UuX3Nob3VsZFN1cHByZXNzU29mdHdhcmVLZXlib2FyZCk7CiB9CiAKK3N0YXRpYyBCT09MIHNo
b3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbk92ZXJyaWRlKGlkLCBTRUwp
Cit7CisgICAgcmV0dXJuIFlFUzsKK30KKworVEVTVChLZXlib2FyZElucHV0VGVzdHMsIEluc2Vy
dFRleHRTaW11bGF0aW5nS2V5Ym9hcmRJbnB1dCkKK3sKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIG92ZXJyaWRlU2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uIHsg
TlNDbGFzc0Zyb21TdHJpbmcoQCJXS0NvbnRlbnRWaWV3IiksIEBzZWxlY3Rvcihfc2hvdWxkU2lt
dWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbk92ZXJyaWRlKSB9Owor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBhdXRvIGlucHV0RGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBb
aW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6WyZd
KFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9j
dXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElu
cHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaW5zZXJ0
LXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVu
dC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGlu
c2VydFRleHQ6QCJoZWxsbyJdOworICAgIEVYUEVDVF9OU19FUVVBTCgoQFtAImtleWRvd24iLCBA
ImJlZm9yZWlucHV0IiwgQCJpbnB1dCIsIEAia2V5dXAiLCBAImNoYW5nZSJdKSwgW3dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpcmVkRXZlbnRzIl0pOworfQorCisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKK1RFU1QoS2V5Ym9hcmRJbnB1dFRlc3RzLCBJ
bnNlcnREaWN0YXRpb25BbHRlcm5hdGl2ZXNTaW11bGF0aW5nS2V5Ym9hcmRJbnB1dCkKK3sKKyAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIG92ZXJyaWRlU2hvdWxkU2ltdWxhdGVLZXlib2FyZElu
cHV0T25UZXh0SW5zZXJ0aW9uIHsgTlNDbGFzc0Zyb21TdHJpbmcoQCJXS0NvbnRlbnRWaWV3Iiks
IEBzZWxlY3Rvcihfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dElu
c2VydGlvbk92ZXJyaWRlKSB9OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCld
KTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vz
c2lvblBvbGljeUhhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJ
bmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07
CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiaW5zZXJ0LXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0
KCldXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNz
aW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4
dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbIEAi
aGVsbyIgXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgRVhQRUNUX05T
X0VRVUFMKChAW0Aia2V5ZG93biIsIEAiYmVmb3JlaW5wdXQiLCBAImlucHV0IiwgQCJrZXl1cCIs
IEAiY2hhbmdlIl0pLCBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmly
ZWRFdmVudHMiXSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdENvY29hLmgKaW5kZXggNmU0NTM5NTlkZGE2YjFiODFlZGIyMTE3NjNkYmI2MmU5ZWE4YzJm
MS4uNTFkNDc5MmY1YjA3YmI4ZjY2ZTg5MzVmOGQyNmRlNTkxMWRmNzdlYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDI2IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitzdGF0aWMgaW5saW5lIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IGFzc2VydE5TT2JqZWN0c0FyZUVxdWFsKGNvbnN0IGNoYXIqIGV4cGVjdGVkRXhwcmVzc2lv
biwgY29uc3QgY2hhciogYWN0dWFsRXhwcmVzc2lvbiwgVCAqZXhwZWN0ZWQsIFUgKmFjdHVhbCkK
K3sKKyAgICBpZiAoKCFleHBlY3RlZCAmJiAhYWN0dWFsKSB8fCBbZXhwZWN0ZWQgaXNFcXVhbDph
Y3R1YWxdKQorICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOworICAg
IHJldHVybiB0ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWlsdXJlKGV4cGVjdGVkRXhwcmVzc2lvbiwg
YWN0dWFsRXhwcmVzc2lvbiwgdG9TVEQoW2V4cGVjdGVkIGRlc2NyaXB0aW9uXSksIHRvU1REKFth
Y3R1YWwgZGVzY3JpcHRpb25dKSwgZmFsc2UgLyogaWdub3JpbmdfY2FzZSAqLyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2RlZmlu
ZSBFWFBFQ1RfTlNfRVFVQUwoZXhwZWN0ZWQsIGFjdHVhbCkgXAorICAgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoVGVzdFdlYktpdEFQSTo6VXRpbDo6YXNzZXJ0TlNPYmplY3RzQXJlRXF1YWwsIGV4cGVj
dGVkLCBhY3R1YWwpCisKICNpZiBVU0UoQ0cpCiAKIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mLCBjb25zdCBDR1JlY3QmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL2luc2VydC10ZXh0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9pbnNl
cnQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ODNhM2ViMmRjNjBkOTc3NWEwODI2M2IwNWI5NWNh
YjFjNjNjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9pbnNl
cnQtdGV4dC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CitsZXQgZmlyZWRFdmVudHMgPSBbXTsKKworZnVuY3Rpb24gbG9nRXZl
bnQoZXZlbnQpCit7CisgICAgZmlyZWRFdmVudHMucHVzaChldmVudC50eXBlKTsKK30KKworZnVu
Y3Rpb24gc2V0dXBUZXN0KCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIo
ImtleWRvd24iLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRM
aXN0ZW5lcigiYmVmb3JlaW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3VtZW50LmJv
ZHkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3Vt
ZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCBsb2dFdmVudCwgZmFsc2UpOworICAg
IGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgbG9nRXZlbnQsIGZhbHNl
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXR1cFRlc3QoKSIgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394196</attachid>
            <date>2020-03-21 23:02:52 -0700</date>
            <delta_ts>2020-03-21 23:34:35 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-209380-20200321230251.patch</filename>
            <type>text/plain</type>
            <size>20563</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiMDJhYWU5YWMyZDc1Y2Qw
NGViNjE2ZjlmNmNlZjllNzRmMTU3ODYuLjQ1YzFiZDhkY2E0ZTdlYjNmZDBkNDkwN2ViZTU3YWI5
ODkxYjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMjEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0aW5nIHRl
eHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9hcmQgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSB3b3JrYXJvdW5kIGZvciBzaXRlcyB0aGUg
aW1wbGVtZW50IHRoZWlyIG93biBlZGl0aW5nIHN5c3RlbSAoZS5nLiBmYWNlYm9vay5jb20pCisg
ICAgICAgIGFkZCBhIG5ldyBpbnNlcnRpb24gb3B0aW9uIHRoYXQgbWFrZXMgdGhlIGluc2VydGlv
biBoYXZpbmcgYSBwYXNzaW5nIHJlc2VtYmxhbmNlCisgICAgICAgIG9mIGEgcGVyc29uIHR5cGlu
Zy4gVGhlIHJlc2VtYmxhbmNlIGlzIGFjaGlldmVkIGJ5IGRpc3BhdGNoaW5nIERPTSBldmVudHMg
d2l0aCB0eXBlCisgICAgICAgICJrZXlkb3duIiwgImtleXVwIiwgYW5kICJjaGFuZ2UiLgorCisg
ICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVj
b2RlKToKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgdGhlIG5ldyBvcHRpb24uCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaDogRGVmYXVsdCB0aGUgbmV3IG9w
dGlvbiwgc2ltdWxhdGVLZXlib2FyZElucHV0LCB0byBmYWxzZQorICAgICAgICB0byBrZWVwIG91
ciBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRTaW11bGF0
ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25dKTogQWRkZWQuIFJldHVybnMgTk8gd2hlbgor
ICAgICAgICBidWlsZGluZyB3aXRob3V0IFVTRShURVhUX0lOVEVSQUNUSU9OX0FERElUSU9OUykg
dG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGluc2VydFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDphbHRl
cm5hdGl2ZXM6c3R5bGU6XSk6CisgICAgICAgIFNldCB0aGUgc2ltdWxhdGVLZXlib2FyZElucHV0
IG9wdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisgICAgICAgIElmIHNpbXVsYXRlS2V5
Ym9hcmRJbnB1dCBpcyBmYWxzZSB0aGVuIGRvIHdoYXQgd2UgZG8gbm93LiBPdGhlcndpc2UsIGRp
c3BhdGNoIGEgRE9NIGV2ZW50CisgICAgICAgIG9mIHR5cGUgImtleWRvd24iIGFuZCBwZXJmb3Jt
IHRoZSBpbnNlcnRpb24uIFRoZW4gZGlzcGF0Y2ggRE9NIGV2ZW50cyBvZiB0eXBlICJrZXl1cCIg
YW5kICJjaGFuZ2UiLiAKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlz
dCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNl
cnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0
T3B0aW9ucy5jcHAKaW5kZXggODE2NDQyNjEyYTIyNzlhOGMzM2JkNWNmM2E4ZTI0MDM3NDY3NTBi
ZS4uMmQ5NTJiYWFhM2QwMzUyNjY0ZThmMjllNDE5MjAxNjc4OGYxM2VkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMzMsNiAr
MzMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZQogICAgIGVuY29kZXIgPDwgb3B0aW9ucy5y
ZWdpc3RlclVuZG9Hcm91cDsKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rp
b25VcGRhdGU7CiAgICAgZW5jb2RlciA8PCBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZTsK
KyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0OwogICAgIGVuY29k
ZXIgPDwgb3B0aW9ucy5lZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG87CiB9CiAKQEAgLTQ1LDYgKzQ2
LDggQEAgT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gb3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCmlu
ZGV4IGNkMjAxYWIyYmFkM2QyOTNkZjhiM2VhMDM4N2UzNDFhZDRiNzBiNTEuLjk4YzkyYjQ0OTlk
MDVhNTZhYTA4OTVjNjFmNmM3OWRhNjAxODRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgSW5z
ZXJ0VGV4dE9wdGlvbnMgewogICAgIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlIHsgZmFsc2UgfTsKKyAgICBib29sIHNpbXVsYXRlS2V5Ym9hcmRJ
bnB1dCB7IGZhbHNlIH07CiAgICAgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyB7IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290IH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmNjZiZWUyODFhNmZhMTFlNjhlNWE1ZmY4NTU2NWZh
OTMzYzQzMTg4Li5jNTI3ODQ1MTkyMzg1YmFiODE3NzAxZWVhMjQwMjIzNDM3OWI4ZDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTQ3MTAsNiArNDcxMCwxNSBAQCAtICh2b2lkKWRlbGV0ZUJhY2t3YXJk
CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiZGVsZXRlQmFja3dhcmQiX3MpOwogfQog
CistIChCT09MKV9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24KK3sK
KyNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCisgICAgW3NlbGYgX3Nob3VsZFNp
bXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbkludGVybmFsXTsKKyNlbHNlCisgICAg
cmV0dXJuIE5POworI2VuZGlmCit9CisKIC8vIEluc2VydHMgdGhlIGdpdmVuIHN0cmluZywgcmVw
bGFjaW5nIGFueSBzZWxlY3RlZCBvciBtYXJrZWQgdGV4dC4KIC0gKHZvaWQpaW5zZXJ0VGV4dDoo
TlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIHsKQEAgLTQ3MTcsNyArNDcyNiw3IEBAIC0gKHZvaWQp
aW5zZXJ0VGV4dDooTlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIAogICAgIFdlYktpdDo6SW5zZXJ0
VGV4dE9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSA9
IFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlzQ2FsbGluZ0lucHV0RGVs
ZWdhdGUpXSAmJiBrZXlib2FyZC5pc0NhbGxpbmdJbnB1dERlbGVnYXRlOwotCisgICAgb3B0aW9u
cy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElu
cHV0T25UZXh0SW5zZXJ0aW9uXTsKICAgICBfcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdW
YWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKQEAg
LTQ3MzEsNyArNDc0MCwxMCBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICopYVN0cmlu
Z1ZhbHVlIGFsdGVybmF0aXZlczooTlNBcnJheTxOU1N0cmluZyAqPiAqKQogICAgICAgICBCT09M
IGlzTG93Q29uZmlkZW5jZSA9IHN0eWxlID09IFVJVGV4dEFsdGVybmF0aXZlU3R5bGVMb3dDb25m
aWRlbmNlOwogICAgICAgICBhdXRvIHRleHRBbHRlcm5hdGl2ZXMgPSBhZG9wdE5TKFtbTlNUZXh0
QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6YVN0cmluZ1ZhbHVlIGFs
dGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMgaXNMb3dDb25maWRlbmNlOmlzTG93Q29uZmlk
ZW5jZV0pOwogICAgICAgICBXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgdGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlIHsgdGV4dEFsdGVybmF0aXZlcy5nZXQoKSwgTlNNYWtlUmFuZ2Uo
MCwgYVN0cmluZ1ZhbHVlLmxlbmd0aCkgfTsKLSAgICAgICAgX3BhZ2UtPmluc2VydERpY3RhdGVk
VGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB9
LCB7IH0pOworCisgICAgICAgIFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKKyAg
ICAgICAgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uXTsKKyAgICAgICAgX3BhZ2UtPmluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZSB9LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBi
YzBhYzY4YzcyMGU5NjExNDUzMzIyMWM5NWU4YmFmYjVlZGEyZWMzLi5jNjk4NGEzYmQzNzNjNjky
YzAzNmI2NmYzZThmZjhlYzczMTg4MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVu
dE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgpA
QCAtMjAwLDggKzIwMSwxNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZQogICAgIGlmIChvcHRp
b25zLnJlZ2lzdGVyVW5kb0dyb3VwKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nIHsgfSk7CiAKKyAgICBSZWZQdHI8RWxl
bWVudD4gZm9jdXNlZEVsZW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQo
KS0+Zm9jdXNlZEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYm
IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KQorICAgICAgICBmb2N1c2VkRWxlbWVudC0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisKICAgICBB
U1NFUlQoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwogICAgIGZyYW1lLmVkaXRv
cigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cywgbnVsbHB0ciAvKiB0cmlnZ2VyaW5nRXZlbnQgKi8pOworCisgICAgaWYgKGZvY3VzZWRFbGVt
ZW50ICYmIG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSB7CisgICAgICAgIGZvY3VzZWRF
bGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXVwRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7Cisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcykpOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTFiOTI2NDIyMWE0
OWE4NjM4NWRjODhjZDU4NDMyNDhiYzU2MWVhOS4uMTA0ODc4OGEzMTQzYzYzM2E1OWZlYzYzYWEy
OGM5ZmRmZmQ1OTEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTUyOTMsMTMgKzUyOTMsMjIgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4K
ICAgICAKICAgICBpZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsK
LSAgICAKKworICAgIFJlZlB0cjxFbGVtZW50PiBmb2N1c2VkRWxlbWVudCA9IGZyYW1lLmRvY3Vt
ZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpIDogbnVsbHB0cjsKKyAg
ICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQpCisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMpKTsKKwogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVy
IHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAg
Ly8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93
biB0aGUgcGFnZS4KICAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxs
cHRyLCByZXBsYWNlc1RleHQgPyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2
ZW50SW5wdXRLZXlib2FyZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNv
bmZpcm1Db21wb3NpdGlvbih0ZXh0KTsKKworICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBvcHRp
b25zLnNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkgeworICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgICAgICBmb2N1
c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMp
KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4NTM2ZmUyZTI4Mjc3ZTUyYjExYjRh
OTFiYWVhYTcxNzhjODhiOGQuLjQyOGQwZWRjNmYxYTJmNTlkMGQ5MzJhNGYzZWQzMzBjNTM2ZTAw
ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAyMC0wMy0yMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnRpbmcgdGV4dCBvciBkaWN0YXRpb24gYWx0ZXJu
YXRpdmUgYnkgc2ltdWxhdGluZyBrZXlib2FyZCBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81OTQ0NTEwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMgdG8gZW5zdXJlIHRoYXQgRE9NIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBv
biBpbnNlcnRpb24gd2hlbiBzaW11bGF0ZUtleWJvYXJkSW5wdXQKKyAgICAgICAgaXMgZW5hYmxl
ZC4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBjb252ZW5pZW5jZSBhc3NlcnRpb24gZnVuY3Rp
b24sIEVYUEVDVF9OU19FUVVBTCwgdGhhdCBjYW4KKyAgICAgICAgY29tcGFyZSBOU09iamVjdHMg
c28gbG9uZyBhcyB0aGV5IGltcGxlbWVudCAtaXNFcXVhbCBhbmQgLWRlc2NyaXB0aW9uLiBJCisg
ICAgICAgIG1ha2UgdXNlIG9mIHRoaXMgdG8gY29tcGFyZSB0aGUgYWN0dWFsIGFycmF5IG9mIGZp
cmVkIERPTSBldmVudHMgdHlwZXMgdG8KKyAgICAgICAgYW4gZXhwZWN0ZWQgYXJyYXkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzaG91bGRTaW11bGF0ZUtleWJvYXJk
SW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlkZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6YXNzZXJ0TlNPYmplY3RzQXJlRXF1YWwpOiBBZGRlZC4K
KyAgICAgICAgKEVYUEVDVF9OU19FUVVBTCk6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvaW9zL2luc2VydC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTAyICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbbGxkYi13ZWJraXRdIEFkZCBzdXBw
b3J0IGZvciBwcmV0dHktcHJpbnRpbmcgY29tcGxleCBiaXRtYXNrcyAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGJhNzFiMWI3YmY2YWVhZjlkZWEyNTMyMTEzZWYyODRkODY2OWZkNC4uMzc3
ZTEwNjFiNDhiYzhlZGMwZTdmNmVkODA2ODA3Mzc0N2RiN2JkYSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk4NCw2ICs5ODQsNyBAQAogCQlDRTM1MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyog
aW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJCQkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1
cy1ibHVyLmh0bWwgKi87IH07CiAJCUNFNDQ5RTExMjFBRTBGNzIwMEU3QURBMSAvKiBXS1dlYlZp
ZXdGaW5kU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U0NDlFMTAyMUFFMEY3MjAwRTdBREExIC8qIFdLV2ViVmlld0ZpbmRTdHJpbmcubW0g
Ki87IH07CiAJCUNFNEQ1REU3MUY2NzQzQkEwMDcyQ0ZDNiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNEQ1
REU1MUY2NzQzQkEwMDcyQ0ZDNiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmNwcCAqLzsgfTsKKwkJ
Q0U2RDBFRTMyNDI2QjkzMjAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RDBFRTIyNDI2QjhF
RDAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi87IH07CiAJCUNFNkU4MUEwMjBBNjkzNUYw
MEUyQzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFODE5RjIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGlt
ZW91dEZ1bmN0aW9uLm1tICovOyB9OwogCQlDRTZFODFBNDIwQTkzM0Q1MDBFMkM4MEYgLyogc2V0
LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0LXRpbWVv
dXQtZnVuY3Rpb24uaHRtbCAqLzsgfTsKIAkJQ0U3ODcwNUYyMTA3QUI5ODAwNTNBQzY3IC8qIE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFNzg3MDVEMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlci5jcHAgKi87IH07CkBAIC0xMzc0LDYgKzEzNzUsNyBAQAogCQkJCTUxMTBGQ0Y2
MUUwMUNEODMwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQkyRUZGMDZDRDFEOEE0MjlBMDAwNEJCMzAgLyogaW5wdXQtZmllbGQtaW4tc2Ny
b2xsYWJsZS1kb2N1bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNFMzUyNEZB
MUIxNDQzODkwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCisJCQkJQ0U2RDBFRTMyNDI2QjkzMjAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElz
TmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
OUI0QUQyQzFFQ0E2RjdGMDBGNUZFQTAgLyoganMtYXV0b3BsYXktYXVkaW8uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDOTlCNjc1RDFFMzk3MjIwMDBGQzZDODAgLyoganMtcGxheS13
aXRoLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNTc4LDYgKzI1ODAs
NyBAQAogCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvblNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFNjQwQ0E1MjM3MEE0RjMwMEM1Q0FBNCAvKiBUZXN0Q29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gVGVzdENvY29hLmg7IHBhdGggPSBjb2NvYS9UZXN0Q29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8q
IFRlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RDb2NvYS5tbTsgcGF0aCA9
IGNvY29hL1Rlc3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U2RDBF
RTIyNDI2QjhFRDAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IG5hbWUgPSAiaW5zZXJ0LXRleHQuaHRtbCI7IHBhdGggPSAiaW9zL2luc2VydC10ZXh0Lmh0
bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNFNkU4MTlGMjBBNjkzNUYwMEUy
QzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXRU
aW1lb3V0RnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkU4MUEz
MjBBOTMzQjgwMEUyQzgwRiAvKiBzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBuYW1lID0gInNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwiOyBwYXRoID0gImlv
cy9zZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlDRTc4NzA1QzIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2NzEsNiArMzY3NCw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMTZCRUQ3MjMwNEExRDEw
MEI0QTE2NyAvKiBjb21wb3NpdGVkLmh0bWwgKi8sCisJCQkJQ0U2RDBFRTIyNDI2QjhFRDAwMkFE
OTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgKi8sCiAJCQkJMEYzNDA3NzcyMzAzODI1NDAwNjBBMUEw
IC8qIG92ZXJmbG93LXNjcm9sbC5odG1sICovLAogCQkJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJE
MCAvKiBwYWdlcy5wYWdlcyAqLywKIAkJCQlDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0
LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQppbmRleCA3NDk4YjI4ZTQ0NGU5
OWQ5MzA5NDI5MGEwZDFhMGM0N2FhZjMyOWEyLi5lMmQ4NDNiOGMzZDBkYzZkYjZmZmNkYjRkZmJh
ZjIyMTM2YWM4YjI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9L
ZXlib2FyZElucHV0VGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJJ
UGFkVXNlckludGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1wb3J0ICJJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdENvY29h
LmgiCiAjaW1wb3J0ICJUZXN0SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTM3LDYgKzM4LDEwIEBACiAjaW1wb3J0IDxX
ZWJLaXRMZWdhY3kvV2ViRXZlbnQuaD4KICNpbXBvcnQgPGNtYXRoPgogCitAaW50ZXJmYWNlIFdL
Q29udGVudFZpZXcgKCkKKy0gKEJPT0wpX3Nob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4
dEluc2VydGlvbjsKK0BlbmQKKwogQGludGVyZmFjZSBJbnB1dEFzc2lzdGFudEl0ZW1UZXN0aW5n
V2ViVmlldyA6IFRlc3RXS1dlYlZpZXcKICsgKFVJQmFyQnV0dG9uSXRlbUdyb3VwICopbGVhZGlu
Z0l0ZW1zRm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKICsgKFVJQmFyQnV0dG9uSXRl
bUdyb3VwICopdHJhaWxpbmdJdGVtc0ZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CkBA
IC02NDcsNiArNjUyLDQ3IEBAIFRFU1QoS2V5Ym9hcmRJbnB1dFRlc3RzLCBTdXBwcmVzc1NvZnR3
YXJlS2V5Ym9hcmQpCiAgICAgRVhQRUNUX1RSVUUoVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFu
Y2UuX3Nob3VsZFN1cHByZXNzU29mdHdhcmVLZXlib2FyZCk7CiB9CiAKK3N0YXRpYyBCT09MIHNo
b3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbk92ZXJyaWRlKGlkLCBTRUwp
Cit7CisgICAgcmV0dXJuIFlFUzsKK30KKworVEVTVChLZXlib2FyZElucHV0VGVzdHMsIEluc2Vy
dFRleHRTaW11bGF0aW5nS2V5Ym9hcmRJbnB1dCkKK3sKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyIG92ZXJyaWRlU2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uIHsg
TlNDbGFzc0Zyb21TdHJpbmcoQCJXS0NvbnRlbnRWaWV3IiksIEBzZWxlY3Rvcihfc2hvdWxkU2lt
dWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbk92ZXJyaWRlKSB9Owor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBhdXRvIGlucHV0RGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBb
aW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6WyZd
KFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9j
dXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElu
cHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaW5zZXJ0
LXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVu
dC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGlu
c2VydFRleHQ6QCJoZWxsbyJdOworICAgIEVYUEVDVF9OU19FUVVBTCgoQFtAImtleWRvd24iLCBA
ImJlZm9yZWlucHV0IiwgQCJpbnB1dCIsIEAia2V5dXAiLCBAImNoYW5nZSJdKSwgW3dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpcmVkRXZlbnRzIl0pOworfQorCisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKK1RFU1QoS2V5Ym9hcmRJbnB1dFRlc3RzLCBJ
bnNlcnREaWN0YXRpb25BbHRlcm5hdGl2ZXNTaW11bGF0aW5nS2V5Ym9hcmRJbnB1dCkKK3sKKyAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIG92ZXJyaWRlU2hvdWxkU2ltdWxhdGVLZXlib2FyZElu
cHV0T25UZXh0SW5zZXJ0aW9uIHsgTlNDbGFzc0Zyb21TdHJpbmcoQCJXS0NvbnRlbnRWaWV3Iiks
IEBzZWxlY3Rvcihfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dElu
c2VydGlvbk92ZXJyaWRlKSB9OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCld
KTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vz
c2lvblBvbGljeUhhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJ
bmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07
CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiaW5zZXJ0LXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0
KCldXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNz
aW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4
dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbIEAi
aGVsbyIgXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgRVhQRUNUX05T
X0VRVUFMKChAW0Aia2V5ZG93biIsIEAiYmVmb3JlaW5wdXQiLCBAImlucHV0IiwgQCJrZXl1cCIs
IEAiY2hhbmdlIl0pLCBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmly
ZWRFdmVudHMiXSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdENvY29hLmgKaW5kZXggNmU0NTM5NTlkZGE2YjFiODFlZGIyMTE3NjNkYmI2MmU5ZWE4YzJm
MS4uZWVhZGNiYjliMzBjZWIwOTQwYWQzMzA4MzY3NGI3ZDI1YTQ2MzZkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDI2IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitzdGF0aWMgaW5saW5lIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IGFzc2VydE5TT2JqZWN0c0FyZUVxdWFsKGNvbnN0IGNoYXIqIGV4cGVjdGVkRXhwcmVzc2lv
biwgY29uc3QgY2hhciogYWN0dWFsRXhwcmVzc2lvbiwgVCAqZXhwZWN0ZWQsIFUgKmFjdHVhbCkK
K3sKKyAgICBpZiAoKCFleHBlY3RlZCAmJiAhYWN0dWFsKSB8fCBbZXhwZWN0ZWQgaXNFcXVhbDph
Y3R1YWxdKQorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Cisg
ICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkVxRmFpbHVyZShleHBlY3RlZEV4cHJlc3Np
b24sIGFjdHVhbEV4cHJlc3Npb24sIHRvU1REKFtleHBlY3RlZCBkZXNjcmlwdGlvbl0pLCB0b1NU
RChbYWN0dWFsIGRlc2NyaXB0aW9uXSksIGZhbHNlIC8qIGlnbm9yaW5nX2Nhc2UgKi8pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNk
ZWZpbmUgRVhQRUNUX05TX0VRVUFMKGV4cGVjdGVkLCBhY3R1YWwpIFwKKyAgICBFWFBFQ1RfUFJF
RF9GT1JNQVQyKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmFzc2VydE5TT2JqZWN0c0FyZUVxdWFsLCBl
eHBlY3RlZCwgYWN0dWFsKQorCiAjaWYgVVNFKENHKQogCiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgQ0dSZWN0Jik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4dC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
aW5zZXJ0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODgzYTNlYjJkYzYwZDk3NzVhMDgyNjNiMDVi
OTVjYWIxYzYzYzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
aW5zZXJ0LXRleHQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgorbGV0IGZpcmVkRXZlbnRzID0gW107CisKK2Z1bmN0aW9uIGxv
Z0V2ZW50KGV2ZW50KQoreworICAgIGZpcmVkRXZlbnRzLnB1c2goZXZlbnQudHlwZSk7Cit9CisK
K2Z1bmN0aW9uIHNldHVwVGVzdCgpCit7CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3Rl
bmVyKCJrZXlkb3duIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2
ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBk
b2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgbG9nRXZlbnQsIGZhbHNlKTsK
KyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGxvZ0V2ZW50LCBm
YWxzZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0dXBUZXN0KCki
IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394197</attachid>
            <date>2020-03-21 23:34:37 -0700</date>
            <delta_ts>2020-03-23 13:57:33 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-209380-20200321233436.patch</filename>
            <type>text/plain</type>
            <size>20570</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiMDJhYWU5YWMyZDc1Y2Qw
NGViNjE2ZjlmNmNlZjllNzRmMTU3ODYuLjQ1YzFiZDhkY2E0ZTdlYjNmZDBkNDkwN2ViZTU3YWI5
ODkxYjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMjEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0aW5nIHRl
eHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9hcmQgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSB3b3JrYXJvdW5kIGZvciBzaXRlcyB0aGUg
aW1wbGVtZW50IHRoZWlyIG93biBlZGl0aW5nIHN5c3RlbSAoZS5nLiBmYWNlYm9vay5jb20pCisg
ICAgICAgIGFkZCBhIG5ldyBpbnNlcnRpb24gb3B0aW9uIHRoYXQgbWFrZXMgdGhlIGluc2VydGlv
biBoYXZpbmcgYSBwYXNzaW5nIHJlc2VtYmxhbmNlCisgICAgICAgIG9mIGEgcGVyc29uIHR5cGlu
Zy4gVGhlIHJlc2VtYmxhbmNlIGlzIGFjaGlldmVkIGJ5IGRpc3BhdGNoaW5nIERPTSBldmVudHMg
d2l0aCB0eXBlCisgICAgICAgICJrZXlkb3duIiwgImtleXVwIiwgYW5kICJjaGFuZ2UiLgorCisg
ICAgICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVj
b2RlKToKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgdGhlIG5ldyBvcHRpb24uCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaDogRGVmYXVsdCB0aGUgbmV3IG9w
dGlvbiwgc2ltdWxhdGVLZXlib2FyZElucHV0LCB0byBmYWxzZQorICAgICAgICB0byBrZWVwIG91
ciBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRTaW11bGF0
ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25dKTogQWRkZWQuIFJldHVybnMgTk8gd2hlbgor
ICAgICAgICBidWlsZGluZyB3aXRob3V0IFVTRShURVhUX0lOVEVSQUNUSU9OX0FERElUSU9OUykg
dG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGluc2VydFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDphbHRl
cm5hdGl2ZXM6c3R5bGU6XSk6CisgICAgICAgIFNldCB0aGUgc2ltdWxhdGVLZXlib2FyZElucHV0
IG9wdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisgICAgICAgIElmIHNpbXVsYXRlS2V5
Ym9hcmRJbnB1dCBpcyBmYWxzZSB0aGVuIGRvIHdoYXQgd2UgZG8gbm93LiBPdGhlcndpc2UsIGRp
c3BhdGNoIGEgRE9NIGV2ZW50CisgICAgICAgIG9mIHR5cGUgImtleWRvd24iIGFuZCBwZXJmb3Jt
IHRoZSBpbnNlcnRpb24uIFRoZW4gZGlzcGF0Y2ggRE9NIGV2ZW50cyBvZiB0eXBlICJrZXl1cCIg
YW5kICJjaGFuZ2UiLiAKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlz
dCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNl
cnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0
T3B0aW9ucy5jcHAKaW5kZXggODE2NDQyNjEyYTIyNzlhOGMzM2JkNWNmM2E4ZTI0MDM3NDY3NTBi
ZS4uMmQ5NTJiYWFhM2QwMzUyNjY0ZThmMjllNDE5MjAxNjc4OGYxM2VkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtMzMsNiAr
MzMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZQogICAgIGVuY29kZXIgPDwgb3B0aW9ucy5y
ZWdpc3RlclVuZG9Hcm91cDsKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rp
b25VcGRhdGU7CiAgICAgZW5jb2RlciA8PCBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZTsK
KyAgICBlbmNvZGVyIDw8IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0OwogICAgIGVuY29k
ZXIgPDwgb3B0aW9ucy5lZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG87CiB9CiAKQEAgLTQ1LDYgKzQ2
LDggQEAgT3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gb3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRp
b25zLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCmlu
ZGV4IGNkMjAxYWIyYmFkM2QyOTNkZjhiM2VhMDM4N2UzNDFhZDRiNzBiNTEuLjk4YzkyYjQ0OTlk
MDVhNTZhYTA4OTVjNjFmNmM3OWRhNjAxODRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgSW5z
ZXJ0VGV4dE9wdGlvbnMgewogICAgIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgeyBmYWxzZSB9Owog
ICAgIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlIHsgZmFsc2UgfTsKKyAgICBib29sIHNpbXVsYXRlS2V5Ym9hcmRJ
bnB1dCB7IGZhbHNlIH07CiAgICAgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyB7IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290IH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmNjZiZWUyODFhNmZhMTFlNjhlNWE1ZmY4NTU2NWZh
OTMzYzQzMTg4Li41M2ZjODM4MzZiOTdmMDgyM2E5NjMxMjE5MmZhNzE0YTBmNGY0MTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTQ3MTAsNiArNDcxMCwxNSBAQCAtICh2b2lkKWRlbGV0ZUJhY2t3YXJk
CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiZGVsZXRlQmFja3dhcmQiX3MpOwogfQog
CistIChCT09MKV9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24KK3sK
KyNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCisgICAgcmV0dXJuIFtzZWxmIF9z
aG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25JbnRlcm5hbF07CisjZWxz
ZQorICAgIHJldHVybiBOTzsKKyNlbmRpZgorfQorCiAvLyBJbnNlcnRzIHRoZSBnaXZlbiBzdHJp
bmcsIHJlcGxhY2luZyBhbnkgc2VsZWN0ZWQgb3IgbWFya2VkIHRleHQuCiAtICh2b2lkKWluc2Vy
dFRleHQ6KE5TU3RyaW5nICopYVN0cmluZ1ZhbHVlCiB7CkBAIC00NzE3LDcgKzQ3MjYsNyBAQCAt
ICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICopYVN0cmluZ1ZhbHVlCiAKICAgICBXZWJLaXQ6
Okluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5wcm9jZXNzaW5nVXNlckdl
c3R1cmUgPSBba2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpc0NhbGxpbmdJ
bnB1dERlbGVnYXRlKV0gJiYga2V5Ym9hcmQuaXNDYWxsaW5nSW5wdXREZWxlZ2F0ZTsKLQorICAg
IG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0ID0gW3NlbGYgX3Nob3VsZFNpbXVsYXRlS2V5
Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbl07CiAgICAgX3BhZ2UtPmluc2VydFRleHRBc3luYyhh
U3RyaW5nVmFsdWUsIFdlYktpdDo6RWRpdGluZ1JhbmdlKCksIFdURk1vdmUob3B0aW9ucykpOwog
fQogCkBAIC00NzMxLDcgKzQ3NDAsMTAgQEAgLSAodm9pZClpbnNlcnRUZXh0OihOU1N0cmluZyAq
KWFTdHJpbmdWYWx1ZSBhbHRlcm5hdGl2ZXM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKikKICAgICAg
ICAgQk9PTCBpc0xvd0NvbmZpZGVuY2UgPSBzdHlsZSA9PSBVSVRleHRBbHRlcm5hdGl2ZVN0eWxl
TG93Q29uZmlkZW5jZTsKICAgICAgICAgYXV0byB0ZXh0QWx0ZXJuYXRpdmVzID0gYWRvcHROUyhb
W05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOmFTdHJpbmdW
YWx1ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzIGlzTG93Q29uZmlkZW5jZTppc0xv
d0NvbmZpZGVuY2VdKTsKICAgICAgICAgV2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
IHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7IHRleHRBbHRlcm5hdGl2ZXMuZ2V0KCksIE5TTWFr
ZVJhbmdlKDAsIGFTdHJpbmdWYWx1ZS5sZW5ndGgpIH07Ci0gICAgICAgIF9wYWdlLT5pbnNlcnRE
aWN0YXRlZFRleHRBc3luYyhhU3RyaW5nVmFsdWUsIHsgfSwgeyB0ZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UgfSwgeyB9KTsKKworICAgICAgICBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zIG9wdGlv
bnM7CisgICAgICAgIG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElucHV0ID0gW3NlbGYgX3Nob3Vs
ZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbl07CisgICAgICAgIF9wYWdlLT5p
bnNlcnREaWN0YXRlZFRleHRBc3luYyhhU3RyaW5nVmFsdWUsIHsgfSwgeyB0ZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UgfSwgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0K
aW5kZXggYmMwYWM2OGM3MjBlOTYxMTQ1MzMyMjFjOTVlOGJhZmI1ZWRhMmVjMy4uYzY5ODRhM2Jk
MzczYzY5MmMwMzZiNjZmM2U4ZmY4ZWM3MzE4ODA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMzksNiAr
MzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRXZlbnROYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0
ZXIuaD4KQEAgLTIwMCw4ICsyMDEsMTcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRl
eHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmUKICAgICBp
ZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZyB7IH0pOwogCisgICAgUmVm
UHRyPEVsZW1lbnQ+IGZvY3VzZWRFbGVtZW50ID0gZnJhbWUuZG9jdW1lbnQoKSA/IGZyYW1lLmRv
Y3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkgOiBudWxscHRyOworICAgIGlmIChmb2N1c2VkRWxl
bWVudCAmJiBvcHRpb25zLnNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkKKyAgICAgICAgZm9jdXNlZEVs
ZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwor
CiAgICAgQVNTRVJUKCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKICAgICBmcmFt
ZS5lZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVM
b2NhdGlvbnMsIG51bGxwdHIgLyogdHJpZ2dlcmluZ0V2ZW50ICovKTsKKworICAgIGlmIChmb2N1
c2VkRWxlbWVudCAmJiBvcHRpb25zLnNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkgeworICAgICAgICBm
b2N1c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5r
ZXl1cEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cykpOworICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWNjZXNzaWJp
bGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUxYjky
NjQyMjFhNDlhODYzODVkYzg4Y2Q1ODQzMjQ4YmM1NjFlYTkuLjEwNDg3ODhhMzE0M2M2MzNhNTlm
ZWM2M2FhMjhjOWZkZmZkNTkxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC01MjkzLDEzICs1MjkzLDIyIEBAIHZvaWQgV2ViUGFnZTo6aW5z
ZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBs
YWNlbWVuCiAgICAgCiAgICAgaWYgKG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBp
bmcoKSk7Ci0gICAgCisKKyAgICBSZWZQdHI8RWxlbWVudD4gZm9jdXNlZEVsZW1lbnQgPSBmcmFt
ZS5kb2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSA6IG51bGxw
dHI7CisgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIG9wdGlvbnMuc2ltdWxhdGVLZXlib2FyZElu
cHV0KQorICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisKICAgICBpZiAoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBv
c2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBi
eSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAg
ICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0aGF0IHJlc3VsdHMgaW4gc2Nyb2xs
aW5nIGRvd24gdGhlIHBhZ2UuCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQodGV4
dCwgbnVsbHB0ciwgcmVwbGFjZXNUZXh0ID8gVGV4dEV2ZW50SW5wdXRBdXRvY29tcGxldGlvbiA6
IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwogICAgIH0gZWxzZQogICAgICAgICBmcmFtZS5lZGl0
b3IoKS5jb25maXJtQ29tcG9zaXRpb24odGV4dCk7CisKKyAgICBpZiAoZm9jdXNlZEVsZW1lbnQg
JiYgb3B0aW9ucy5zaW11bGF0ZUtleWJvYXJkSW5wdXQpIHsKKyAgICAgICAgZm9jdXNlZEVsZW1l
bnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5dXBFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAg
ICAgZm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6WWVzKSk7CisgICAgfQogfQogCiB2b2lkIFdlYlBhZ2U6Omhhc01hcmtlZFRleHQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODUzNmZlMmUyODI3N2U1
MmIxMWI0YTkxYmFlYWE3MTc4Yzg4YjhkLi40MjhkMGVkYzZmMWEyZjU5ZDBkOTMyYTRmM2VkMzMw
YzUzNmUwMGRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDMtMjEgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0aW5nIHRleHQgb3IgZGljdGF0aW9u
IGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9hcmQgaW5wdXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM4MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IERPTSBldmVudHMgYXJlIGRpc3Bh
dGNoZWQgb24gaW5zZXJ0aW9uIHdoZW4gc2ltdWxhdGVLZXlib2FyZElucHV0CisgICAgICAgIGlz
IGVuYWJsZWQuCisKKyAgICAgICAgSSBhbHNvIGFkZGVkIGEgY29udmVuaWVuY2UgYXNzZXJ0aW9u
IGZ1bmN0aW9uLCBFWFBFQ1RfTlNfRVFVQUwsIHRoYXQgY2FuCisgICAgICAgIGNvbXBhcmUgTlNP
YmplY3RzIHNvIGxvbmcgYXMgdGhleSBpbXBsZW1lbnQgLWlzRXF1YWwgYW5kIC1kZXNjcmlwdGlv
bi4gSQorICAgICAgICBtYWtlIHVzZSBvZiB0aGlzIHRvIGNvbXBhcmUgdGhlIGFjdHVhbCBhcnJh
eSBvZiBmaXJlZCBET00gZXZlbnRzIHR5cGVzIHRvCisgICAgICAgIGFuIGV4cGVjdGVkIGFycmF5
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9hcmRJ
bnB1dFRlc3RzSU9TLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2hvdWxkU2ltdWxhdGVL
ZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uT3ZlcnJpZGUpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmFzc2VydE5TT2JqZWN0c0FyZUVxdWFsKTog
QWRkZWQuCisgICAgICAgIChFWFBFQ1RfTlNfRVFVQUwpOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0wMiAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2xsZGItd2Via2l0XSBB
ZGQgc3VwcG9ydCBmb3IgcHJldHR5LXByaW50aW5nIGNvbXBsZXggYml0bWFza3MgCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDRiYTcxYjFiN2JmNmFlYWY5ZGVhMjUzMjExM2VmMjg0ZDg2Njlm
ZDQuLjM3N2UxMDYxYjQ4YmM4ZWRjMGU3ZjZlZDgwNjgwNzM3NDdkYjdiZGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC05ODQsNiArOTg0LDcgQEAKIAkJQ0UzNTI0RkExQjE0NDM4OTAwMjhB
N0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRGNTFCMTQyQkJCMDAyOEE3QzUgLyogaW5w
dXQtZm9jdXMtYmx1ci5odG1sICovOyB9OwogCQlDRTQ0OUUxMTIxQUUwRjcyMDBFN0FEQTEgLyog
V0tXZWJWaWV3RmluZFN0cmluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNDQ5RTEwMjFBRTBGNzIwMEU3QURBMSAvKiBXS1dlYlZpZXdGaW5kU3Ry
aW5nLm1tICovOyB9OwogCQlDRTRENURFNzFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERp
cmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTRENURFNTFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAgKi87
IH07CisJCUNFNkQwRUUzMjQyNkI5MzIwMDJBRDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkQwRUUy
MjQyNkI4RUQwMDJBRDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sICovOyB9OwogCQlDRTZFODFBMDIw
QTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxOUYyMEE2OTM1RjAwRTJDODBGIC8q
IFNldFRpbWVvdXRGdW5jdGlvbi5tbSAqLzsgfTsKIAkJQ0U2RTgxQTQyMEE5MzNENTAwRTJDODBG
IC8qIHNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxQTMyMEE5MzNCODAwRTJDODBGIC8qIHNl
dC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgKi87IH07CiAJCUNFNzg3MDVGMjEwN0FCOTgwMDUzQUM2
NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTc4NzA1RDIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9u
bHlMaWZlY3ljbGVMb2dnZXIuY3BwICovOyB9OwpAQCAtMTM3NCw2ICsxMzc1LDcgQEAKIAkJCQk1
MTEwRkNGNjFFMDFDRDgzMDA2RjhEMEIgLyogSW5kZXhVcGdyYWRlLnNxbGl0ZTMgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJMkVGRjA2Q0QxRDhBNDI5QTAwMDRCQjMwIC8qIGlucHV0LWZpZWxk
LWluLXNjcm9sbGFibGUtZG9jdW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
RTM1MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAorCQkJCUNFNkQwRUUzMjQyNkI5MzIwMDJBRDkwMSAvKiBpbnNlcnQtdGV4
dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3RjU2QTVDMUM3RjhDQzEwMEYzMUQ3
RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQzlCNEFEMkMxRUNBNkY3RjAwRjVGRUEwIC8qIGpzLWF1dG9wbGF5LWF1ZGlvLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzk5QjY3NUQxRTM5NzIyMDAwRkM2QzgwIC8qIGpz
LXBsYXktd2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjU3OCw2
ICsyNTgwLDcgQEAKIAkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRpb25TZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTY0MENBNTIzNzBBNEYzMDBDNUNBQTQgLyogVGVz
dENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RDb2NvYS5oOyBwYXRoID0gY29jb2EvVGVzdENv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNjQwQ0E2MjM3MEE0RjMwMEM1
Q0FBNCAvKiBUZXN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0Q29jb2EubW07
IHBhdGggPSBjb2NvYS9UZXN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNFNkQwRUUyMjQyNkI4RUQwMDJBRDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBuYW1lID0gImluc2VydC10ZXh0Lmh0bWwiOyBwYXRoID0gImlvcy9pbnNlcnQt
dGV4dC5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRTZFODE5RjIwQTY5
MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2V0VGltZW91dEZ1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgcGF0
aCA9ICJpb3Mvc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJQ0U3ODcwNUMyMTA3QUI4QzAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xl
TG9nZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdmVPbmx5TGlmZWN5
Y2xlTG9nZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjcxLDYgKzM2NzQs
NyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjE2QkVENzIz
MDRBMUQxMDBCNEExNjcgLyogY29tcG9zaXRlZC5odG1sICovLAorCQkJCUNFNkQwRUUyMjQyNkI4
RUQwMDJBRDkwMSAvKiBpbnNlcnQtdGV4dC5odG1sICovLAogCQkJCTBGMzQwNzc3MjMwMzgyNTQw
MDYwQTFBMCAvKiBvdmVyZmxvdy1zY3JvbGwuaHRtbCAqLywKIAkJCQlBMUM0RkI3MjFCQUNEMUI3
MDAzNzQyRDAgLyogcGFnZXMucGFnZXMgKi8sCiAJCQkJQ0U2RTgxQTMyMEE5MzNCODAwRTJDODBG
IC8qIHNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0KaW5kZXggNzQ5OGIy
OGU0NDRlOTlkOTMwOTQyOTBhMGQxYTBjNDdhYWYzMjlhMi4uZTJkODQzYjhjM2QwZGM2ZGI2ZmZj
ZGI0ZGZiYWYyMjEzNmFjOGIyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2lt
cG9ydCAiSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlci5oIgogI2ltcG9ydCAiSW5zdGFuY2VNZXRo
b2RTd2l6emxlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRl
c3RDb2NvYS5oIgogI2ltcG9ydCAiVGVzdElucHV0RGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC0zNyw2ICszOCwxMCBAQAogI2lt
cG9ydCA8V2ViS2l0TGVnYWN5L1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxjbWF0aD4KIAorQGludGVy
ZmFjZSBXS0NvbnRlbnRWaWV3ICgpCistIChCT09MKV9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5w
dXRPblRleHRJbnNlcnRpb247CitAZW5kCisKIEBpbnRlcmZhY2UgSW5wdXRBc3Npc3RhbnRJdGVt
VGVzdGluZ1dlYlZpZXcgOiBUZXN0V0tXZWJWaWV3CiArIChVSUJhckJ1dHRvbkl0ZW1Hcm91cCAq
KWxlYWRpbmdJdGVtc0ZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiArIChVSUJhckJ1
dHRvbkl0ZW1Hcm91cCAqKXRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3OwpAQCAtNjQ3LDYgKzY1Miw0NyBAQCBURVNUKEtleWJvYXJkSW5wdXRUZXN0cywgU3VwcHJl
c3NTb2Z0d2FyZUtleWJvYXJkKQogICAgIEVYUEVDVF9UUlVFKFVJS2V5Ym9hcmRJbXBsLnNoYXJl
ZEluc3RhbmNlLl9zaG91bGRTdXBwcmVzc1NvZnR3YXJlS2V5Ym9hcmQpOwogfQogCitzdGF0aWMg
Qk9PTCBzaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlkZShp
ZCwgU0VMKQoreworICAgIHJldHVybiBZRVM7Cit9CisKK1RFU1QoS2V5Ym9hcmRJbnB1dFRlc3Rz
LCBJbnNlcnRUZXh0U2ltdWxhdGluZ0tleWJvYXJkSW5wdXQpCit7CisgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBvdmVycmlkZVNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2Vy
dGlvbiB7IE5TQ2xhc3NGcm9tU3RyaW5nKEAiV0tDb250ZW50VmlldyIpLCBAc2VsZWN0b3IoX3No
b3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbiksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25PdmVycmlk
ZSkgfTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgYXV0byBp
bnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5k
bGVyOlsmXShXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJu
IF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3
IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgUmV0YWluUHRy
PE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
Imluc2VydC10ZXh0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dl
YlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAi
ZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRW
aWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iXTsKKyAgICBFWFBFQ1RfTlNfRVFVQUwoKEBbQCJrZXlk
b3duIiwgQCJiZWZvcmVpbnB1dCIsIEAiaW5wdXQiLCBAImtleXVwIiwgQCJjaGFuZ2UiXSksIFt3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmaXJlZEV2ZW50cyJdKTsKK30K
KworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCitURVNUKEtleWJvYXJkSW5wdXRU
ZXN0cywgSW5zZXJ0RGljdGF0aW9uQWx0ZXJuYXRpdmVzU2ltdWxhdGluZ0tleWJvYXJkSW5wdXQp
Cit7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBvdmVycmlkZVNob3VsZFNpbXVsYXRlS2V5
Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbiB7IE5TQ2xhc3NGcm9tU3RyaW5nKEAiV0tDb250ZW50
VmlldyIpLCBAc2VsZWN0b3IoX3Nob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2Vy
dGlvbiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRP
blRleHRJbnNlcnRpb25PdmVycmlkZSkgfTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJ
bnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRF
bGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxs
b3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0
KCldOworCisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImluc2VydC10ZXh0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0
VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklu
cHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJW
aWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZl
czpAWyBAImhlbG8iIF0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIEVY
UEVDVF9OU19FUVVBTCgoQFtAImtleWRvd24iLCBAImJlZm9yZWlucHV0IiwgQCJpbnB1dCIsIEAi
a2V5dXAiLCBAImNoYW5nZSJdKSwgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImZpcmVkRXZlbnRzIl0pOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdENvY29hLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RDb2NvYS5oCmluZGV4IDZlNDUzOTU5ZGRhNmIxYjgxZWRiMjExNzYzZGJiNjJl
OWVhOGMyZjEuLmVlYWRjYmI5YjMwY2ViMDk0MGFkMzMwODM2NzRiN2QyNWE0NjM2ZGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdENvY29hLmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSwyNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIK
IAorbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0aWwgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RhdGljIGlubGluZSA6OnRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdCBhc3NlcnROU09iamVjdHNBcmVFcXVhbChjb25zdCBjaGFyKiBleHBlY3RlZEV4
cHJlc3Npb24sIGNvbnN0IGNoYXIqIGFjdHVhbEV4cHJlc3Npb24sIFQgKmV4cGVjdGVkLCBVICph
Y3R1YWwpCit7CisgICAgaWYgKCghZXhwZWN0ZWQgJiYgIWFjdHVhbCkgfHwgW2V4cGVjdGVkIGlz
RXF1YWw6YWN0dWFsXSkKKyAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
cygpOworICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpFcUZhaWx1cmUoZXhwZWN0ZWRF
eHByZXNzaW9uLCBhY3R1YWxFeHByZXNzaW9uLCB0b1NURChbZXhwZWN0ZWQgZGVzY3JpcHRpb25d
KSwgdG9TVEQoW2FjdHVhbCBkZXNjcmlwdGlvbl0pLCBmYWxzZSAvKiBpZ25vcmluZ19jYXNlICov
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQorCisjZGVmaW5lIEVYUEVDVF9OU19FUVVBTChleHBlY3RlZCwgYWN0dWFsKSBcCisgICAgRVhQ
RUNUX1BSRURfRk9STUFUMihUZXN0V2ViS2l0QVBJOjpVdGlsOjphc3NlcnROU09iamVjdHNBcmVF
cXVhbCwgZXhwZWN0ZWQsIGFjdHVhbCkKKwogI2lmIFVTRShDRykKIAogc3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IENHUmVjdCYpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvaW5zZXJ0LXRleHQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL2luc2VydC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg4M2EzZWIyZGM2MGQ5Nzc1YTA4
MjYzYjA1Yjk1Y2FiMWM2M2M0OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL2luc2VydC10ZXh0Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2xldCBmaXJlZEV2ZW50cyA9IFtdOworCitmdW5j
dGlvbiBsb2dFdmVudChldmVudCkKK3sKKyAgICBmaXJlZEV2ZW50cy5wdXNoKGV2ZW50LnR5cGUp
OworfQorCitmdW5jdGlvbiBzZXR1cFRlc3QoKQoreworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZG9jdW1lbnQuYm9k
eS5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAg
ZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGxvZ0V2ZW50LCBmYWxzZSk7
CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIGxvZ0V2ZW50LCBm
YWxzZSk7CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBsb2dF
dmVudCwgZmFsc2UpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldHVw
VGVzdCgpIiBjb250ZW50ZWRpdGFibGU9InRydWUiPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394300</attachid>
            <date>2020-03-23 13:57:36 -0700</date>
            <delta_ts>2020-03-23 13:57:36 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-209380-20200323135735.patch</filename>
            <type>text/plain</type>
            <size>20667</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Mjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI3ZjUzYjUyY2Q1NmQ5MDE2
ZTMwZTY1YTg5YjUxMmFmOGUzNDFkMjMuLjQ1MDVhN2U0OWQ3NzgyNDk0NzczYTBmOGE1ODZjZGQ0
NmNmNDFiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMjMgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0aW5nIHRl
eHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9hcmQgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM4MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXMgYSB3b3JrYXJvdW5kIGZvciBzaXRlcyB0aGUgaW1w
bGVtZW50IHRoZWlyIG93biBlZGl0aW5nIHN5c3RlbSAoZS5nLiBmYWNlYm9vay5jb20pCisgICAg
ICAgIGFkZCBhIG5ldyBpbnNlcnRpb24gb3B0aW9uIHRoYXQgbWFrZXMgdGhlIGluc2VydGlvbiBo
YXZpbmcgYSBwYXNzaW5nIHJlc2VtYmxhbmNlCisgICAgICAgIG9mIGEgcGVyc29uIHR5cGluZy4g
VGhlIHJlc2VtYmxhbmNlIGlzIGFjaGlldmVkIGJ5IGRpc3BhdGNoaW5nIERPTSBldmVudHMgd2l0
aCB0eXBlCisgICAgICAgICJrZXlkb3duIiwgImtleXVwIiwgYW5kICJjaGFuZ2UiLgorCisgICAg
ICAgICogU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVjb2Rl
KToKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgdGhlIG5ldyBvcHRpb24uCisKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaDogRGVmYXVsdCB0aGUgbmV3IG9wdGlv
biwgc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0LAorICAgICAgICB0byBmYWxzZSB0byBrZWVw
IG91ciBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRTaW11
bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb25dKTogQWRkZWQuIFJldHVybnMgTk8gd2hl
bgorICAgICAgICBidWlsZGluZyB3aXRob3V0IFVTRShURVhUX0lOVEVSQUNUSU9OX0FERElUSU9O
UykgdG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGluc2VydFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDph
bHRlcm5hdGl2ZXM6c3R5bGU6XSk6CisgICAgICAgIFNldCB0aGUgc2hvdWxkU2ltdWxhdGVLZXli
b2FyZElucHV0IG9wdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVk
VGV4dEFzeW5jKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisgICAgICAgIElmIHNo
b3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dCBpcyBmYWxzZSB0aGVuIGRvIHdoYXQgd2UgZG8gbm93
LiBPdGhlcndpc2UsIGRpc3BhdGNoIGEgRE9NIGV2ZW50CisgICAgICAgIG9mIHR5cGUgImtleWRv
d24iIGFuZCBwZXJmb3JtIHRoZSBpbnNlcnRpb24uIFRoZW4gZGlzcGF0Y2ggRE9NIGV2ZW50cyBv
ZiB0eXBlICJrZXl1cCIgYW5kICJjaGFuZ2UiLiAKKwogMjAyMC0wMy0yMCAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBpbnNlcnREaWN0YXRlZFRleHRB
c3luYygpIHRha2UgYW4gSW5zZXJ0VGV4dE9wdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcAppbmRleCA4MTY0NDI2MTJhMjI3OWE4YzMz
YmQ1Y2YzYThlMjQwMzc0Njc1MGJlLi5hOTgyN2Q3OTUzZWU5Mjc3NDIzMzBmY2I5MDY1NDMzYTdl
ZDRhZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0
T3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9w
dGlvbnMuY3BwCkBAIC0zMyw2ICszMyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJLaXQ6Oklu
c2VydFRleHRPcHRpb25zPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlCiAgICAg
ZW5jb2RlciA8PCBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwOwogICAgIGVuY29kZXIgPDwgb3B0
aW9ucy5zdXBwcmVzc1NlbGVjdGlvblVwZGF0ZTsKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMucHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlOworICAgIGVuY29kZXIgPDwgb3B0aW9ucy5zaG91bGRTaW11bGF0
ZUtleWJvYXJkSW5wdXQ7CiAgICAgZW5jb2RlciA8PCBvcHRpb25zLmVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbzsKIH0KIApAQCAtNDUsNiArNDYsOCBAQCBPcHRpb25hbDxXZWJLaXQ6Okluc2VydFRl
eHRPcHRpb25zPiBBcmd1bWVudENvZGVyPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+OjpkZQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0
aW9ucy5wcm9jZXNzaW5nVXNlckdlc3R1cmUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5zaG91bGRTaW11bGF0ZUtleWJvYXJk
SW5wdXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUob3B0aW9ucy5lZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIHJldHVybiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmgKaW5kZXggY2QyMDFhYjJiYWQzZDI5M2RmOGIz
ZWEwMzg3ZTM0MWFkNGI3MGI1MS4uNjM2ZTkwNGUzMzI5OTY0N2E0ZDk0Yzc3NDMyN2M1OGY2Y2Y4
MmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9w
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9u
cy5oCkBAIC0zNCw2ICszNCw3IEBAIHN0cnVjdCBJbnNlcnRUZXh0T3B0aW9ucyB7CiAgICAgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCB7IGZhbHNlIH07CiAgICAgYm9vbCBzdXBwcmVzc1NlbGVjdGlv
blVwZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUgeyBmYWxz
ZSB9OworICAgIGJvb2wgc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0IHsgZmFsc2UgfTsKICAg
ICBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIHsgRWRp
dGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IDBkMzYxZGZlMjFhNmI3NDBmYTA5ZmNhNTJlNDYyNDZhOTIzZThhZDcuLjVmYWIzZDI1
YThhMzgyZGFlNTdjYjljMDgwZjYwYWMxZmQ5OGIwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDY5
Nyw2ICs0Njk3LDE1IEBAIC0gKHZvaWQpZGVsZXRlQmFja3dhcmQKICAgICBfcGFnZS0+ZXhlY3V0
ZUVkaXRDb21tYW5kKCJkZWxldGVCYWNrd2FyZCJfcyk7CiB9CiAKKy0gKEJPT0wpX3Nob3VsZFNp
bXVsYXRlS2V5Ym9hcmRJbnB1dE9uVGV4dEluc2VydGlvbgoreworI2lmIFVTRShURVhUX0lOVEVS
QUNUSU9OX0FERElUSU9OUykKKyAgICByZXR1cm4gW3NlbGYgX3Nob3VsZFNpbXVsYXRlS2V5Ym9h
cmRJbnB1dE9uVGV4dEluc2VydGlvbkludGVybmFsXTsKKyNlbHNlCisgICAgcmV0dXJuIE5POwor
I2VuZGlmCit9CisKIC8vIEluc2VydHMgdGhlIGdpdmVuIHN0cmluZywgcmVwbGFjaW5nIGFueSBz
ZWxlY3RlZCBvciBtYXJrZWQgdGV4dC4KIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKilh
U3RyaW5nVmFsdWUKIHsKQEAgLTQ3MDQsNyArNDcxMyw3IEBAIC0gKHZvaWQpaW5zZXJ0VGV4dDoo
TlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKIAogICAgIFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMg
b3B0aW9uczsKICAgICBvcHRpb25zLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSA9IFtrZXlib2FyZCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlzQ2FsbGluZ0lucHV0RGVsZWdhdGUpXSAmJiBr
ZXlib2FyZC5pc0NhbGxpbmdJbnB1dERlbGVnYXRlOwotCisgICAgb3B0aW9ucy5zaG91bGRTaW11
bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25U
ZXh0SW5zZXJ0aW9uXTsKICAgICBfcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwg
V2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKQEAgLTQ3MTgs
NyArNDcyNywxMCBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICopYVN0cmluZ1ZhbHVl
IGFsdGVybmF0aXZlczooTlNBcnJheTxOU1N0cmluZyAqPiAqKQogICAgICAgICBCT09MIGlzTG93
Q29uZmlkZW5jZSA9IHN0eWxlID09IFVJVGV4dEFsdGVybmF0aXZlU3R5bGVMb3dDb25maWRlbmNl
OwogICAgICAgICBhdXRvIHRleHRBbHRlcm5hdGl2ZXMgPSBhZG9wdE5TKFtbTlNUZXh0QWx0ZXJu
YXRpdmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6YVN0cmluZ1ZhbHVlIGFsdGVybmF0
aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMgaXNMb3dDb25maWRlbmNlOmlzTG93Q29uZmlkZW5jZV0p
OwogICAgICAgICBXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgdGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlIHsgdGV4dEFsdGVybmF0aXZlcy5nZXQoKSwgTlNNYWtlUmFuZ2UoMCwgYVN0
cmluZ1ZhbHVlLmxlbmd0aCkgfTsKLSAgICAgICAgX3BhZ2UtPmluc2VydERpY3RhdGVkVGV4dEFz
eW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB9LCB7IH0p
OworCisgICAgICAgIFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKKyAgICAgICAg
b3B0aW9ucy5zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXQgPSBbc2VsZiBfc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uXTsKKyAgICAgICAgX3BhZ2UtPmluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZSB9LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBi
YzM1N2E3MTdjNjc4Mjk1YmIwNWQ5NDkwYjMyODU4YzJjZjNkMzRhLi42MDAzNTU2ZTE5MDEyZGVl
OTMxNDA0ZmZhZmZhMDA3YmU5Nzg3YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVu
dE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1l
bnQuaD4KQEAgLTIwNSw4ICsyMDYsMTcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRl
eHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmUKICAgICBp
ZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZyB7IH0pOwogCisgICAgUmVm
UHRyPEVsZW1lbnQ+IGZvY3VzZWRFbGVtZW50ID0gZnJhbWUuZG9jdW1lbnQoKSA/IGZyYW1lLmRv
Y3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkgOiBudWxscHRyOworICAgIGlmIChmb2N1c2VkRWxl
bWVudCAmJiBvcHRpb25zLnNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkKKyAgICAgICAgZm9j
dXNlZEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5
ZG93bkV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cykpOworCiAgICAgQVNTRVJUKCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKICAg
ICBmcmFtZS5lZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVMb2NhdGlvbnMsIG51bGxwdHIgLyogdHJpZ2dlcmluZ0V2ZW50ICovKTsKKworICAgIGlm
IChmb2N1c2VkRWxlbWVudCAmJiBvcHRpb25zLnNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkg
eworICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0Nh
bmNlbGFibGU6OlllcykpOworICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVt
b3RlVG9rZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDk2MDY2NjNkM2YzMjg1YzlmMmU0NWYxZjJiMWJlNjZhZGE2MjAxZTUuLjk5OTVmMGZl
MDE5MDc1OGVlNTU1ZDM5NTZhMTFlZGIyOGNkYTMzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01Mjk3LDEzICs1Mjk3LDIyIEBAIHZvaWQg
V2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGlu
Z1JhbmdlJiByZXBsYWNlbWVuCiAgICAgCiAgICAgaWYgKG9wdGlvbnMucmVnaXN0ZXJVbmRvR3Jv
dXApCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRp
b25VbmRvR3JvdXBpbmcoKSk7Ci0gICAgCisKKyAgICBSZWZQdHI8RWxlbWVudD4gZm9jdXNlZEVs
ZW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1l
bnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIG9wdGlvbnMuc2hvdWxk
U2ltdWxhdGVLZXlib2FyZElucHV0KQorICAgICAgICBmb2N1c2VkRWxlbWVudC0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisKICAgICBpZiAoIWZyYW1l
LmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4dDog
bWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBk
b24ndCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0aGF0
IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCiAgICAgICAgIGZyYW1lLmVkaXRv
cigpLmluc2VydFRleHQodGV4dCwgbnVsbHB0ciwgcmVwbGFjZXNUZXh0ID8gVGV4dEV2ZW50SW5w
dXRBdXRvY29tcGxldGlvbiA6IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwogICAgIH0gZWxzZQog
ICAgICAgICBmcmFtZS5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24odGV4dCk7CisKKyAgICBp
ZiAoZm9jdXNlZEVsZW1lbnQgJiYgb3B0aW9ucy5zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXQp
IHsKKyAgICAgICAgZm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkua2V5dXBFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgZm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgfQogfQogCiB2b2lkIFdlYlBh
Z2U6Omhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmYThjNmMyNGRlZmI2ODUyNTM5YWMyNjc4OGEzYzcwYzUxZjZiYWUyLi5lY2Q5MTZi
MTAyNzU2NGUwY2U1NjBiYzdkYjFmMWE1YjcyOTc1MjM1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDMtMjMg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5z
ZXJ0aW5nIHRleHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRpbmcga2V5Ym9h
cmQgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTM4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0NDUxMDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0
IERPTSBldmVudHMgYXJlIGRpc3BhdGNoZWQgb24gaW5zZXJ0aW9uIHdoZW4gc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0CisgICAgICAgIGlzIGVuYWJsZWQuCisKKyAgICAgICAgSSBhbHNvIGFk
ZGVkIGEgY29udmVuaWVuY2UgYXNzZXJ0aW9uIGZ1bmN0aW9uLCBFWFBFQ1RfTlNfRVFVQUwsIHRo
YXQgY2FuCisgICAgICAgIGNvbXBhcmUgTlNPYmplY3RzIHNvIGxvbmcgYXMgdGhleSBpbXBsZW1l
bnQgLWlzRXF1YWwgYW5kIC1kZXNjcmlwdGlvbi4gSQorICAgICAgICBtYWtlIHVzZSBvZiB0aGlz
IHRvIGNvbXBhcmUgdGhlIGFjdHVhbCBhcnJheSBvZiBmaXJlZCBET00gZXZlbnRzIHR5cGVzIHRv
CisgICAgICAgIGFuIGV4cGVjdGVkIGFycmF5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6c2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uT3Zl
cnJpZGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0Q29jb2EuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6
OmFzc2VydE5TT2JqZWN0c0FyZUVxdWFsKTogQWRkZWQuCisgICAgICAgIChFWFBFQ1RfTlNfRVFV
QUwpOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4dC5odG1s
OiBBZGRlZC4KKwogMjAyMC0wMy0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudCgpIHNob3VsZCB0
ZWxsIGNsaWVudCBvZiByZWZvY3VzZWQgZWxlbWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4MWQ3ZDVmYWQyNDM2ZWQyYzk1NTQ3Njg0MjU3YzEwY2QzMWYyNDFiLi42NTZjZTBjNTI0ZTQ5
MzQ4MmIyZDdmYThiZGM4YzM3YjNhZTk2NzU4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTg2LDYgKzk4Niw3IEBACiAJCUNFMzUyNEZBMUIxNDQzODkwMDI4QTdDNSAvKiBpbnB1dC1mb2N1
cy1ibHVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UzNTI0RjUxQjE0MkJCQjAwMjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRt
bCAqLzsgfTsKIAkJQ0U0NDlFMTEyMUFFMEY3MjAwRTdBREExIC8qIFdLV2ViVmlld0ZpbmRTdHJp
bmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ0
OUUxMDIxQUUwRjcyMDBFN0FEQTEgLyogV0tXZWJWaWV3RmluZFN0cmluZy5tbSAqLzsgfTsKIAkJ
Q0U0RDVERTcxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0RDVERTUxRjY3NDNC
QTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovOyB9OworCQlDRTZEMEVFMzI0
MjZCOTMyMDAyQUQ5MDEgLyogaW5zZXJ0LXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZEMEVFMjI0MjZCOEVEMDAyQUQ5MDEg
LyogaW5zZXJ0LXRleHQuaHRtbCAqLzsgfTsKIAkJQ0U2RTgxQTAyMEE2OTM1RjAwRTJDODBGIC8q
IFNldFRpbWVvdXRGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNkU4MTlGMjBBNjkzNUYwMEUyQzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rp
b24ubW0gKi87IH07CiAJCUNFNkU4MUE0MjBBOTMzRDUwMEUyQzgwRiAvKiBzZXQtdGltZW91dC1m
dW5jdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFNkU4MUEzMjBBOTMzQjgwMEUyQzgwRiAvKiBzZXQtdGltZW91dC1mdW5jdGlv
bi5odG1sICovOyB9OwogCQlDRTc4NzA1RjIxMDdBQjk4MDA1M0FDNjcgLyogTW92ZU9ubHlMaWZl
Y3ljbGVMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U3ODcwNUQyMTA3QUI4QzAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2Vy
LmNwcCAqLzsgfTsKQEAgLTEzNzYsNiArMTM3Nyw3IEBACiAJCQkJNTExMEZDRjYxRTAxQ0Q4MzAw
NkY4RDBCIC8qIEluZGV4VXBncmFkZS5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTJFRkYwNkNEMUQ4QTQyOUEwMDA0QkIzMCAvKiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRv
Y3VtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0UzNTI0RkExQjE0NDM4OTAw
MjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQlDRTZEMEVFMzI0MjZCOTMyMDAyQUQ5MDEgLyogaW5zZXJ0LXRleHQuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1N0Y1NkE1QzFDN0Y4Q0MxMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9u
QWN0aW9uVHJ1c3RlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUM5QjRBRDJDMUVD
QTZGN0YwMEY1RkVBMCAvKiBqcy1hdXRvcGxheS1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUM5OUI2NzVEMUUzOTcyMjAwMEZDNkM4MCAvKiBqcy1wbGF5LXdpdGgtY29udHJv
bHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTI1ODIsNiArMjU4NCw3IEBACiAJCUNF
NTBEOEM4MUM4NjY1Q0UwMDcyRUE1QSAvKiBPcHRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0U2NDBDQTUyMzcwQTRGMzAwQzVDQUE0IC8qIFRlc3RDb2NvYS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBUZXN0Q29jb2EuaDsgcGF0aCA9IGNvY29hL1Rlc3RDb2NvYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTY0MENBNjIzNzBBNEYzMDBDNUNBQTQgLyogVGVzdENvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdENvY29hLm1tOyBwYXRoID0gY29jb2EvVGVz
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTZEMEVFMjI0MjZCOEVE
MDAyQUQ5MDEgLyogaW5zZXJ0LXRleHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9
ICJpbnNlcnQtdGV4dC5odG1sIjsgcGF0aCA9ICJpb3MvaW5zZXJ0LXRleHQuaHRtbCI7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0U2RTgxOUYyMEE2OTM1RjAwRTJDODBGIC8qIFNl
dFRpbWVvdXRGdW5jdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNldFRpbWVvdXRGdW5j
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2RTgxQTMyMEE5MzNCODAw
RTJDODBGIC8qIHNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IG5hbWUgPSAic2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCI7IHBhdGggPSAiaW9zL3NldC10aW1l
b3V0LWZ1bmN0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNFNzg3
MDVDMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY3NCw2ICszNjc3LDcgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxNkJFRDcyMzA0QTFEMTAwQjRBMTY3IC8q
IGNvbXBvc2l0ZWQuaHRtbCAqLywKKwkJCQlDRTZEMEVFMjI0MjZCOEVEMDAyQUQ5MDEgLyogaW5z
ZXJ0LXRleHQuaHRtbCAqLywKIAkJCQkwRjM0MDc3NzIzMDM4MjU0MDA2MEExQTAgLyogb3ZlcmZs
b3ctc2Nyb2xsLmh0bWwgKi8sCiAJCQkJQTFDNEZCNzIxQkFDRDFCNzAwMzc0MkQwIC8qIHBhZ2Vz
LnBhZ2VzICovLAogCQkJCUNFNkU4MUEzMjBBOTMzQjgwMEUyQzgwRiAvKiBzZXQtdGltZW91dC1m
dW5jdGlvbi5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCmluZGV4IDc0OThiMjhlNDQ0ZTk5ZDkzMDk0Mjkw
YTBkMWEwYzQ3YWFmMzI5YTIuLmUyZDg0M2I4YzNkMGRjNmRiNmZmY2RiNGRmYmFmMjIxMzZhYzhi
MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5w
dXRUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2Fy
ZElucHV0VGVzdHNJT1MubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIklQYWRVc2VySW50
ZXJmYWNlU3dpenpsZXIuaCIKICNpbXBvcnQgIkluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCIKICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKICNpbXBv
cnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1w
b3J0ICJVSUtpdFNQSS5oIgpAQCAtMzcsNiArMzgsMTAgQEAKICNpbXBvcnQgPFdlYktpdExlZ2Fj
eS9XZWJFdmVudC5oPgogI2ltcG9ydCA8Y21hdGg+CiAKK0BpbnRlcmZhY2UgV0tDb250ZW50Vmll
dyAoKQorLSAoQk9PTClfc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9u
OworQGVuZAorCiBAaW50ZXJmYWNlIElucHV0QXNzaXN0YW50SXRlbVRlc3RpbmdXZWJWaWV3IDog
VGVzdFdLV2ViVmlldwogKyAoVUlCYXJCdXR0b25JdGVtR3JvdXAgKilsZWFkaW5nSXRlbXNGb3JX
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwogKyAoVUlCYXJCdXR0b25JdGVtR3JvdXAgKil0
cmFpbGluZ0l0ZW1zRm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKQEAgLTY0Nyw2ICs2
NTIsNDcgQEAgVEVTVChLZXlib2FyZElucHV0VGVzdHMsIFN1cHByZXNzU29mdHdhcmVLZXlib2Fy
ZCkKICAgICBFWFBFQ1RfVFJVRShVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0YW5jZS5fc2hvdWxk
U3VwcHJlc3NTb2Z0d2FyZUtleWJvYXJkKTsKIH0KIAorc3RhdGljIEJPT0wgc2hvdWxkU2ltdWxh
dGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uT3ZlcnJpZGUoaWQsIFNFTCkKK3sKKyAgICBy
ZXR1cm4gWUVTOworfQorCitURVNUKEtleWJvYXJkSW5wdXRUZXN0cywgSW5zZXJ0VGV4dFNpbXVs
YXRpbmdLZXlib2FyZElucHV0KQoreworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgb3ZlcnJp
ZGVTaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24geyBOU0NsYXNzRnJv
bVN0cmluZyhAIldLQ29udGVudFZpZXciKSwgQHNlbGVjdG9yKF9zaG91bGRTaW11bGF0ZUtleWJv
YXJkSW5wdXRPblRleHRJbnNlcnRpb24pLCByZWludGVycHJldF9jYXN0PElNUD4oc2hvdWxkU2lt
dWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uT3ZlcnJpZGUpIH07CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVn
YXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbJl0oV0tXZWJWaWV3
ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lu
cHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0
ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpbnNlcnQtdGV4dCIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9j
dXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpA
ImhlbGxvIl07CisgICAgRVhQRUNUX05TX0VRVUFMKChAW0Aia2V5ZG93biIsIEAiYmVmb3JlaW5w
dXQiLCBAImlucHV0IiwgQCJrZXl1cCIsIEAiY2hhbmdlIl0pLCBbd2ViVmlldyBvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlyZWRFdmVudHMiXSk7Cit9CisKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKworVEVTVChLZXlib2FyZElucHV0VGVzdHMsIEluc2VydERpY3Rh
dGlvbkFsdGVybmF0aXZlc1NpbXVsYXRpbmdLZXlib2FyZElucHV0KQoreworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgb3ZlcnJpZGVTaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJ
bnNlcnRpb24geyBOU0NsYXNzRnJvbVN0cmluZyhAIldLQ29udGVudFZpZXciKSwgQHNlbGVjdG9y
KF9zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXRPblRleHRJbnNlcnRpb24pLCByZWludGVycHJl
dF9jYXN0PElNUD4oc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0T25UZXh0SW5zZXJ0aW9uT3Zl
cnJpZGUpIH07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIGF1
dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5
SGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJl
dHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2Vi
VmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJpbnNlcnQtdGV4dCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAg
IFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5n
ZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250
ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFsgQCJoZWxvIiBdIHN0
eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBFWFBFQ1RfTlNfRVFVQUwoKEBb
QCJrZXlkb3duIiwgQCJiZWZvcmVpbnB1dCIsIEAiaW5wdXQiLCBAImtleXVwIiwgQCJjaGFuZ2Ui
XSksIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmaXJlZEV2ZW50cyJd
KTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RDb2NvYS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0Q29jb2Eu
aAppbmRleCA2ZTQ1Mzk1OWRkYTZiMWI4MWVkYjIxMTc2M2RiYjYyZTllYThjMmYxLi5lZWFkY2Ji
OWIzMGNlYjA5NDBhZDMzMDgzNjc0YjdkMjVhNDYzNmRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RDb2NvYS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdENvY29hLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjUsOCArMjUsMjYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK3N0YXRpYyBpbmxpbmUgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgYXNzZXJ0
TlNPYmplY3RzQXJlRXF1YWwoY29uc3QgY2hhciogZXhwZWN0ZWRFeHByZXNzaW9uLCBjb25zdCBj
aGFyKiBhY3R1YWxFeHByZXNzaW9uLCBUICpleHBlY3RlZCwgVSAqYWN0dWFsKQoreworICAgIGlm
ICgoIWV4cGVjdGVkICYmICFhY3R1YWwpIHx8IFtleHBlY3RlZCBpc0VxdWFsOmFjdHVhbF0pCisg
ICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgICByZXR1cm4g
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWlsdXJlKGV4cGVjdGVkRXhwcmVzc2lvbiwgYWN0dWFs
RXhwcmVzc2lvbiwgdG9TVEQoW2V4cGVjdGVkIGRlc2NyaXB0aW9uXSksIHRvU1REKFthY3R1YWwg
ZGVzY3JpcHRpb25dKSwgZmFsc2UgLyogaWdub3JpbmdfY2FzZSAqLyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2RlZmluZSBFWFBF
Q1RfTlNfRVFVQUwoZXhwZWN0ZWQsIGFjdHVhbCkgXAorICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
VGVzdFdlYktpdEFQSTo6VXRpbDo6YXNzZXJ0TlNPYmplY3RzQXJlRXF1YWwsIGV4cGVjdGVkLCBh
Y3R1YWwpCisKICNpZiBVU0UoQ0cpCiAKIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0mLCBjb25zdCBDR1JlY3QmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL2luc2VydC10ZXh0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU4ODNhM2ViMmRjNjBkOTc3NWEwODI2M2IwNWI5NWNhYjFjNjNj
NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9pbnNlcnQtdGV4
dC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitsZXQgZmlyZWRFdmVudHMgPSBbXTsKKworZnVuY3Rpb24gbG9nRXZlbnQoZXZl
bnQpCit7CisgICAgZmlyZWRFdmVudHMucHVzaChldmVudC50eXBlKTsKK30KKworZnVuY3Rpb24g
c2V0dXBUZXN0KCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5l
cigiYmVmb3JlaW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3VtZW50LmJvZHkuYWRk
RXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3VtZW50LmJv
ZHkuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGRvY3Vt
ZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgbG9nRXZlbnQsIGZhbHNlKTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXR1cFRlc3QoKSIgY29udGVudGVk
aXRhYmxlPSJ0cnVlIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>