<?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>196272</bug_id>
          
          <creation_ts>2019-03-26 14:57:13 -0700</creation_ts>
          <short_desc>[iOS] Should be able to dismiss picker or popover using the keyboard</short_desc>
          <delta_ts>2019-04-03 10:06:13 -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>iPhone / iPad</rep_platform>
          <op_sys>iOS 12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196287</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=158327</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>190571</blocked>
    
    <blocked>195819</blocked>
    
    <blocked>196360</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1521459</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-26 14:57:13 -0700</bug_when>
    <thetext>Pressing the Escape key or Command + . should dismiss a picker or popover on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521460</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-26 14:57:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/48943170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521609</commentid>
    <comment_count>2</comment_count>
      <attachid>366045</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-26 21:15:21 -0700</bug_when>
    <thetext>Created attachment 366045
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522097</commentid>
    <comment_count>3</comment_count>
      <attachid>366045</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-28 10:36:49 -0700</bug_when>
    <thetext>Comment on attachment 366045
Patch and layout test

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

&gt; Source/WebKit/UIProcess/ios/forms/WKFormPeripheralBase.mm:75
&gt; +    UIPhysicalKeyboardEvent *keyEvent = (UIPhysicalKeyboardEvent *)event;

AccessoryDone can be called multiple times. Doesn&apos;t cause an issue, but would be better to only call it once. Moreover, control may want want to distinguish between key events when its UI is presented vs key events when its UI is not on screen (e.g. &lt;select&gt; still supports typeahead and arrow keys even when its picker/popover is not on screen). To support this, will add @property (nonatomic, readonly) editing; &lt;--- kinda don&apos;t like this name, went with it to match naming of beginEditing and endEditing and since I toggle YES/NO for _editing in these functions. We will early return before this line if !_editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522113</commentid>
    <comment_count>4</comment_count>
      <attachid>366184</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-28 11:06:46 -0700</bug_when>
    <thetext>Created attachment 366184
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522124</commentid>
    <comment_count>5</comment_count>
      <attachid>366184</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-28 11:14:32 -0700</bug_when>
    <thetext>Comment on attachment 366184
Patch and layout test

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

&gt; LayoutTests/fast/forms/ios/dismiss-picker-using-keyboard.html:72
&gt; +            UIHelper.keyDown(&quot;escape&quot;);

This should be:

UIHelper.keyDown(keyCommand.key, modifiers=keyCommand.modifiers);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522126</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-28 11:17:47 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #5)
&gt; Comment on attachment 366184 [details]
&gt; Patch and layout test
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=366184&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/forms/ios/dismiss-picker-using-keyboard.html:72
&gt; &gt; +            UIHelper.keyDown(&quot;escape&quot;);
&gt; 
&gt; This should be:
&gt; 
&gt; UIHelper.keyDown(keyCommand.key, modifiers=keyCommand.modifiers);

Python on the 🧠. Not likely valid JS, yet:

UIHelper.keyDown(keyCommand.key, keyCommand.modifiers);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522127</commentid>
    <comment_count>7</comment_count>
      <attachid>366186</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-28 11:19:51 -0700</bug_when>
    <thetext>Created attachment 366186
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522255</commentid>
    <comment_count>8</comment_count>
      <attachid>366216</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-28 15:28:23 -0700</bug_when>
    <thetext>Created attachment 366216
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523764</commentid>
    <comment_count>9</comment_count>
      <attachid>366216</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-03 10:06:11 -0700</bug_when>
    <thetext>Comment on attachment 366216
Patch and layout test

Clearing flags on attachment: 366216

Committed r243808: &lt;https://trac.webkit.org/changeset/243808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523765</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-03 10:06:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366045</attachid>
            <date>2019-03-26 21:15:21 -0700</date>
            <delta_ts>2019-03-28 11:06:45 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-196272-20190326211520.patch</filename>
            <type>text/plain</type>
            <size>39107</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDczOTYyZjFkM2JlYTQ1MTM2
YzdkYmI3Nzk3OWUwY2IyZDYxMTMyMzcuLjY2ODY5M2E5MGU5ZTBmY2NlOTM4MTIyNTYxYWRkMTJl
MzE3NDM5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDMtMjYgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNob3VsZCBiZSBhYmxl
IHRvIGRpc21pc3MgcGlja2VyIG9yIHBvcG92ZXIgdXNpbmcgdGhlIGtleWJvYXJkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyNzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4OTQzMTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVyY2VwdCBrZXkgZXZlbnRzIGFuZCByb3V0ZSB0aGVtIHRv
IHRoZSBjdXJyZW50IGlucHV0IHBlcmlwaGVyYWwgKGlmIHdlIGhhdmUgb25lKS4gQWRkIGEgYmFz
ZSBrZXkgZXZlbnQgaGFuZGxlcgorICAgICAgICBmb3IgYWxsIGZvcm0gcGVyaXBoZXJhbHMgdGhh
dCBkaXNtaXNzZXMgdGhlIGFjY2Vzc29yeSB3aGVuIGVpdGhlciB0aGUgRXNjYXBlIGtleSBpcyBw
cmVzc2VkIG9yIENvbW1hbmQgKyAuIGlzIHByZXNzZWQuCisgICAgICAgIEkgd2lsbCBmaXggdGhp
cyBpc3N1ZSBmb3IgdGhlIGZpbGUgdXBsb2FkIHBpY2tlci9wb3BvdmVyIGluIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjg3Pi4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6IEFkZCBmaWxlIFdLRm9ybVBlcmlwaGVyYWxCYXNlLm1tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGVuZEVkaXRpbmdBbmRVcGRhdGVGb2N1c0FwcGVhcmFuY2VXaXRoUmVhc29u
XSk6IEFkZGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVy
Rm9yV2ViVmlld10pOiBXcml0ZSBpbiB0ZXJtcyBvZiAtZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnB1dFZpZXddKTogQ29kZSBz
dHlsZSBuaXQgd2hpbGUgSSBhbSBoZXJlOyBhZGQgYW4gZW1wdHkgbGluZSB0byBkZW1hcmNhdGUg
dGhlICJjcmF6eSIKKyAgICAgICAgY29kZSB0aGF0IHRoZSBGSVhNRSBpcyByZWZlcnJpbmcgdG8g
YW5kIHNob3VsZCBpZGVhbGx5IGJlIHJlbW92ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGlzIHNhbmUg
dG8gYWx3YXlzIGRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjY2Vzc29yeURvbmVdKTog
V2hlbiB0aGUgYWNjZXNzb3J5IGlzIGRpc21pc3NlZCB2aWEgdGhlIERvbmUgYnV0dG9uIChpUGhv
bmUpIG9yIGJ5IHByZXNzaW5nCisgICAgICAgIEVzY2FwZSBvciBDb21tYW5kICsgLiB1c2luZyBh
IGhhcmR3YXJlIGtleWJvYXJkIChpUGhvbmUgb3IgaVBhZCkgdGhlbiBlbmQgdGhlIGN1cnJlbnQg
ZWRpdGluZyBzZXNzaW9uLCBidXQKKyAgICAgICAgZG8gbm90IHJlc2lnbiBmaXJzdCByZXNwb25k
ZXIgc3RhdHVzIGFzIHRoZSBwYWdlIGFjdGl2YXRpb24gc3RhdGUgc2hvdWxkIG5vdCBiZSBjaGFu
Z2VkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVLZXlVSUV2ZW50Ol0pOiBCcmlu
ZyBiYWNrIHRoaXMgY29kZSB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKFVJS0lUX0tFWUJPQVJEX0FE
RElUSU9OUykKKyAgICAgICAgYXMgd2UgbmVlZCB0byByb3V0ZSBrZXkgZXZlbnRzIHRvIHRoZSBp
bnB1dCBwZXJpcGhlcmFsIChpZiB3ZSBoYXZlIG9uZSkuIElmIHRoZSBpbnB1dCBwZXJpcGhlcmFs
IGhhbmRsZXMgaXQKKyAgICAgICAgdGhlbiB3ZSdyZSBkb25lOiBubyBuZWVkIHRvIGxldCBVSUtp
dCBvciBXZWJLaXQgaGFuZGxlIGl0IHdoZW4gYnVpbGRpbmcgd2l0aCBVU0UoVUlLSVRfS0VZQk9B
UkRfQURESVRJT05TKSwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgaW5wdXQgcGVyaXBo
ZXJhbCBkb2VzIG5vdCBoYW5kbGUgaXQgdGhlbiBkbyB3aGF0IHdlIGRvIG5vdy4KKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQ
cmV2aW91c05vZGU6Y2hhbmdpbmdBY3Rpdml0eVN0YXRlOnVzZXJPYmplY3Q6XSk6CisgICAgICAg
IElmIHRoZSBlbGVtZW50IGlzIHJlLWZvY3VzZWQgYW5kIHdlIGhhdmUgYW4gaW5wdXQgcGVyaXBo
ZXJhbCB0aGVuIHdlIHdhbnQgdG8gZW5zdXJlIHdlIGFyZSBmaXJzdCByZXNwb25kZXIsCisgICAg
ICAgIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LCB1cGRhdGUgdGhlIGFjY2Vzc29yeSBhbmQg
dGVsbCB0aGUgcGVyaXBoZXJhbCB0aGF0IGVkaXRpbmcgaGFzIGJlZ3VuIChhZ2FpbikuCisgICAg
ICAgIEZvciBhbGwgb3RoZXIgZWxlbWVudCByZS1mb2N1c2luZyB3aGVyZSB3ZSBkb24ndCBoYXZl
IGEgcGVyaXBoZXJhbCBkbyB3aGF0IHdlIGRvIG5vdy4gQWxzbywgdXBkYXRlIF9pc0VkaXRhYmxl
CisgICAgICAgIHRvIHJlZmxlY3Qgd2hldGhlciB0aGUgZm9jdXNlZCBlbGVtZW50IGNvbnRhaW5z
IHNlbGVjdGFibGUgdGV4dC4gVGhpcyBpcyB3aGF0IFVJS2l0IHdhbnRzIHRvIGtub3cgd2hlbiBp
dCBxdWVyaWVzCisgICAgICAgIC1pc0VkaXRhYmxlLiBOb3cgdGhhdCB3ZSBubyBsb25nZXIgYmx1
ciB0aGUgZm9jdXNlZCBlbGVtZW50IG9uIGlQYWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBkaXNtaXNz
ZWQgYW5kIGtlZXAgdGhlCisgICAgICAgIHBlcmlwaGVyYWwgdW50aWwgdGhlcmUgaXMgYSBmb2N1
cyBjaGFuZ2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBnaXZlIHRoZSBjb3JyZWN0IGFuc3dl
ciB0byBVSUtpdCBvbiB2aWV3CisgICAgICAgIGVkaXRhYmlsaXR5LiBPdGhlcndpc2UsIFVJS2l0
IHRoaW5rcyBpdCBuZWVkcyB0byB1cGRhdGUgdGhlIHRleHQgc2VsZWN0aW9uIHN0YXRlIHdoZW4g
YSBwb3B1cCBidXR0b24gaXMgdGFwcGVkCisgICAgICAgIGFnYWluIChhcyBwYXJ0IG9mIGl0cyBn
ZXN0dXJlIHJlY29nbml6ZXIgbG9naWMpIGFuZCB0aGlzIGNhdXNlcyBhbiBhc3NlcnRpb24gZmFp
bHVyZSBpbiBVSUtpdCBhZnRlciBpdCBjYWxscyBiYWNrCisgICAgICAgIGludG8gdXMgdG8gYXNr
IGZvciBzZWxlY3Rpb24gZGV0YWlscywgd2hpY2ggd2UgY29ycmVjdGx5IHJlc3BvbmQgd2l0aCB0
aGUgZXF1aXZhbGVudCBvZiAid2UgaGF2ZSBub25lIiBhbmQgaXMKKyAgICAgICAgbm90IHRoZSBh
bnN3ZXIgVUlLaXQgZXhwZWN0cyBzaW5jZSB3ZSB0b2xkIGl0IHdlIGFyZSBlZGl0YWJsZS4gKEN1
cnJlbnRseSB3ZSBtYW5hZ2UgdG8gZ2V0IGF3YXkgd2l0aCB0ZWxsaW5nIFVJS2l0CisgICAgICAg
IHdlIGFyZSBhbHdheXMgZWRpdGFibGUgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gcGVy
Zm9ybSBhIHNlbGVjdGlvbiBvcGVyYXRpb24gd2hlbiB3ZSBoYXZlIGEgcG9wb3ZlciBvcGVuLgor
ICAgICAgICBDbG9zaW5nIHRoZSBwb3BvdmVyIGJsdXJzIHRoZSBlbGVtZW50LCBzZXR0aW5nIC1p
c0VkaXRhYmxlIHRvIE5PIGFuZCBkZWFsbG9jYXRlcyB0aGUgcGVyaXBoZXJhbCBhdm9pZGluZyB0
aGlzIGlzc3VlKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
Lm1tOgorICAgICAgICAoLVtXS0NvbG9yUG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10pOiBEaXNt
aXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAoLVtXS0Zvcm1Db2xvckNvbnRyb2wgaW5pdFdpdGhW
aWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5pdGlhbGl6ZXIuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBiZWdpbkVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tGb3JtQ29sb3JDb250cm9sIGVuZEVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tOgorICAgICAgICAoLVtXS0Zvcm1J
bnB1dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3Mg
aW5pdGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybUlucHV0Q29udHJvbCBkYXRlVGltZVBpY2tl
ckNhbGVuZGFyVHlwZV0pOiBXcml0ZSBpbiB0ZXJtcyBvZiBzZWxmLmNvbnRyb2wuCisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQb3BvdmVyIGNvbnRyb2xFbmRFZGl0aW5nXSk6IERpc21pc3MgdGhlIHBv
cG92ZXIgYW5kIHRlbGwgdGhlIGNvbnRyb2xsZXIgdGhhdCBlZGl0aW5nIGVuZGVkLgorICAgICAg
ICAoLVtXS0Zvcm1JbnB1dENvbnRyb2wgYmVnaW5FZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUlucHV0Q29udHJvbCBlbmRFZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLRm9ybUlucHV0Q29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaW5pdFdpdGhWaWV3OmNvbnRyb2w6XSk6IFRha2Ug
b3duZXJzaGlwIG9mIHRoZSBwYXNzZWQgV0tGb3JtQ29udHJvbC4KKyAgICAgICAgKC1bV0tGb3Jt
UGVyaXBoZXJhbEJhc2UgYmVnaW5FZGl0aW5nXSk6IFR1cm4gYXJvdW5kIGFuZCB0ZWxsIHRoZSBj
b250cm9sLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBlbmRFZGl0aW5nXSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBhc3Npc3RhbnRWaWV3XSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBjb250cm9sXSk6IFJldHVybiB0
aGUgY29udHJvbC4KKyAgICAgICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaGFuZGxlS2V5RXZl
bnQ6XSk6IERpc21pc3MgdGhlIGFjY2Vzc29yeSAoaW4gdGhlIHNhbWUgd2F5IHdlIGRpc21pc3Mg
d2hlbiB0aGUgRG9uZQorICAgICAgICBidXR0b24gaXMgcHJlc3NlZCBvbiBpUGhvbmUpIG9uIGtl
eWRvd24gb2YgdGhlIEVzY2FwZSBrZXkgb3Igd2hlbiB3ZSByZWNlaXZlIGEgVUlLZXlJbnB1dEVz
Y2FwZSBldmVudCAoZm9yCisgICAgICAgIENvbW1hbmQgKyAuKS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW06CisgICAgICAgICgtW1dLRm9ybVNlbGVj
dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5p
dGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgc2VsZWN0Um93OmluQ29t
cG9uZW50OmV4dGVuZGluZ1NlbGVjdGlvbjpdKTogV3JpdGUgaW4gdGVybXMgb2Ygc2VsZi5jb250
cm9sLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIHNlbGVjdEZvcm1Qb3BvdmVyVGl0
bGVdKTogRGl0dG8uCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgYXNzaXN0YW50Vmll
d10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGJlZ2luRWRpdGlu
Z10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGVuZEVkaXRpbmdd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBv
cG92ZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10p
OiBEaXNtaXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgZmlsZXMgV0tGb3JtUGVyaXBoZXJhbEJhc2Uue2gsIG1tfS4KKwogMjAx
OS0wMy0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U11bV0syXSBVc2UgYSBiZXR0ZXIgY29uY2VwdCB0byBkZXNjcmliZSB0aGUgcmVhc29uIHdlIGRl
ZmVyIHpvb21pbmcgYSBmb2N1c2VkIGVsZW1lbnQ6IHNlbGVjdGFiaWx0aXkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCAxMzA1M2Y3ZTY1MjQzOTAyODE2YTlhYmVhNmEzYmFkMGU2N2I4MzdmLi5i
ZDZiMjg5YWU4NGFlMDEzZjQzOTM2ZmIwNTVhNTI2MDFlMjRhZmM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC0zNjYsNiArMzY2LDcgQEAgVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRG
b3JtQ29udHJvbFZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
Lm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yUGlja2VyLm1tCiBVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQorVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1QZXJpcGhlcmFsQmFzZS5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLm1t
CiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW0KIFVJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNzg4MzlmMDYy
YTA4NzkwOTU0OGJiMzM5YTM0YzYzNWY0MmY5ZDlhNS4uNTQ5Y2RmOTI1NDBjM2YzYWJhOWUyYThl
OTNkOWJiOGE5MTczOGRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMzEyLDcgKzMxMiw2IEBAIHN0cnVj
dCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICBCT09MIF9iZWNvbWluZ0ZpcnN0UmVzcG9u
ZGVyOwogICAgIEJPT0wgX3Jlc2lnbmluZ0ZpcnN0UmVzcG9uZGVyOwotICAgIEJPT0wgX2Rpc21p
c3NpbmdBY2Nlc3Nvcnk7CiAgICAgQk9PTCBfbmVlZHNEZWZlcnJlZEVuZFNjcm9sbGluZ1NlbGVj
dGlvblVwZGF0ZTsKICAgICBCT09MIF9pc0NoYW5naW5nRm9jdXM7CiAgICAgQk9PTCBfaXNCbHVy
cmluZ0ZvY3VzZWRFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNzE0YzFmZWFiODI3ZGEyNjIy
YjM3N2JiN2UxYzZlZWExYjNkM2Y2Ni4uODQ0MzRiMjliYjU3MzMxNjUzM2E4OGM1MDYzZjhhODE2
MzNiZmQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMTcwLDI0ICsxMTcwLDM0IEBAIC0gKEJPT0wp
cmVzaWduRmlyc3RSZXNwb25kZXIKICAgICByZXR1cm4gW193ZWJWaWV3IHJlc2lnbkZpcnN0UmVz
cG9uZGVyXTsKIH0KIAotLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlckZvcldlYlZpZXcKLXsK
LSAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGNhbGwgcmVzaWduRmlyc3RSZXNwb25kZXIg
b24gdGhlIHN1cGVyY2xhc3MKLSAgICAvLyBhbmQgZG8gbm90aGluZyBpZiB0aGUgcmV0dXJuIHZh
bHVlIGlzIE5PLgotCi0gICAgU2V0Rm9yU2NvcGU8Qk9PTD4gcmVzaWduaW5nRmlyc3RSZXNwb25k
ZXJTY29wZSB7IF9yZXNpZ25pbmdGaXJzdFJlc3BvbmRlciwgWUVTIH07Cit0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBFbmRFZGl0aW5nUmVhc29uKSB7CisgICAgRW5kRWRpdGluZ1JlYXNvbkFj
Y2Vzc29yeURvbmUsCisgICAgRW5kRWRpdGluZ1JlYXNvblJlc2lnbmluZ0ZpcnN0UmVzcG9uZGVy
LAorfTsKIAorLSAodm9pZCllbmRFZGl0aW5nQW5kVXBkYXRlRm9jdXNBcHBlYXJhbmNlV2l0aFJl
YXNvbjooRW5kRWRpdGluZ1JlYXNvbilyZWFzb24KK3sKICAgICBpZiAoIV93ZWJWaWV3Ll9yZXRh
aW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjb21wbGV0
ZSB0aGUgZWRpdGluZyBvcGVyYXRpb24gYmVmb3JlIHdlIGJsdXIgdGhlIGVsZW1lbnQuCiAgICAg
ICAgIFtzZWxmIF9lbmRFZGl0aW5nXTsKLSAgICAgICAgaWYgKF9kaXNtaXNzaW5nQWNjZXNzb3J5
IHx8IF9rZXlib2FyZERpZFJlcXVlc3REaXNtaXNzYWwpCisgICAgICAgIGlmICgocmVhc29uID09
IEVuZEVkaXRpbmdSZWFzb25BY2Nlc3NvcnlEb25lICYmICFjdXJyZW50VXNlckludGVyZmFjZUlk
aW9tSXNQYWQoKSkgfHwgX2tleWJvYXJkRGlkUmVxdWVzdERpc21pc3NhbCkKICAgICAgICAgICAg
IF9wYWdlLT5ibHVyRm9jdXNlZEVsZW1lbnQoKTsKICAgICB9CiAKICAgICBbc2VsZiBfY2FuY2Vs
SW50ZXJhY3Rpb25dOwogICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBkZWFjdGl2YXRlU2Vs
ZWN0aW9uXTsKLSAgICAKKwogICAgIFtzZWxmIF9yZXNldElucHV0Vmlld0RlZmVycmFsXTsKK30K
KworLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlckZvcldlYlZpZXcKK3sKKyAgICAvLyBGSVhN
RTogTWF5YmUgd2Ugc2hvdWxkIGNhbGwgcmVzaWduRmlyc3RSZXNwb25kZXIgb24gdGhlIHN1cGVy
Y2xhc3MKKyAgICAvLyBhbmQgZG8gbm90aGluZyBpZiB0aGUgcmV0dXJuIHZhbHVlIGlzIE5PLgor
CisgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gcmVzaWduaW5nRmlyc3RSZXNwb25kZXJTY29wZSB7IF9y
ZXNpZ25pbmdGaXJzdFJlc3BvbmRlciwgWUVTIH07CisKKyAgICBbc2VsZiBlbmRFZGl0aW5nQW5k
VXBkYXRlRm9jdXNBcHBlYXJhbmNlV2l0aFJlYXNvbjpFbmRFZGl0aW5nUmVhc29uUmVzaWduaW5n
Rmlyc3RSZXNwb25kZXJdOwogCiAgICAgLy8gSWYgdGhlIHVzZXIgZXhwbGljaXRseSBkaXNtaXNz
ZWQgdGhlIGtleWJvYXJkIHRoZW4gd2Ugd2lsbCBsb3NlIGZpcnN0IHJlc3BvbmRlcgogICAgIC8v
IHN0YXR1cyBvbmx5IHRvIGdhaW4gaXQgYmFjayBhZ2Fpbi4gSnVzdCBkb24ndCByZXNpZ24gaW4g
dGhhdCBjYXNlLgpAQCAtMTY2Nyw2ICsxNjc3LDcgQEAgLSAoVUlWaWV3ICopaW5wdXRWaWV3CiAg
ICAgICAgIC8vIEZvciBpbnN0YW5jZSwgb25lIHVzZSBjYXNlIHRoYXQgY3VycmVudGx5IHJlbGll
cyBvbiB0aGlzIGRldGFpbCBpcyBhZGp1c3RpbmcgdGhlIHpvb20gc2NhbGUgYW5kIHZpZXdwb3J0
IHVwb24KICAgICAgICAgLy8gcm90YXRpb24sIHdoZW4gYSBzZWxlY3QgZWxlbWVudCBpcyBmb2N1
c2VkLiBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5Mjg3OD4gZm9yIG1vcmUgaW5mb3JtYXRp
b24uCiAgICAgICAgIFtzZWxmIF96b29tVG9SZXZlYWxGb2N1c2VkRWxlbWVudF07CisKICAgICAg
ICAgW3NlbGYgX3VwZGF0ZUFjY2Vzc29yeV07CiAgICAgfQogCkBAIC0zNzU3LDggKzM3NjgsOCBA
QCAtICh2b2lkKWFjY2Vzc29yeUNsZWFyCiAKIC0gKHZvaWQpYWNjZXNzb3J5RG9uZQogewotICAg
IFNldEZvclNjb3BlPEJPT0w+IGRpc21pc3NpbmdBY2Nlc3NvcnlTY29wZSB7IF9kaXNtaXNzaW5n
QWNjZXNzb3J5LCBZRVMgfTsKLSAgICBbc2VsZiByZXNpZ25GaXJzdFJlc3BvbmRlcl07CisgICAg
W3NlbGYgZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3VzQXBwZWFyYW5jZVdpdGhSZWFzb246RW5kRWRp
dGluZ1JlYXNvbkFjY2Vzc29yeURvbmVdOworICAgIF9wYWdlLT5zZXRJc1Nob3dpbmdJbnB1dFZp
ZXdGb3JGb2N1c2VkRWxlbWVudChmYWxzZSk7CiB9CiAKIC0gKHZvaWQpYWNjZXNzb3J5VGFiOihC
T09MKWlzTmV4dApAQCAtNDM1NiwyMSArNDM2NywyOCBAQCAtIChCT09MKXJlcXVpcmVzS2V5RXZl
bnRzCiAgICAgcmV0dXJuIFlFUzsKIH0KIAotI2lmICFVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJ
T05TKQogLSAodm9pZClfaGFuZGxlS2V5VUlFdmVudDooOjpVSUV2ZW50ICopZXZlbnQKIHsKICAg
ICBib29sIGlzSGFyZHdhcmVLZXlib2FyZEV2ZW50ID0gISFldmVudC5faGlkRXZlbnQ7Ci0KICAg
ICAvLyBXZSBvbmx5IHdhbnQgdG8gaGFuZGxlIGtleSBldmVudCBmcm9tIHRoZSBoYXJkd2FyZSBr
ZXlib2FyZCB3aGVuIHdlIGFyZQogICAgIC8vIGZpcnN0IHJlc3BvbmRlciBhbmQgd2UgYXJlIG5v
dCBpbnRlcmFjdGluZyB3aXRoIGVkaXRhYmxlIGNvbnRlbnQuCi0gICAgaWYgKFtzZWxmIGlzRmly
c3RSZXNwb25kZXJdICYmIGlzSGFyZHdhcmVLZXlib2FyZEV2ZW50ICYmICFfcGFnZS0+ZWRpdG9y
U3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkgeworICAgIGlmIChbc2VsZiBpc0ZpcnN0UmVzcG9u
ZGVyXSAmJiBpc0hhcmR3YXJlS2V5Ym9hcmRFdmVudCAmJiAoX2lucHV0UGVyaXBoZXJhbCB8fCAh
X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpKSB7CisgICAgICAgIGlmIChb
X2lucHV0UGVyaXBoZXJhbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGhhbmRsZUtleUV2
ZW50OildKSB7CisgICAgICAgICAgICBpZiAoW19pbnB1dFBlcmlwaGVyYWwgaGFuZGxlS2V5RXZl
bnQ6ZXZlbnRdKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2lmIFVTRShV
SUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCisgICAgICAgIFtzdXBlciBfaGFuZGxlS2V5VUlFdmVu
dDpldmVudF07CisjZWxzZQogICAgICAgICBbc2VsZiBoYW5kbGVLZXlFdmVudDpldmVudF07Cisj
ZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFtzdXBlciBfaGFuZGxlS2V5VUlF
dmVudDpldmVudF07CiB9CiAKKyNpZiAhVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKIC0g
KHZvaWQpaGFuZGxlS2V5RXZlbnQ6KDo6VUlFdmVudCAqKWV2ZW50CiB7CiAgICAgLy8gV2ViQ29y
ZSBoYXMgYWxyZWFkeSBzZWVuIHRoZSBldmVudCwgbm8gbmVlZCBmb3IgY3VzdG9tIHByb2Nlc3Np
bmcuCkBAIC00OTQ0LDggKzQ5NjIsMTYgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25z
dCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKIAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgY2hlY2sgd2hlbiB3ZSBtYW5hZ2UgdG8g
c2VuZCBFbGVtZW50RGlkRm9jdXMgZnJvbSB0aGUgV2ViUHJvY2VzcwogICAgIC8vIG9ubHkgd2hl
biBpdCBpcyB0cnVseSB0aW1lIHRvIHNob3cgdGhlIGtleWJvYXJkLgotICAgIGlmIChfZm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBpbmZvcm1hdGlvbi5lbGVtZW50VHlw
ZSAmJiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9PSBpbmZvcm1hdGlv
bi5lbGVtZW50UmVjdCkKKyAgICBpZiAoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVu
dFR5cGUgPT0gaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgJiYgX2ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uZWxlbWVudFJlY3QgPT0gaW5mb3JtYXRpb24uZWxlbWVudFJlY3QpIHsKKyAgICAgICAg
aWYgKF9pbnB1dFBlcmlwaGVyYWwpIHsKKyAgICAgICAgICAgIGlmICghc2VsZi5pc0ZpcnN0UmVz
cG9uZGVyKQorICAgICAgICAgICAgICAgIFtzZWxmIGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKKyAg
ICAgICAgICAgIFtzZWxmIF96b29tVG9SZXZlYWxGb2N1c2VkRWxlbWVudF07CisgICAgICAgICAg
ICBbc2VsZiBfdXBkYXRlQWNjZXNzb3J5XTsKKyAgICAgICAgICAgIFtfaW5wdXRQZXJpcGhlcmFs
IGJlZ2luRWRpdGluZ107CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAg
IFtfd2ViVmlldyBfcmVzZXRGb2N1c1ByZXNlcnZhdGlvbkNvdW50XTsKIApAQCAtNDk2NCw3ICs0
OTkwLDggQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICBpZiAoZGVsZWdhdGVJbXBsZW1l
bnRzV2lsbFN0YXJ0SW5wdXRTZXNzaW9uKQogICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmll
dzpfd2ViVmlldyB3aWxsU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCld
OwogCi0gICAgQk9PTCBlZGl0YWJsZUNoYW5nZWQgPSBbc2VsZiBzZXRJc0VkaXRhYmxlOllFU107
CisgICAgQk9PTCBpc1NlbGVjdGFibGUgPSBtYXlDb250YWluU2VsZWN0YWJsZVRleHQoaW5mb3Jt
YXRpb24uZWxlbWVudFR5cGUpOworICAgIEJPT0wgZWRpdGFibGVDaGFuZ2VkID0gW3NlbGYgc2V0
SXNFZGl0YWJsZTppc1NlbGVjdGFibGVdOwogICAgIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
ID0gaW5mb3JtYXRpb247CiAgICAgX2lucHV0UGVyaXBoZXJhbCA9IG5pbDsKICAgICBfdHJhaXRz
ID0gbmlsOwpAQCAtNDk4MCw3ICs1MDA3LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihj
b25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAg
ICBbc2VsZiByZWxvYWRJbnB1dFZpZXdzXTsKICNlbmRpZgogCi0gICAgaWYgKG1heUNvbnRhaW5T
ZWxlY3RhYmxlVGV4dChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkpCisg
ICAgaWYgKGlzU2VsZWN0YWJsZSkKICAgICAgICAgW3NlbGYgX3Nob3dLZXlib2FyZF07CiAKICAg
ICAvLyBUaGUgY3VzdG9tIGZpeGVkIHBvc2l0aW9uIHJlY3QgYmVoYXZpb3IgaXMgYWZmZWN0ZWQg
YnkgLWlzRm9jdXNpbmdFbGVtZW50LCBzbyBpZiB0aGF0IGNoYW5nZXMgd2UgbmVlZCB0byByZWNv
bXB1dGUgcmVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtQ29sb3JDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtQ29sb3JDb250cm9sLmgKaW5kZXggNDNkNmRjYmQ1NTg5OTYzODM5NTRiN2E1Nzk2
MmRlZDU3N2I1ZWY4Yi4uYzNkNTUxYjMxMjc2ZTJkODUyNmQzY2RiOTUwOWM1Zjk3MGE5NTY3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9y
Q29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1D
b2xvckNvbnRyb2wuaApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9ydCAiV0tGb3JtUGVyaXBo
ZXJhbC5oIgorI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCIKIAogQGNsYXNzIFdLQ29u
dGVudFZpZXc7CiAKLUBpbnRlcmZhY2UgV0tGb3JtQ29sb3JDb250cm9sIDogTlNPYmplY3Q8V0tG
b3JtUGVyaXBoZXJhbD4KK0BpbnRlcmZhY2UgV0tGb3JtQ29sb3JDb250cm9sIDogV0tGb3JtUGVy
aXBoZXJhbEJhc2UKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcg
Kil2aWV3OwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQppbmRleCBmNTUzOWYzNGQ4NmEwNGMxZThiMGI2
ZmYyNGZlZjhhNmQwZjdlOGM1Li41N2NlYTVmYTNmMjFkY2JjZmZlMTVhZDgwZGRkYjQ3ZmNhM2Ix
MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
Q29sb3JDb250cm9sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1Db2xvckNvbnRyb2wubW0KQEAgLTg2LDQyICs4NiwyMyBAQCAtICh2b2lkKWNvbnRyb2xC
ZWdpbkVkaXRpbmcKIAogLSAodm9pZCljb250cm9sRW5kRWRpdGluZwogeworICAgIFtzZWxmIGRp
c21pc3NQb3BvdmVyQW5pbWF0ZWQ6Tk9dOwogfQogCiBAZW5kCiAKICNwcmFnbWEgbWFyayAtIFdL
Rm9ybUNvbG9yQ29udHJvbAogCi1AaW1wbGVtZW50YXRpb24gV0tGb3JtQ29sb3JDb250cm9sIHsK
LSAgICBSZXRhaW5QdHI8aWQ8V0tGb3JtQ29udHJvbD4+IF9jb250cm9sOwotfQorQGltcGxlbWVu
dGF0aW9uIFdLRm9ybUNvbG9yQ29udHJvbAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3
OihXS0NvbnRlbnRWaWV3ICopdmlldwogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQotICAgICAgICByZXR1cm4gbmlsOwotCisgICAgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1D
b250cm9sPj4gY29udHJvbDsKICAgICBpZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFk
KCkpCi0gICAgICAgIF9jb250cm9sID0gYWRvcHROUyhbW1dLQ29sb3JQb3BvdmVyIGFsbG9jXSBp
bml0V2l0aFZpZXc6dmlld10pOworICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLQ29sb3JQ
b3BvdmVyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwogICAgIGVsc2UKLSAgICAgICAgX2Nv
bnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xvclBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXdd
KTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChVSVZpZXcgKilhc3Npc3RhbnRWaWV3Ci17
Ci0gICAgcmV0dXJuIFtfY29udHJvbCBjb250cm9sVmlld107Ci19Ci0KLS0gKHZvaWQpYmVnaW5F
ZGl0aW5nCi17Ci0gICAgW19jb250cm9sIGNvbnRyb2xCZWdpbkVkaXRpbmddOwotfQotCi0tICh2
b2lkKWVuZEVkaXRpbmcKLXsKLSAgICBbX2NvbnRyb2wgY29udHJvbEVuZEVkaXRpbmddOworICAg
ICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLQ29sb3JQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmll
dzp2aWV3XSk7CisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmlldyBjb250cm9sOldU
Rk1vdmUoY29udHJvbCldOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmgKaW5kZXggMTYyYzE2YjQ4OWEw
ZTMxZWQ1ZmNmNTE4MDNjMDg2ZDY1ZmY4ZTY3Mi4uZTA3YmI0OTFlOGM2YTM4ODcwNmYxZjY5ZDYy
NzQyYjdhNThmYWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybUlucHV0Q29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgiCisjaW1w
b3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgogCiBAY2xhc3MgV0tDb250ZW50VmlldzsKIAot
QGludGVyZmFjZSBXS0Zvcm1JbnB1dENvbnRyb2wgOiBOU09iamVjdDxXS0Zvcm1QZXJpcGhlcmFs
PgorQGludGVyZmFjZSBXS0Zvcm1JbnB1dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFsQmFzZQog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1J
bnB1dENvbnRyb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
SW5wdXRDb250cm9sLm1tCmluZGV4IGNmZWQyZDUwYTZjOGJhMDNkNGQyMDE5ZTExZTZhOGNkMDk4
MGE0NjEuLmY1Nzg2NmExMTJjYmQ1ZTkwN2I0NzRjMzFkYWVhNDg4NDNhMWRhNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29u
dHJvbC5tbQpAQCAtMjM5LDYxICsyMzksMzYgQEAgLSAodm9pZCljb250cm9sRW5kRWRpdGluZwog
QGVuZAogCiAvLyBXS0Zvcm1JbnB1dENvbnRyb2wKLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1
dENvbnRyb2wgewotICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+IF9jb250
cm9sOwotfQorQGltcGxlbWVudGF0aW9uIFdLRm9ybUlucHV0Q29udHJvbAogCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldwogewotICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgVUlEYXRlUGlj
a2VyTW9kZSBtb2RlOwogCiAgICAgc3dpdGNoICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24uZWxlbWVudFR5cGUpIHsKICAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKICAgICAgICAgbW9k
ZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRlOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgSW5w
dXRUeXBlOjpEYXRlVGltZUxvY2FsOgogICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZURh
dGVBbmRUaW1lOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgSW5wdXRUeXBlOjpUaW1lOgog
ICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZVRpbWU7CiAgICAgICAgIGJyZWFrOwotCiAg
ICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgogICAgICAgICBtb2RlID0gKFVJRGF0ZVBpY2tlck1v
ZGUpVUlEYXRlUGlja2VyTW9kZVllYXJBbmRNb250aDsKICAgICAgICAgYnJlYWs7Ci0KICAgICBk
ZWZhdWx0OgogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICB9CiAKKyAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiBjb250cm9sOwog
ICAgIGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKLSAgICAgICAgX2NvbnRy
b2wgPSBhZG9wdE5TKFtbV0tEYXRlVGltZVBvcG92ZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3
IGRhdGVQaWNrZXJNb2RlOm1vZGVdKTsKKyAgICAgICAgY29udHJvbCA9IGFkb3B0TlMoW1tXS0Rh
dGVUaW1lUG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6bW9k
ZV0pOwogICAgIGVsc2UKLSAgICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tEYXRlVGltZVBp
Y2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6bW9kZV0pOwotCi0g
ICAgcmV0dXJuIHNlbGY7Ci0KLX0KLQotLSAodm9pZCliZWdpbkVkaXRpbmcKLXsKLSAgICBbX2Nv
bnRyb2wgY29udHJvbEJlZ2luRWRpdGluZ107Ci19Ci0KLS0gKHZvaWQpZW5kRWRpdGluZwotewot
ICAgIFtfY29udHJvbCBjb250cm9sRW5kRWRpdGluZ107Ci19Ci0KLS0gKFVJVmlldyAqKWFzc2lz
dGFudFZpZXcKLXsKLSAgICByZXR1cm4gW19jb250cm9sIGNvbnRyb2xWaWV3XTsKKyAgICAgICAg
Y29udHJvbCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6
dmlldyBkYXRlUGlja2VyTW9kZTptb2RlXSk7CisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZp
ZXc6dmlldyBjb250cm9sOldURk1vdmUoY29udHJvbCldOwogfQogCiBAZW5kCkBAIC0zMDIsMTIg
KzI3NywxMCBAQCBAaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRDb250cm9sIChXS1Rlc3Rpbmcp
CiAKIC0gKE5TU3RyaW5nICopZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5cGUKIHsKLSAgICBpZiAo
W19jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCi0gICAgICAg
IHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilfY29udHJvbC5nZXQoKSBjYWxlbmRhclR5cGVd
OwotCi0gICAgaWYgKFtfY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQb3BvdmVyLmNs
YXNzXSkKLSAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBvcG92ZXIgKilfY29udHJvbC5nZXQo
KSBjYWxlbmRhclR5cGVdOwotCisgICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpX
S0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKKyAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tl
ciAqKXNlbGYuY29udHJvbCBjYWxlbmRhclR5cGVdOworICAgIGlmIChbc2VsZi5jb250cm9sIGlz
S2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhX
S0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29udHJvbCBjYWxlbmRhclR5cGVdOwogICAgIHJldHVy
biBuaWw7CiB9CiAKQEAgLTM4OCw2ICszNjEsOCBAQCAtICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRp
bmcKIAogLSAodm9pZCljb250cm9sRW5kRWRpdGluZwogeworICAgIFtzZWxmIGRpc21pc3NQb3Bv
dmVyQW5pbWF0ZWQ6Tk9dOworICAgIFtfdmlld0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250cm9s
IGNvbnRyb2xFbmRFZGl0aW5nXTsKIH0KIAogLSAoVUlWaWV3ICopY29udHJvbFZpZXcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFs
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbC5o
CmluZGV4IDY3ZTg4NzNkYWNjYmRjYmIwY2NlN2IxM2JmYmE0ODRiYWI3ODBkNjMuLmIxODEyYmU0
NDJmMjJjOWY1NzEzMDkxYmU0ZjZiNzMyOWNhM2VhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaApAQCAtMjMsMTYgKzIz
LDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorQGNsYXNz
IFVJRXZlbnQ7CiBAY2xhc3MgVUlWaWV3OwogCiBAcHJvdG9jb2wgV0tGb3JtUGVyaXBoZXJhbAog
LSAodm9pZCliZWdpbkVkaXRpbmc7CiAtICh2b2lkKWVuZEVkaXRpbmc7CiAtIChVSVZpZXcgKilh
c3Npc3RhbnRWaWV3OworQG9wdGlvbmFsCistIChCT09MKWhhbmRsZUtleUV2ZW50OihVSUV2ZW50
ICopZXZlbnQ7CiBAZW5kCiAKIEBwcm90b2NvbCBXS0Zvcm1Db250cm9sCiAtIChVSVZpZXcgKilj
b250cm9sVmlldzsKIC0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZzsKIC0gKHZvaWQpY29udHJv
bEVuZEVkaXRpbmc7CitAb3B0aW9uYWwKKy0gKEJPT0wpY29udHJvbEhhbmRsZUtleUV2ZW50OihV
SUV2ZW50ICopZXZlbnQ7CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwYzMzMDFm
NDA5Y2ZiMzIwYTBkZTNjZDVlN2E2M2U4YzczOWFhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UuaApAQCAt
MCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNp
bXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisKK0Bp
bnRlcmZhY2UgV0tGb3JtUGVyaXBoZXJhbEJhc2UgOiBOU09iamVjdCA8V0tGb3JtUGVyaXBoZXJh
bD4KKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBjb250cm9sOihSZXRhaW5QdHI8
TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiYmKWNvbnRyb2wgTlNfREVTSUdOQVRFRF9JTklUSUFM
SVpFUjsKKworLSAodm9pZCliZWdpbkVkaXRpbmc7CistICh2b2lkKWVuZEVkaXRpbmc7CistIChV
SVZpZXcgKilhc3Npc3RhbnRWaWV3OworLSAoQk9PTCloYW5kbGVLZXlFdmVudDooVUlFdmVudCAq
KWV2ZW50OworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLQ29udGVudFZpZXcg
KnZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TT2JqZWN0IDxXS0Zvcm1D
b250cm9sPiAqY29udHJvbDsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MjM5YjBlYjk1ZDVlOTBlZWZmYzQwNDkxM2QxNTc5N2VkNzVlMDI5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlw
aGVyYWxCYXNlLm1tCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWxCYXNlLmgiCisKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Zvcm1QZXJpcGhlcmFsQmFz
ZSB7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gX2NvbnRyb2w7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGNv
bnRyb2w6KFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+JiYpY29udHJvbAorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgX3ZpZXcgPSB2aWV3OworICAgIF9jb250cm9sID0gV1RGTW92ZShjb250cm9sKTsKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCliZWdpbkVkaXRpbmcKK3sKKyAgICBbX2NvbnRyb2wg
Y29udHJvbEJlZ2luRWRpdGluZ107Cit9CisKKy0gKHZvaWQpZW5kRWRpdGluZworeworICAgIFtf
Y29udHJvbCBjb250cm9sRW5kRWRpdGluZ107Cit9CisKKy0gKFVJVmlldyAqKWFzc2lzdGFudFZp
ZXcKK3sKKyAgICByZXR1cm4gW19jb250cm9sIGNvbnRyb2xWaWV3XTsKK30KKworLSAoTlNPYmpl
Y3QgPFdLRm9ybUNvbnRyb2w+ICopY29udHJvbAoreworICAgIHJldHVybiBfY29udHJvbC5nZXQo
KTsKK30KKworLSAoQk9PTCloYW5kbGVLZXlFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAg
QVNTRVJUKGV2ZW50Ll9oaWRFdmVudCk7CisgICAgaWYgKFtfY29udHJvbCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGNvbnRyb2xIYW5kbGVLZXlFdmVudDopXSkgeworICAgICAgICBpZiAo
W19jb250cm9sIGNvbnRyb2xIYW5kbGVLZXlFdmVudDpldmVudF0pCisgICAgICAgICAgICByZXR1
cm4gWUVTOworICAgIH0KKyAgICBVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCAqa2V5RXZlbnQgPSAo
VUlQaHlzaWNhbEtleWJvYXJkRXZlbnQgKilldmVudDsKKyAgICBpZiAoa2V5RXZlbnQuX2lucHV0
RmxhZ3MgJiBrVUlLZXlib2FyZElucHV0TW9kaWZpZXJGbGFnc0NoYW5nZWQpCisgICAgICAgIHJl
dHVybiBOTzsKKyAgICBpZiAoa2V5RXZlbnQuX2tleUNvZGUgPT0ga0hJRFVzYWdlX0tleWJvYXJk
RXNjYXBlIHx8IFtrZXlFdmVudC5fdW5tb2RpZmllZElucHV0IGlzRXF1YWxUb1N0cmluZzpVSUtl
eUlucHV0RXNjYXBlXSkgeworICAgICAgICBbX3ZpZXcgYWNjZXNzb3J5RG9uZV07CisgICAgICAg
IHJldHVybiBZRVM7CisgICAgfQorICAgIHJldHVybiBOTzsKK30KKworQGVuZAorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5oCmluZGV4IDdiZTY1MWE4MDRhODk2
ZTkwZDYxY2Q1ODhlNjI5NDgwNWY4MjYyNDIuLmY2OTViZTMxYjk4ZWJkZGNmYjZjODAxYjliNWJj
ZWZkMjFkZTg1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0Zvcm1TZWxlY3RDb250cm9sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW1wb3J0
ICJGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgotI2lt
cG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgorI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbEJhc2Uu
aCIKICNpbXBvcnQgIldLRm9ybVBvcG92ZXIuaCIKICNpbXBvcnQgPFVJS2l0L1VJUGlja2VyVmll
dy5oPgogCkBAIC0zNSw3ICszNSw3IEBAIENHRmxvYXQgYWRqdXN0ZWRGb250U2l6ZShDR0Zsb2F0
IHRleHRXaWR0aCwgVUlGb250ICosIENHRmxvYXQgaW5pdGlhbEZvbnRTaXplLCBjCiAKIEBjbGFz
cyBXS0NvbnRlbnRWaWV3OwogCi1AaW50ZXJmYWNlIFdLRm9ybVNlbGVjdENvbnRyb2wgOiBOU09i
amVjdDxXS0Zvcm1QZXJpcGhlcmFsPgorQGludGVyZmFjZSBXS0Zvcm1TZWxlY3RDb250cm9sIDog
V0tGb3JtUGVyaXBoZXJhbEJhc2UKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29u
dGVudFZpZXcgKil2aWV3OwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCmluZGV4IDNiOTQ4ZDFhZDRk
YjUxZmYxMmIyZWIwNzk0MzI5OWMxYTMxMTJmOGIuLjNkNWM5MmEyMWVmMjY3YjI3MmJlMDJlMjQx
ZDYxMTQzMzcwMzZhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCkBAIC02NSw5ICs2NSw2IEBAIEBpbXBs
ZW1lbnRhdGlvbiBXS0Zvcm1TZWxlY3RDb250cm9sIHsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIGJvb2wgaGFzR3JvdXBzID0gZmFs
c2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uc2VsZWN0T3B0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAodmlldy5mb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uLnNlbGVjdE9wdGlvbnNbaV0uaXNHcm91cCkgewpAQCAtNzYs
MjkgKzczLDE1IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcg
Kil2aWV3CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9y
bUNvbnRyb2w+PiBjb250cm9sOwogICAgIGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQ
YWQoKSkKLSAgICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tTZWxlY3RQb3BvdmVyIGFsbG9j
XSBpbml0V2l0aFZpZXc6dmlldyBoYXNHcm91cHM6aGFzR3JvdXBzXSk7CisgICAgICAgIGNvbnRy
b2wgPSBhZG9wdE5TKFtbV0tTZWxlY3RQb3BvdmVyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBo
YXNHcm91cHM6aGFzR3JvdXBzXSk7CiAgICAgZWxzZSBpZiAodmlldy5mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmlzTXVsdGlTZWxlY3QgfHwgaGFzR3JvdXBzKQotICAgICAgICBfY29udHJvbCA9
IGFkb3B0TlMoW1tXS011bHRpcGxlU2VsZWN0UGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmll
d10pOworICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLTXVsdGlwbGVTZWxlY3RQaWNrZXIg
YWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CiAgICAgZWxzZQotICAgICAgICBfY29udHJvbCA9
IGFkb3B0TlMoW1tXS1NlbGVjdFNpbmdsZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXdd
KTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHNlbGY7Ci19CisgICAgICAgIGNvbnRyb2wgPSBhZG9w
dE5TKFtbV0tTZWxlY3RTaW5nbGVQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CiAK
LS0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKLXsKLSAgICByZXR1cm4gW19jb250cm9sIGNvbnRy
b2xWaWV3XTsKLX0KLQotLSAodm9pZCliZWdpbkVkaXRpbmcKLXsKLSAgICBbX2NvbnRyb2wgY29u
dHJvbEJlZ2luRWRpdGluZ107Ci19Ci0KLS0gKHZvaWQpZW5kRWRpdGluZwotewotICAgIFtfY29u
dHJvbCBjb250cm9sRW5kRWRpdGluZ107CisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6
dmlldyBjb250cm9sOldURk1vdmUoY29udHJvbCldOwogfQogCiBAZW5kCkBAIC0xMDcsMTYgKzkw
LDE1IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1TZWxlY3RDb250cm9sKFdLVGVzdGluZykKIAog
LSAodm9pZClzZWxlY3RSb3c6KE5TSW50ZWdlcilyb3dJbmRleCBpbkNvbXBvbmVudDooTlNJbnRl
Z2VyKWNvbXBvbmVudEluZGV4IGV4dGVuZGluZ1NlbGVjdGlvbjooQk9PTClleHRlbmRpbmdTZWxl
Y3Rpb24KIHsKLSAgICBpZiAoW19jb250cm9sIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2VsZWN0Um93OmluQ29tcG9uZW50OmV4dGVuZGluZ1NlbGVjdGlvbjopXSkKLSAgICAgICAgW2lk
PFdLU2VsZWN0VGVzdGluZz4oX2NvbnRyb2wuZ2V0KCkpIHNlbGVjdFJvdzpyb3dJbmRleCBpbkNv
bXBvbmVudDpjb21wb25lbnRJbmRleCBleHRlbmRpbmdTZWxlY3Rpb246ZXh0ZW5kaW5nU2VsZWN0
aW9uXTsKKyAgICBpZiAoW3NlbGYuY29udHJvbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNlbGVjdFJvdzppbkNvbXBvbmVudDpleHRlbmRpbmdTZWxlY3Rpb246KV0pCisgICAgICAgIFtp
ZDxXS1NlbGVjdFRlc3Rpbmc+KHNlbGYuY29udHJvbCkgc2VsZWN0Um93OnJvd0luZGV4IGluQ29t
cG9uZW50OmNvbXBvbmVudEluZGV4IGV4dGVuZGluZ1NlbGVjdGlvbjpleHRlbmRpbmdTZWxlY3Rp
b25dOwogfQogCiAtIChOU1N0cmluZyAqKXNlbGVjdEZvcm1Qb3BvdmVyVGl0bGUKIHsKLSAgICBp
ZiAoIVtfY29udHJvbCBpc0tpbmRPZkNsYXNzOltXS1NlbGVjdFBvcG92ZXIgY2xhc3NdXSkKKyAg
ICBpZiAoIVtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpbV0tTZWxlY3RQb3BvdmVyIGNsYXNz
XV0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gWyhXS1NlbGVjdFBvcG92ZXIg
KilfY29udHJvbC5nZXQoKSB0YWJsZVZpZXdDb250cm9sbGVyXS50aXRsZTsKKyAgICByZXR1cm4g
WyhXS1NlbGVjdFBvcG92ZXIgKilzZWxmLmNvbnRyb2wgdGFibGVWaWV3Q29udHJvbGxlcl0udGl0
bGU7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KaW5kZXggZTJkMmJiZDJmNDVkYTc3Yzk2ZmNm
ODViNDlmMjEyMmEyM2E0ZWM3Yi4uNTU0OTY5MDJlNzMzMTJkOTU3NTY3ZGIwYWJmNzVkODQ2ZWFi
MTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bVNlbGVjdFBvcG92ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgogI2ltcG9ydCA8VUlLaXQvVUlQaWNrZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvSU9LaXRTUEku
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
QEAgLTQ0Niw2ICs0NDcsNyBAQCAtICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRpbmcKIAogLSAodm9p
ZCljb250cm9sRW5kRWRpdGluZwogeworICAgIFtzZWxmIGRpc21pc3NQb3BvdmVyQW5pbWF0ZWQ6
Tk9dOwogfQogCiAtICh2b2lkKV91c2VyQWN0aW9uRGlzbWlzc2VkUG9wb3ZlcjooaWQpc2VuZGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4ZTk5YWE0ZTE0ODkzYWI1MGJjMmUwNmM1MTBiMjM3YTcxYjQ1ZGE2Li5jOTUyYmE5ZWI3ODM0
MGI3YWQyOTBmYjMwZjk5YzBlOTk1MDc4YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1ODksNiArMTU4OSw3IEBACiAJCUNFMUEw
QkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEku
aCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDExQTQ4
RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovOyB9OwogCQlDRTVCNEM4ODIxQjczRDg3
MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1QjRDODYyMUI3M0Q4NzAwMjJF
NjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCAqLzsgfTsKKwkJQ0U3MEVF
NUQyMjQ0MkJEMDAwRTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTcwRUU1QzIyNDQyQkQwMDBFMEFG
MEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCAqLzsgfTsKIAkJQ0VDOEY5Q0IxRkRGNTg3MDAw
MjYzNUU3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUM4RjlDQTFGREY1ODcwMDAy
NjM1RTcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRURBMTJFMzE1MkNEMUIz
MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyog
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi87IH07CiAJCUNFRTRBRTJCMUE1RENGNDMwMDAy
RjQ5QiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0VFNEFFMkExQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggKi87IH07CkBA
IC00NDY4LDYgKzQ0NjksOCBAQAogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElu
cHV0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dFNQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVCNEM4NjIxQjczRDg3MDAyMkU2NEYg
LyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1N5
bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lmg7IHBhdGggPSBpb3MvV0tTeW50aGV0aWNGbGFn
c0NoYW5nZWRXZWJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVCNEM4
NzIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQubW07
IHBhdGggPSBpb3MvV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3MEVFNUEyMjQ0MkJCMzAwRTBBRjBGIC8qIFdLRm9ybVBl
cmlwaGVyYWxCYXNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGb3JtUGVyaXBoZXJhbEJh
c2UubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNzBFRTVDMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zvcm1Q
ZXJpcGhlcmFsQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oOyBw
YXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFQzhGOUNBMUZERjU4NzAwMDI2MzVFNyAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5Ob2RlSGFuZGxlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRURBMTJE
RTE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRURBMTJERjE1MkNDQUU4MDBEOUUwOEQgLyogV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NzEyLDYgKzg3MTUsOCBAQAogCQkJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3
OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLywKIAkJCQlDNTQyNTZCMDE4QkVDMThCMDBERTQx
NzkgLyogV0tGb3JtSW5wdXRDb250cm9sLm1tICovLAogCQkJCUM1NDI1NkIxMThCRUMxOEIwMERF
NDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggKi8sCisJCQkJQ0U3MEVFNUMyMjQ0MkJEMDAwRTBB
RjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxCYXNlLmggKi8sCisJCQkJQ0U3MEVFNUEyMjQ0MkJCMzAw
RTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxCYXNlLm1tICovLAogCQkJCUM1NDI1NkIyMThCRUMx
OEIwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLmggKi8sCiAJCQkJQzU0MjU2QjMxOEJFQzE4QjAw
REU0MTc5IC8qIFdLRm9ybVBvcG92ZXIubW0gKi8sCiAJCQkJQzU0MjU2QjQxOEJFQzE4QzAwREU0
MTc5IC8qIFdLRm9ybVNlbGVjdENvbnRyb2wuaCAqLywKQEAgLTk4MzQsNiArOTgzOSw3IEBACiAJ
CQkJRTU0OEVCRDEyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNTQyNTZCNTE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250
cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTQyNTZCNzE4QkVDMThDMDBERTQxNzkgLyogV0tG
b3JtUGVyaXBoZXJhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0U3MEVFNUQyMjQ0MkJEMDAwRTBB
RjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTQyNTZC
ODE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzU0MjU2QkExOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNlbGVjdENvbnRyb2wuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMDhDRjUyMUQ2M0MxM0EwMEI0OERGMSAvKiBXS0Zvcm1TZWxlY3RQaWNr
ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3N2Y3YzliZjIzNTJhNWZiODdhY2E2NjcxZWM1
MWZiZDBjYWY4NTMuLjc3MTcwMTU1YzI2NDBlZTJjZWJjYTViYWYwNmU2OTViYTU1NjJmNWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMy0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gU2hvdWxkIGJlIGFibGUgdG8gZGlzbWlzcyBwaWNr
ZXIgb3IgcG9wb3ZlciB1c2luZyB0aGUga2V5Ym9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjI3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDg5NDMxNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHRlc3QgdG8gZW5zdXJlIHRoYXQgcHJlc3NpbmcgRXNjYXBlIG9yIENvbW1hbmQgKyAu
IGRpc21pc3NlcyBhIHBpY2tlci4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW9zL2Rpc21pc3Mt
cGlja2VyLXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQuaHRtbDogQWRkZWQuCisK
IDIwMTgtMTItMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1NdIEFkZCB0ZXN0IHRvIGVuc3VyZSB0aGF0IGEgd2ViIHBhZ2UgY2FuIHByZXZlbnQgdGhl
IGRlZmF1bHQgZm9yIENvbW1hbmQgKyBBCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lvcy9kaXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9kaXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZjZGUyN2IyYzVjZmFmNWE0MTY5MGYwZGQ3MjhlMGZiNDVm
NzQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2Rpc21p
c3MtcGlja2VyLXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ5IEBACitU
ZXN0cyB0aGF0IHByZXNzaW5nIHRoZSBFc2NhcGUga2V5IG9yIENvbW1hbmQgKyAuIGRpc21pc3Nl
cyBhIHBpY2tlciB3aXRob3V0IGNhdXNpbmcgYSB2YWx1ZSBjaGFuZ2UuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCisKK0Rpc21pc3MgYnkgcHJlc3NpbmcgZXNjYXBlOgorCitGb3Ig
Y29sb3I6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIiMwMDAwMDAiCisKK0ZvciBkYXRl
OgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICIyMDE5LTAzLTI2IgorCitGb3IgZGF0ZXRp
bWUtbG9jYWw6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTktMDMtMjZUMTQ6Mjg6
MDUuNDU1IgorCitGb3IgbW9udGg6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTkt
MDMiCisKK0ZvciBzZWxlY3Q6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIkZpcnN0Igor
CitGb3IgdGltZToKK1BBU1MgZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiMTQ6MjgiCisKK0Rpc21p
c3MgYnkgcHJlc3NpbmcgQ29tbWFuZCArIC46CisKK0ZvciBjb2xvcjoKK1BBU1MgZWxlbWVudFRv
VGVzdC52YWx1ZSBpcyAiIzAwMDAwMCIKKworRm9yIGRhdGU6CitQQVNTIGVsZW1lbnRUb1Rlc3Qu
dmFsdWUgaXMgIjIwMTktMDMtMjYiCisKK0ZvciBkYXRldGltZS1sb2NhbDoKK1BBU1MgZWxlbWVu
dFRvVGVzdC52YWx1ZSBpcyAiMjAxOS0wMy0yNlQxNDoyODowNS40NTUiCisKK0ZvciBtb250aDoK
K1BBU1MgZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiMjAxOS0wMyIKKworRm9yIHNlbGVjdDoKK1BB
U1MgZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiRmlyc3QiCisKK0ZvciB0aW1lOgorUEFTUyBlbGVt
ZW50VG9UZXN0LnZhbHVlIGlzICIxNDoyOCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2lvcy9kaXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNDEyY2U3MzNjNWU3YTM0MDk3MGU5MzliNDI0ZWVjMGVjOTZiZjg4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5
Ym9hcmQuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8IS0tIFBsYWNlIHRoZSB0ZXN0IGNvbnRhaW5lciBhYm92ZSB0
aGUgY29uc29sZSBvdXRwdXQgdG8gYXZvaWQgdGhlIG5lZWQgdG8gY29tcGVuc2F0ZSBmb3IgcGFn
ZSBzY3JvbGwuIC0tPgorPGRpdiBpZD0idGVzdC1jb250YWluZXIiPgorICAgIDxwPjxpbnB1dCB0
eXBlPSJjb2xvciIgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJjb2xvciI+PC9wPgorICAg
IDxwPjxpbnB1dCB0eXBlPSJkYXRlIiBjbGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9ImRhdGUi
IHZhbHVlPSIyMDE5LTAzLTI2Ij48L3A+CisgICAgPHA+PGlucHV0IHR5cGU9ImRhdGV0aW1lLWxv
Y2FsIiBjbGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9ImRhdGV0aW1lLWxvY2FsIiB2YWx1ZT0i
MjAxOS0wMy0yNlQxNDoyODowNS40NTUiPjwvcD4KKyAgICA8cD48aW5wdXQgdHlwZT0ibW9udGgi
IGNsYXNzPSJ0ZXN0IiBkYXRhLXRlc3QtbmFtZT0ibW9udGgiIHZhbHVlPSIyMDE5LTAzIj48L3A+
CisgICAgPHA+PHNlbGVjdCBjbGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9InNlbGVjdCI+Cisg
ICAgICAgIDxvcHRpb24+Rmlyc3Q8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj5TZWNvbmQ8L29w
dGlvbj4KKyAgICA8L3NlbGVjdD48L3A+CisgICAgPHA+PGlucHV0IHR5cGU9InRpbWUiIGNsYXNz
PSJ0ZXN0IiBkYXRhLXRlc3QtbmFtZT0idGltZSIgdmFsdWU9IjE0OjI4Ij48L3A+Cis8L2Rpdj4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitsZXQgZWxlbWVudFRvVGVzdDsK
KworY29uc3QgbW9kaWZpZXJEaXNwbGF5TmFtZU1hcCA9IHsKKyAgICAiYWx0S2V5IjogIk9wdGlv
biIsCisgICAgImN0cmxLZXkiOiAiQ29udHJvbCIsCisgICAgIm1ldGFLZXkiOiAiQ29tbWFuZCIs
CisgICAgInNoaWZ0S2V5IjogIlNoaWZ0IiwKKyAgICAiY2Fwc0xvY2tLZXkiOiAiQ2FwcyBMb2Nr
IiwKK30KKworY2xhc3MgS2V5Q29tbWFuZCB7CisgICAgY29uc3RydWN0b3Ioa2V5LCBtb2RpZmll
cnMgPSBbXSkKKyAgICB7CisgICAgICAgIHRoaXMua2V5ID0ga2V5OworICAgICAgICB0aGlzLm1v
ZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAg
ICAgICBsZXQgcmVhZGFibGVDb21tYW5kID0gdGhpcy5tb2RpZmllcnMubWFwKChtb2RpZmllcikg
PT4gbW9kaWZpZXJEaXNwbGF5TmFtZU1hcFttb2RpZmllcl0pOworICAgICAgICByZWFkYWJsZUNv
bW1hbmQucHVzaCh0aGlzLmtleSk7CisgICAgICAgIHJldHVybiByZWFkYWJsZUNvbW1hbmQuam9p
bigiICsgIik7CisgICAgfQorfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBsZXQgdGVzdENv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpOworICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7CisgICAgZmluaXNoSlNU
ZXN0KCkKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0RmFpbGVkKCJNdXN0IGJlIHJ1biBpbiBXZWJLaXRU
ZXN0UnVubmVyLiIpOworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBsZXQgZWxlbWVudHNUb1Rlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJ0ZXN0Iik7CisgICAgZm9yIChsZXQga2V5Q29tbWFuZCBvZiBbbmV3IEtleUNvbW1hbmQoImVz
Y2FwZSIpLCBuZXcgS2V5Q29tbWFuZCgiLiIsIFsibWV0YUtleSJdKV0pIHsKKyAgICAgICAgZGVi
dWcoYDxicj5EaXNtaXNzIGJ5IHByZXNzaW5nICR7a2V5Q29tbWFuZH06YCk7CisgICAgICAgIGZv
ciAoZWxlbWVudFRvVGVzdCBvZiBlbGVtZW50c1RvVGVzdCkgeworICAgICAgICAgICAgZGVidWco
YDxicj5Gb3IgJHtlbGVtZW50VG9UZXN0LmRhdGFzZXQudGVzdE5hbWV9OmApOworICAgICAgICAg
ICAgbGV0IGV4cGVjdGVkVmFsdWUgPSBlbGVtZW50VG9UZXN0LnZhbHVlOworICAgICAgICAgICAg
YXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihlbGVt
ZW50VG9UZXN0KTsKKyAgICAgICAgICAgIFVJSGVscGVyLmtleURvd24oImVzY2FwZSIpOworICAg
ICAgICAgICAgYXdhaXQgVUlIZWxwZXIud2FpdEZvcktleWJvYXJkVG9IaWRlKCk7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVsZW1lbnRUb1Rlc3QudmFsdWUiLCBleHBlY3Rl
ZFZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbGVtZW50VG9UZXN0ID0gbnVsbDsKKyAg
ICBkb25lKCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHByZXNzaW5nIHRoZSBFc2Nh
cGUga2V5IG9yIENvbW1hbmQgKyAuIGRpc21pc3NlcyBhIHBpY2tlciB3aXRob3V0IGNhdXNpbmcg
YSB2YWx1ZSBjaGFuZ2UuIik7CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366184</attachid>
            <date>2019-03-28 11:06:46 -0700</date>
            <delta_ts>2019-03-28 11:19:49 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-196272-20190328110645.patch</filename>
            <type>text/plain</type>
            <size>38883</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIxMGVlYWQ1OGExYjZlZjFh
NWQxZmM5ZDM0ZjI4MDBhMTMzZWI5NmEuLjU0Y2QyN2E1ZDNhZTkwNmI1ZGFlYTY3MzU1OGQ1NmE1
NzVlZGY4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDMtMjggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNob3VsZCBiZSBhYmxl
IHRvIGRpc21pc3MgcGlja2VyIG9yIHBvcG92ZXIgdXNpbmcgdGhlIGtleWJvYXJkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyNzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4OTQzMTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVyY2VwdCBrZXkgZXZlbnRzIGFuZCByb3V0ZSB0aGVtIHRv
IHRoZSBjdXJyZW50IGlucHV0IHBlcmlwaGVyYWwgKGlmIHdlIGhhdmUgb25lKS4gQWRkIGEgYmFz
ZSBrZXkgZXZlbnQgaGFuZGxlcgorICAgICAgICBmb3IgYWxsIGZvcm0gcGVyaXBoZXJhbHMgdGhh
dCBkaXNtaXNzZXMgdGhlIGFjY2Vzc29yeSB3aGVuIGVpdGhlciB0aGUgRXNjYXBlIGtleSBpcyBw
cmVzc2VkIG9yIENvbW1hbmQgKyAuIGlzIHByZXNzZWQuCisgICAgICAgIEkgd2lsbCBmaXggdGhp
cyBpc3N1ZSBmb3IgdGhlIGZpbGUgdXBsb2FkIHBpY2tlci9wb3BvdmVyIGluIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjg3Pi4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6IEFkZCBmaWxlIFdLRm9ybVBlcmlwaGVyYWxCYXNlLm1tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGVuZEVkaXRpbmdBbmRVcGRhdGVGb2N1c0FwcGVhcmFuY2VXaXRoUmVhc29u
XSk6IEFkZGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVy
Rm9yV2ViVmlld10pOiBXcml0ZSBpbiB0ZXJtcyBvZiAtZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnB1dFZpZXddKTogQ29kZSBz
dHlsZSBuaXQgd2hpbGUgSSBhbSBoZXJlOyBhZGQgYW4gZW1wdHkgbGluZSB0byBkZW1hcmNhdGUg
dGhlICJjcmF6eSIKKyAgICAgICAgY29kZSB0aGF0IHRoZSBGSVhNRSBpcyByZWZlcnJpbmcgdG8g
YW5kIHNob3VsZCBpZGVhbGx5IGJlIHJlbW92ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGlzIHNhbmUg
dG8gYWx3YXlzIGRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjY2Vzc29yeURvbmVdKTog
V2hlbiB0aGUgYWNjZXNzb3J5IGlzIGRpc21pc3NlZCB2aWEgdGhlIERvbmUgYnV0dG9uIChpUGhv
bmUpIG9yIGJ5IHByZXNzaW5nCisgICAgICAgIEVzY2FwZSBvciBDb21tYW5kICsgLiB1c2luZyBh
IGhhcmR3YXJlIGtleWJvYXJkIChpUGhvbmUgb3IgaVBhZCkgdGhlbiBlbmQgdGhlIGN1cnJlbnQg
ZWRpdGluZyBzZXNzaW9uLCBidXQKKyAgICAgICAgZG8gbm90IHJlc2lnbiBmaXJzdCByZXNwb25k
ZXIgc3RhdHVzIGFzIHRoZSBwYWdlIGFjdGl2YXRpb24gc3RhdGUgc2hvdWxkIG5vdCBiZSBjaGFu
Z2VkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVLZXlVSUV2ZW50Ol0pOiBCcmlu
ZyBiYWNrIHRoaXMgY29kZSB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKFVJS0lUX0tFWUJPQVJEX0FE
RElUSU9OUykKKyAgICAgICAgYXMgd2UgbmVlZCB0byByb3V0ZSBrZXkgZXZlbnRzIHRvIHRoZSBp
bnB1dCBwZXJpcGhlcmFsIChpZiB3ZSBoYXZlIG9uZSkuIElmIHRoZSBpbnB1dCBwZXJpcGhlcmFs
IGhhbmRsZXMgaXQKKyAgICAgICAgdGhlbiB3ZSdyZSBkb25lOiBubyBuZWVkIHRvIGxldCBVSUtp
dCBvciBXZWJLaXQgaGFuZGxlIGl0IHdoZW4gYnVpbGRpbmcgd2l0aCBVU0UoVUlLSVRfS0VZQk9B
UkRfQURESVRJT05TKSwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgaW5wdXQgcGVyaXBo
ZXJhbCBkb2VzIG5vdCBoYW5kbGUgaXQgdGhlbiBkbyB3aGF0IHdlIGRvIG5vdy4KKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQ
cmV2aW91c05vZGU6Y2hhbmdpbmdBY3Rpdml0eVN0YXRlOnVzZXJPYmplY3Q6XSk6CisgICAgICAg
IElmIHRoZSBlbGVtZW50IGlzIHJlLWZvY3VzZWQgYW5kIHdlIGhhdmUgYW4gaW5wdXQgcGVyaXBo
ZXJhbCB0aGVuIHdlIHdhbnQgdG8gZW5zdXJlIHdlIGFyZSBmaXJzdCByZXNwb25kZXIsCisgICAg
ICAgIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LCB1cGRhdGUgdGhlIGFjY2Vzc29yeSBhbmQg
dGVsbCB0aGUgcGVyaXBoZXJhbCB0aGF0IGVkaXRpbmcgaGFzIGJlZ3VuIChhZ2FpbikuCisgICAg
ICAgIEZvciBhbGwgb3RoZXIgZWxlbWVudCByZS1mb2N1c2luZyB3aGVyZSB3ZSBkb24ndCBoYXZl
IGEgcGVyaXBoZXJhbCBkbyB3aGF0IHdlIGRvIG5vdy4gQWxzbywgdXBkYXRlIF9pc0VkaXRhYmxl
CisgICAgICAgIHRvIHJlZmxlY3Qgd2hldGhlciB0aGUgZm9jdXNlZCBlbGVtZW50IGNvbnRhaW5z
IHNlbGVjdGFibGUgdGV4dC4gVGhpcyBpcyB3aGF0IFVJS2l0IHdhbnRzIHRvIGtub3cgd2hlbiBp
dCBxdWVyaWVzCisgICAgICAgIC1pc0VkaXRhYmxlLiBOb3cgdGhhdCB3ZSBubyBsb25nZXIgYmx1
ciB0aGUgZm9jdXNlZCBlbGVtZW50IG9uIGlQYWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBkaXNtaXNz
ZWQgYW5kIGtlZXAgdGhlCisgICAgICAgIHBlcmlwaGVyYWwgdW50aWwgdGhlcmUgaXMgYSBmb2N1
cyBjaGFuZ2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBnaXZlIHRoZSBjb3JyZWN0IGFuc3dl
ciB0byBVSUtpdCBvbiB2aWV3CisgICAgICAgIGVkaXRhYmlsaXR5LiBPdGhlcndpc2UsIFVJS2l0
IHRoaW5rcyBpdCBuZWVkcyB0byB1cGRhdGUgdGhlIHRleHQgc2VsZWN0aW9uIHN0YXRlIHdoZW4g
YSBwb3B1cCBidXR0b24gaXMgdGFwcGVkCisgICAgICAgIGFnYWluIChhcyBwYXJ0IG9mIGl0cyBn
ZXN0dXJlIHJlY29nbml6ZXIgbG9naWMpIGFuZCB0aGlzIGNhdXNlcyBhbiBhc3NlcnRpb24gZmFp
bHVyZSBpbiBVSUtpdCBhZnRlciBpdCBjYWxscyBiYWNrCisgICAgICAgIGludG8gdXMgdG8gYXNr
IGZvciBzZWxlY3Rpb24gZGV0YWlscywgd2hpY2ggd2UgY29ycmVjdGx5IHJlc3BvbmQgd2l0aCB0
aGUgZXF1aXZhbGVudCBvZiAid2UgaGF2ZSBub25lIiBhbmQgaXMKKyAgICAgICAgbm90IHRoZSBh
bnN3ZXIgVUlLaXQgZXhwZWN0cyBzaW5jZSB3ZSB0b2xkIGl0IHdlIGFyZSBlZGl0YWJsZS4gKEN1
cnJlbnRseSB3ZSBtYW5hZ2UgdG8gZ2V0IGF3YXkgd2l0aCB0ZWxsaW5nIFVJS2l0CisgICAgICAg
IHdlIGFyZSBhbHdheXMgZWRpdGFibGUgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gcGVy
Zm9ybSBhIHNlbGVjdGlvbiBvcGVyYXRpb24gd2hlbiB3ZSBoYXZlIGEgcG9wb3ZlciBvcGVuLgor
ICAgICAgICBDbG9zaW5nIHRoZSBwb3BvdmVyIGJsdXJzIHRoZSBlbGVtZW50LCBzZXR0aW5nIC1p
c0VkaXRhYmxlIHRvIE5PIGFuZCBkZWFsbG9jYXRlcyB0aGUgcGVyaXBoZXJhbCBhdm9pZGluZyB0
aGlzIGlzc3VlKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
Lm1tOgorICAgICAgICAoLVtXS0NvbG9yUG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10pOiBEaXNt
aXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAoLVtXS0Zvcm1Db2xvckNvbnRyb2wgaW5pdFdpdGhW
aWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5pdGlhbGl6ZXIuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBiZWdpbkVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tGb3JtQ29sb3JDb250cm9sIGVuZEVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tOgorICAgICAgICAoLVtXS0Zvcm1J
bnB1dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3Mg
aW5pdGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybUlucHV0Q29udHJvbCBkYXRlVGltZVBpY2tl
ckNhbGVuZGFyVHlwZV0pOiBXcml0ZSBpbiB0ZXJtcyBvZiBzZWxmLmNvbnRyb2wuCisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQb3BvdmVyIGNvbnRyb2xFbmRFZGl0aW5nXSk6IERpc21pc3MgdGhlIHBv
cG92ZXIgYW5kIHRlbGwgdGhlIGNvbnRyb2xsZXIgdGhhdCBlZGl0aW5nIGVuZGVkLgorICAgICAg
ICAoLVtXS0Zvcm1JbnB1dENvbnRyb2wgYmVnaW5FZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUlucHV0Q29udHJvbCBlbmRFZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLRm9ybUlucHV0Q29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaW5pdFdpdGhWaWV3OmNvbnRyb2w6XSk6IFRha2Ug
b3duZXJzaGlwIG9mIHRoZSBwYXNzZWQgV0tGb3JtQ29udHJvbC4KKyAgICAgICAgKC1bV0tGb3Jt
UGVyaXBoZXJhbEJhc2UgYmVnaW5FZGl0aW5nXSk6IFR1cm4gYXJvdW5kIGFuZCB0ZWxsIHRoZSBj
b250cm9sLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBlbmRFZGl0aW5nXSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBhc3Npc3RhbnRWaWV3XSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBjb250cm9sXSk6IFJldHVybiB0
aGUgY29udHJvbC4KKyAgICAgICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaGFuZGxlS2V5RXZl
bnQ6XSk6IERpc21pc3MgdGhlIGFjY2Vzc29yeSAoaW4gdGhlIHNhbWUgd2F5IHdlIGRpc21pc3Mg
d2hlbiB0aGUgRG9uZQorICAgICAgICBidXR0b24gaXMgcHJlc3NlZCBvbiBpUGhvbmUpIG9uIGtl
eWRvd24gb2YgdGhlIEVzY2FwZSBrZXkgb3Igd2hlbiB3ZSByZWNlaXZlIGEgVUlLZXlJbnB1dEVz
Y2FwZSBldmVudCAoZm9yCisgICAgICAgIENvbW1hbmQgKyAuKS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW06CisgICAgICAgICgtW1dLRm9ybVNlbGVj
dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5p
dGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgc2VsZWN0Um93OmluQ29t
cG9uZW50OmV4dGVuZGluZ1NlbGVjdGlvbjpdKTogV3JpdGUgaW4gdGVybXMgb2Ygc2VsZi5jb250
cm9sLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIHNlbGVjdEZvcm1Qb3BvdmVyVGl0
bGVdKTogRGl0dG8uCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgYXNzaXN0YW50Vmll
d10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGJlZ2luRWRpdGlu
Z10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGVuZEVkaXRpbmdd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBv
cG92ZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10p
OiBEaXNtaXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgZmlsZXMgV0tGb3JtUGVyaXBoZXJhbEJhc2Uue2gsIG1tfS4KKwogMjAx
OS0wMy0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV1bR1RLXSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaCBjYW4g
cmV0dXJuIE5VTEwgd2l0aG91dCBzZXR0aW5nIGVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMzUxMTY0ZmFjYWUyNDE4ZjdiZTFlYzAzYjY1N2RjNDkxYzk3MDhkOS4uYWUxMGQ3OWNkODE5
MTM0N2ZhMDg4NDc2ZjUxZmY1YzY2MmZmMDcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
MzY2LDYgKzM2Niw3IEBAIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xW
aWV3Lm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1JbnB1dENvbnRyb2wubW0KK1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJh
bEJhc2UubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5tbQogVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybVNlbGVjdFBpY2tlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGY4ZGYxM2NmNDIyY2Y1MTk3NWYz
YzM2MzhhM2U3YjRhYzlkZmE4NzQuLmZjOWJmNmM1YjM5NmQxMjUzNzM3NWEwYWU1MzdjMzRkYzM4
MDUwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTMxMiw3ICszMTIsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29y
cmVjdGlvbkRhdGEgewogCiAgICAgQk9PTCBfYmVjb21pbmdGaXJzdFJlc3BvbmRlcjsKICAgICBC
T09MIF9yZXNpZ25pbmdGaXJzdFJlc3BvbmRlcjsKLSAgICBCT09MIF9kaXNtaXNzaW5nQWNjZXNz
b3J5OwogICAgIEJPT0wgX25lZWRzRGVmZXJyZWRFbmRTY3JvbGxpbmdTZWxlY3Rpb25VcGRhdGU7
CiAgICAgQk9PTCBfaXNDaGFuZ2luZ0ZvY3VzOwogICAgIEJPT0wgX2lzQmx1cnJpbmdGb2N1c2Vk
RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDQyZGEwMmVjMTI0YWQ4NDM1ZTQ2Y2I4NmM1OTFk
ZDIzNWFmYjlmNzkuLjliZTAzMWQzMmY1MWJkMTg0ODA5MDkxODJmNzlhNTgwNmNhYTg2ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQpAQCAtMTE2OSwyNCArMTE2OSwzNCBAQCAtIChCT09MKXJlc2lnbkZpcnN0
UmVzcG9uZGVyCiAgICAgcmV0dXJuIFtfd2ViVmlldyByZXNpZ25GaXJzdFJlc3BvbmRlcl07CiB9
CiAKLS0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3Ci17Ci0gICAgLy8gRklY
TUU6IE1heWJlIHdlIHNob3VsZCBjYWxsIHJlc2lnbkZpcnN0UmVzcG9uZGVyIG9uIHRoZSBzdXBl
cmNsYXNzCi0gICAgLy8gYW5kIGRvIG5vdGhpbmcgaWYgdGhlIHJldHVybiB2YWx1ZSBpcyBOTy4K
LQotICAgIFNldEZvclNjb3BlPEJPT0w+IHJlc2lnbmluZ0ZpcnN0UmVzcG9uZGVyU2NvcGUgeyBf
cmVzaWduaW5nRmlyc3RSZXNwb25kZXIsIFlFUyB9OwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgRW5kRWRpdGluZ1JlYXNvbikgeworICAgIEVuZEVkaXRpbmdSZWFzb25BY2Nlc3NvcnlEb25l
LAorICAgIEVuZEVkaXRpbmdSZWFzb25SZXNpZ25pbmdGaXJzdFJlc3BvbmRlciwKK307CiAKKy0g
KHZvaWQpZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3VzQXBwZWFyYW5jZVdpdGhSZWFzb246KEVuZEVk
aXRpbmdSZWFzb24pcmVhc29uCit7CiAgICAgaWYgKCFfd2ViVmlldy5fcmV0YWluaW5nQWN0aXZl
Rm9jdXNlZFN0YXRlKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tcGxldGUgdGhlIGVkaXRp
bmcgb3BlcmF0aW9uIGJlZm9yZSB3ZSBibHVyIHRoZSBlbGVtZW50LgogICAgICAgICBbc2VsZiBf
ZW5kRWRpdGluZ107Ci0gICAgICAgIGlmIChfZGlzbWlzc2luZ0FjY2Vzc29yeSB8fCBfa2V5Ym9h
cmREaWRSZXF1ZXN0RGlzbWlzc2FsKQorICAgICAgICBpZiAoKHJlYXNvbiA9PSBFbmRFZGl0aW5n
UmVhc29uQWNjZXNzb3J5RG9uZSAmJiAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkp
IHx8IF9rZXlib2FyZERpZFJlcXVlc3REaXNtaXNzYWwpCiAgICAgICAgICAgICBfcGFnZS0+Ymx1
ckZvY3VzZWRFbGVtZW50KCk7CiAgICAgfQogCiAgICAgW3NlbGYgX2NhbmNlbEludGVyYWN0aW9u
XTsKICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgZGVhY3RpdmF0ZVNlbGVjdGlvbl07Ci0g
ICAgCisKICAgICBbc2VsZiBfcmVzZXRJbnB1dFZpZXdEZWZlcnJhbF07Cit9CisKKy0gKEJPT0wp
cmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3Cit7CisgICAgLy8gRklYTUU6IE1heWJlIHdl
IHNob3VsZCBjYWxsIHJlc2lnbkZpcnN0UmVzcG9uZGVyIG9uIHRoZSBzdXBlcmNsYXNzCisgICAg
Ly8gYW5kIGRvIG5vdGhpbmcgaWYgdGhlIHJldHVybiB2YWx1ZSBpcyBOTy4KKworICAgIFNldEZv
clNjb3BlPEJPT0w+IHJlc2lnbmluZ0ZpcnN0UmVzcG9uZGVyU2NvcGUgeyBfcmVzaWduaW5nRmly
c3RSZXNwb25kZXIsIFlFUyB9OworCisgICAgW3NlbGYgZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVdpdGhSZWFzb246RW5kRWRpdGluZ1JlYXNvblJlc2lnbmluZ0ZpcnN0UmVzcG9u
ZGVyXTsKIAogICAgIC8vIElmIHRoZSB1c2VyIGV4cGxpY2l0bHkgZGlzbWlzc2VkIHRoZSBrZXli
b2FyZCB0aGVuIHdlIHdpbGwgbG9zZSBmaXJzdCByZXNwb25kZXIKICAgICAvLyBzdGF0dXMgb25s
eSB0byBnYWluIGl0IGJhY2sgYWdhaW4uIEp1c3QgZG9uJ3QgcmVzaWduIGluIHRoYXQgY2FzZS4K
QEAgLTM3NTEsOCArMzc2MSw4IEBAIC0gKHZvaWQpYWNjZXNzb3J5Q2xlYXIKIAogLSAodm9pZClh
Y2Nlc3NvcnlEb25lCiB7Ci0gICAgU2V0Rm9yU2NvcGU8Qk9PTD4gZGlzbWlzc2luZ0FjY2Vzc29y
eVNjb3BlIHsgX2Rpc21pc3NpbmdBY2Nlc3NvcnksIFlFUyB9OwotICAgIFtzZWxmIHJlc2lnbkZp
cnN0UmVzcG9uZGVyXTsKKyAgICBbc2VsZiBlbmRFZGl0aW5nQW5kVXBkYXRlRm9jdXNBcHBlYXJh
bmNlV2l0aFJlYXNvbjpFbmRFZGl0aW5nUmVhc29uQWNjZXNzb3J5RG9uZV07CisgICAgX3BhZ2Ut
PnNldElzU2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRFbGVtZW50KGZhbHNlKTsKIH0KIAogLSAo
dm9pZClhY2Nlc3NvcnlUYWI6KEJPT0wpaXNOZXh0CkBAIC00MzU1LDIxICs0MzY1LDI4IEBAIC0g
KEJPT0wpcmVxdWlyZXNLZXlFdmVudHMKICAgICByZXR1cm4gWUVTOwogfQogCi0jaWYgIVVTRShV
SUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCiAtICh2b2lkKV9oYW5kbGVLZXlVSUV2ZW50Oig6OlVJ
RXZlbnQgKilldmVudAogewogICAgIGJvb2wgaXNIYXJkd2FyZUtleWJvYXJkRXZlbnQgPSAhIWV2
ZW50Ll9oaWRFdmVudDsKLQogICAgIC8vIFdlIG9ubHkgd2FudCB0byBoYW5kbGUga2V5IGV2ZW50
IGZyb20gdGhlIGhhcmR3YXJlIGtleWJvYXJkIHdoZW4gd2UgYXJlCiAgICAgLy8gZmlyc3QgcmVz
cG9uZGVyIGFuZCB3ZSBhcmUgbm90IGludGVyYWN0aW5nIHdpdGggZWRpdGFibGUgY29udGVudC4K
LSAgICBpZiAoW3NlbGYgaXNGaXJzdFJlc3BvbmRlcl0gJiYgaXNIYXJkd2FyZUtleWJvYXJkRXZl
bnQgJiYgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKSB7CisgICAgaWYg
KFtzZWxmIGlzRmlyc3RSZXNwb25kZXJdICYmIGlzSGFyZHdhcmVLZXlib2FyZEV2ZW50ICYmIChf
aW5wdXRQZXJpcGhlcmFsIHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJs
ZSkpIHsKKyAgICAgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaGFuZGxlS2V5RXZlbnQ6KV0pIHsKKyAgICAgICAgICAgIGlmIChbX2lucHV0UGVy
aXBoZXJhbCBoYW5kbGVLZXlFdmVudDpldmVudF0pCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKKyAgICAgICAgW3N1
cGVyIF9oYW5kbGVLZXlVSUV2ZW50OmV2ZW50XTsKKyNlbHNlCiAgICAgICAgIFtzZWxmIGhhbmRs
ZUtleUV2ZW50OmV2ZW50XTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
W3N1cGVyIF9oYW5kbGVLZXlVSUV2ZW50OmV2ZW50XTsKIH0KIAorI2lmICFVU0UoVUlLSVRfS0VZ
Qk9BUkRfQURESVRJT05TKQogLSAodm9pZCloYW5kbGVLZXlFdmVudDooOjpVSUV2ZW50ICopZXZl
bnQKIHsKICAgICAvLyBXZWJDb3JlIGhhcyBhbHJlYWR5IHNlZW4gdGhlIGV2ZW50LCBubyBuZWVk
IGZvciBjdXN0b20gcHJvY2Vzc2luZy4KQEAgLTQ5NjIsOCArNDk3OSwxNiBAQCAtICh2b2lkKV9l
bGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYp
aW5mb3JtYXRpb24gdQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhpcyBjaGVj
ayB3aGVuIHdlIG1hbmFnZSB0byBzZW5kIEVsZW1lbnREaWRGb2N1cyBmcm9tIHRoZSBXZWJQcm9j
ZXNzCiAgICAgLy8gb25seSB3aGVuIGl0IGlzIHRydWx5IHRpbWUgdG8gc2hvdyB0aGUga2V5Ym9h
cmQuCi0gICAgaWYgKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IGlu
Zm9ybWF0aW9uLmVsZW1lbnRUeXBlICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1l
bnRSZWN0ID09IGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0KQorICAgIGlmIChfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSAmJiBf
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9PSBpbmZvcm1hdGlvbi5lbGVt
ZW50UmVjdCkgeworICAgICAgICBpZiAoX2lucHV0UGVyaXBoZXJhbCkgeworICAgICAgICAgICAg
aWYgKCFzZWxmLmlzRmlyc3RSZXNwb25kZXIpCisgICAgICAgICAgICAgICAgW3NlbGYgYmVjb21l
Rmlyc3RSZXNwb25kZXJdOworICAgICAgICAgICAgW3NlbGYgX3pvb21Ub1JldmVhbEZvY3VzZWRF
bGVtZW50XTsKKyAgICAgICAgICAgIFtzZWxmIF91cGRhdGVBY2Nlc3NvcnldOworICAgICAgICAg
ICAgW19pbnB1dFBlcmlwaGVyYWwgYmVnaW5FZGl0aW5nXTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAgICAgW193ZWJWaWV3IF9yZXNldEZvY3VzUHJlc2VydmF0aW9uQ291
bnRdOwogCkBAIC00OTgyLDcgKzUwMDcsOCBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNv
bnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAg
IGlmIChkZWxlZ2F0ZUltcGxlbWVudHNXaWxsU3RhcnRJbnB1dFNlc3Npb24pCiAgICAgICAgIFtp
bnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHdpbGxTdGFydElucHV0U2Vzc2lvbjpfZm9y
bUlucHV0U2Vzc2lvbi5nZXQoKV07CiAKLSAgICBCT09MIGVkaXRhYmxlQ2hhbmdlZCA9IFtzZWxm
IHNldElzRWRpdGFibGU6WUVTXTsKKyAgICBCT09MIGlzU2VsZWN0YWJsZSA9IG1heUNvbnRhaW5T
ZWxlY3RhYmxlVGV4dChpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSk7CisgICAgQk9PTCBlZGl0YWJs
ZUNoYW5nZWQgPSBbc2VsZiBzZXRJc0VkaXRhYmxlOmlzU2VsZWN0YWJsZV07CiAgICAgX2ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24gPSBpbmZvcm1hdGlvbjsKICAgICBfdHJhaXRzID0gbmlsOwog
CkBAIC00OTk5LDcgKzUwMjUsNyBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdl
YktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAgIFtzZWxm
IHJlbG9hZElucHV0Vmlld3NdOwogI2VuZGlmCiAKLSAgICBpZiAobWF5Q29udGFpblNlbGVjdGFi
bGVUZXh0KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSkKKyAgICBpZiAo
aXNTZWxlY3RhYmxlKQogICAgICAgICBbc2VsZiBfc2hvd0tleWJvYXJkXTsKIAogICAgIC8vIFRo
ZSBjdXN0b20gZml4ZWQgcG9zaXRpb24gcmVjdCBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSAtaXNG
b2N1c2luZ0VsZW1lbnQsIHNvIGlmIHRoYXQgY2hhbmdlcyB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBy
ZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1Db2xvckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1Db2xvckNvbnRyb2wuaAppbmRleCA0M2Q2ZGNiZDU1ODk5NjM4Mzk1NGI3YTU3OTYyZGVkNTc3
YjVlZjhiLi5jM2Q1NTFiMzEyNzZlMmQ4NTI2ZDNjZGI5NTA5YzVmOTcwYTk1Njc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgi
CisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgogCiBAY2xhc3MgV0tDb250ZW50Vmll
dzsKIAotQGludGVyZmFjZSBXS0Zvcm1Db2xvckNvbnRyb2wgOiBOU09iamVjdDxXS0Zvcm1QZXJp
cGhlcmFsPgorQGludGVyZmFjZSBXS0Zvcm1Db2xvckNvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFs
QmFzZQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7
CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1Db2xvckNvbnRyb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtQ29sb3JDb250cm9sLm1tCmluZGV4IGY1NTM5ZjM0ZDg2YTA0YzFlOGIwYjZmZjI0ZmVm
OGE2ZDBmN2U4YzUuLjU3Y2VhNWZhM2YyMWRjYmNmZmUxNWFkODBkZGRiNDdmY2EzYjExYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNv
bnRyb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNv
bG9yQ29udHJvbC5tbQpAQCAtODYsNDIgKzg2LDIzIEBAIC0gKHZvaWQpY29udHJvbEJlZ2luRWRp
dGluZwogCiAtICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCiB7CisgICAgW3NlbGYgZGlzbWlzc1Bv
cG92ZXJBbmltYXRlZDpOT107CiB9CiAKIEBlbmQKIAogI3ByYWdtYSBtYXJrIC0gV0tGb3JtQ29s
b3JDb250cm9sCiAKLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1Db2xvckNvbnRyb2wgewotICAgIFJl
dGFpblB0cjxpZDxXS0Zvcm1Db250cm9sPj4gX2NvbnRyb2w7Ci19CitAaW1wbGVtZW50YXRpb24g
V0tGb3JtQ29sb3JDb250cm9sCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29u
dGVudFZpZXcgKil2aWV3CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KKyAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+
PiBjb250cm9sOwogICAgIGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKLSAg
ICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xvclBvcG92ZXIgYWxsb2NdIGluaXRXaXRo
Vmlldzp2aWV3XSk7CisgICAgICAgIGNvbnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xvclBvcG92ZXIg
YWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CiAgICAgZWxzZQotICAgICAgICBfY29udHJvbCA9
IGFkb3B0TlMoW1tXS0NvbG9yUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwotCi0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKLXsKLSAgICBy
ZXR1cm4gW19jb250cm9sIGNvbnRyb2xWaWV3XTsKLX0KLQotLSAodm9pZCliZWdpbkVkaXRpbmcK
LXsKLSAgICBbX2NvbnRyb2wgY29udHJvbEJlZ2luRWRpdGluZ107Ci19Ci0KLS0gKHZvaWQpZW5k
RWRpdGluZwotewotICAgIFtfY29udHJvbCBjb250cm9sRW5kRWRpdGluZ107CisgICAgICAgIGNv
bnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xvclBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXdd
KTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNvbnRyb2w6V1RGTW92ZShj
b250cm9sKV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaAppbmRleCAxNjJjMTZiNDg5YTBlMzFlZDVm
Y2Y1MTgwM2MwODZkNjVmZjhlNjcyLi5lMDdiYjQ5MWU4YzZhMzg4NzA2ZjFmNjlkNjI3NDJiN2E1
OGZhZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtSW5wdXRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybUlucHV0Q29udHJvbC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKLSNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKKyNpbXBvcnQgIldL
Rm9ybVBlcmlwaGVyYWxCYXNlLmgiCiAKIEBjbGFzcyBXS0NvbnRlbnRWaWV3OwogCi1AaW50ZXJm
YWNlIFdLRm9ybUlucHV0Q29udHJvbCA6IE5TT2JqZWN0PFdLRm9ybVBlcmlwaGVyYWw+CitAaW50
ZXJmYWNlIFdLRm9ybUlucHV0Q29udHJvbCA6IFdLRm9ybVBlcmlwaGVyYWxCYXNlCiAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29u
dHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENv
bnRyb2wubW0KaW5kZXggY2ZlZDJkNTBhNmM4YmEwM2Q0ZDIwMTllMTFlNmE4Y2QwOTgwYTQ2MS4u
ZjU3ODY2YTExMmNiZDVlOTA3YjQ3NGMzMWRhZWE0ODg0M2ExZGE1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1t
CkBAIC0yMzksNjEgKzIzOSwzNiBAQCAtICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCiBAZW5kCiAK
IC8vIFdLRm9ybUlucHV0Q29udHJvbAotQGltcGxlbWVudGF0aW9uIFdLRm9ybUlucHV0Q29udHJv
bCB7Ci0gICAgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gX2NvbnRyb2w7Ci19
CitAaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRDb250cm9sCiAKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBVSURhdGVQaWNrZXJNb2Rl
IG1vZGU7CiAKICAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVt
ZW50VHlwZSkgewogICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgogICAgICAgICBtb2RlID0gVUlE
YXRlUGlja2VyTW9kZURhdGU7CiAgICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBJbnB1dFR5cGU6
OkRhdGVUaW1lTG9jYWw6CiAgICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlRGF0ZUFuZFRp
bWU7CiAgICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAg
IG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlVGltZTsKICAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNl
IElucHV0VHlwZTo6TW9udGg6CiAgICAgICAgIG1vZGUgPSAoVUlEYXRlUGlja2VyTW9kZSlVSURh
dGVQaWNrZXJNb2RlWWVhckFuZE1vbnRoOwogICAgICAgICBicmVhazsKLQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAor
ICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+IGNvbnRyb2w7CiAgICAgaWYg
KGN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKQotICAgICAgICBfY29udHJvbCA9IGFk
b3B0TlMoW1tXS0RhdGVUaW1lUG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBp
Y2tlck1vZGU6bW9kZV0pOworICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQ
b3BvdmVyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTptb2RlXSk7CiAg
ICAgZWxzZQotICAgICAgICBfY29udHJvbCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFs
bG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTptb2RlXSk7Ci0KLSAgICByZXR1
cm4gc2VsZjsKLQotfQotCi0tICh2b2lkKWJlZ2luRWRpdGluZwotewotICAgIFtfY29udHJvbCBj
b250cm9sQmVnaW5FZGl0aW5nXTsKLX0KLQotLSAodm9pZCllbmRFZGl0aW5nCi17Ci0gICAgW19j
b250cm9sIGNvbnRyb2xFbmRFZGl0aW5nXTsKLX0KLQotLSAoVUlWaWV3ICopYXNzaXN0YW50Vmll
dwotewotICAgIHJldHVybiBbX2NvbnRyb2wgY29udHJvbFZpZXddOworICAgICAgICBjb250cm9s
ID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRh
dGVQaWNrZXJNb2RlOm1vZGVdKTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3
IGNvbnRyb2w6V1RGTW92ZShjb250cm9sKV07CiB9CiAKIEBlbmQKQEAgLTMwMiwxMiArMjc3LDEw
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dENvbnRyb2wgKFdLVGVzdGluZykKIAogLSAo
TlNTdHJpbmcgKilkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZQogewotICAgIGlmIChbX2NvbnRy
b2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKLSAgICAgICAgcmV0dXJu
IFsoV0tEYXRlVGltZVBpY2tlciAqKV9jb250cm9sLmdldCgpIGNhbGVuZGFyVHlwZV07Ci0KLSAg
ICBpZiAoW19jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIuY2xhc3NdKQot
ICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUG9wb3ZlciAqKV9jb250cm9sLmdldCgpIGNhbGVu
ZGFyVHlwZV07Ci0KKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRp
bWVQaWNrZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2Vs
Zi5jb250cm9sIGNhbGVuZGFyVHlwZV07CisgICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZD
bGFzczpXS0RhdGVUaW1lUG9wb3Zlci5jbGFzc10pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRp
bWVQb3BvdmVyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlwZV07CiAgICAgcmV0dXJuIG5pbDsK
IH0KIApAQCAtMzg4LDYgKzM2MSw4IEBAIC0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwogCiAt
ICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCiB7CisgICAgW3NlbGYgZGlzbWlzc1BvcG92ZXJBbmlt
YXRlZDpOT107CisgICAgW192aWV3Q29udHJvbGxlci5nZXQoKS5pbm5lckNvbnRyb2wgY29udHJv
bEVuZEVkaXRpbmddOwogfQogCiAtIChVSVZpZXcgKiljb250cm9sVmlldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmgKaW5kZXgg
NjdlODg3M2RhY2NiZGNiYjBjY2U3YjEzYmZiYTQ4NGJhYjc4MGQ2My4uYjE4MTJiZTQ0MmYyMmM5
ZjU3MTMwOTFiZTRmNmI3MzI5Y2EzZWEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbC5oCkBAIC0yMywxNiArMjMsMjEgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitAY2xhc3MgVUlFdmVu
dDsKIEBjbGFzcyBVSVZpZXc7CiAKIEBwcm90b2NvbCBXS0Zvcm1QZXJpcGhlcmFsCiAtICh2b2lk
KWJlZ2luRWRpdGluZzsKIC0gKHZvaWQpZW5kRWRpdGluZzsKIC0gKFVJVmlldyAqKWFzc2lzdGFu
dFZpZXc7CitAb3B0aW9uYWwKKy0gKEJPT0wpaGFuZGxlS2V5RXZlbnQ6KFVJRXZlbnQgKilldmVu
dDsKIEBlbmQKIAogQHByb3RvY29sIFdLRm9ybUNvbnRyb2wKIC0gKFVJVmlldyAqKWNvbnRyb2xW
aWV3OwogLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nOwogLSAodm9pZCljb250cm9sRW5kRWRp
dGluZzsKK0BvcHRpb25hbAorLSAoQk9PTCljb250cm9sSGFuZGxlS2V5RXZlbnQ6KFVJRXZlbnQg
KilldmVudDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RlNmM1MmNlYmIxNWUy
OTY2NGJmOWYzM2YzZTQ4ZjY5ZjM5YjgzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAi
V0tGb3JtUGVyaXBoZXJhbC5oIgorI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKworQGludGVyZmFj
ZSBXS0Zvcm1QZXJpcGhlcmFsQmFzZSA6IE5TT2JqZWN0IDxXS0Zvcm1QZXJpcGhlcmFsPgorCist
IChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGNvbnRyb2w6KFJldGFpblB0cjxOU09iamVj
dCA8V0tGb3JtQ29udHJvbD4+JiYpY29udHJvbCBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOwor
CistICh2b2lkKWJlZ2luRWRpdGluZzsKKy0gKHZvaWQpZW5kRWRpdGluZzsKKy0gKFVJVmlldyAq
KWFzc2lzdGFudFZpZXc7CistIChCT09MKWhhbmRsZUtleUV2ZW50OihVSUV2ZW50ICopZXZlbnQ7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tDb250ZW50VmlldyAqdmlldzsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+
ICpjb250cm9sOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNFZGl0
aW5nKSBCT09MIGVkaXRpbmc7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODA5OTlkYTUxYjg3MWQzMzM4ODJmMzZhZGUwN2VjNWQ4YTc1YzZjYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJp
cGhlcmFsQmFzZS5tbQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorCitAaW1wbGVtZW50YXRpb24gV0tGb3JtUGVyaXBoZXJhbEJh
c2UgeworICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+IF9jb250cm9sOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBj
b250cm9sOihSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiYmKWNvbnRyb2wKK3sK
KyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIF92aWV3ID0gdmlldzsKKyAgICBfY29udHJvbCA9IFdURk1vdmUoY29udHJvbCk7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYmVnaW5FZGl0aW5nCit7CisgICAgX2VkaXRpbmcg
PSBZRVM7CisgICAgW19jb250cm9sIGNvbnRyb2xCZWdpbkVkaXRpbmddOworfQorCistICh2b2lk
KWVuZEVkaXRpbmcKK3sKKyAgICBfZWRpdGluZyA9IE5POworICAgIFtfY29udHJvbCBjb250cm9s
RW5kRWRpdGluZ107Cit9CisKKy0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKK3sKKyAgICByZXR1
cm4gW19jb250cm9sIGNvbnRyb2xWaWV3XTsKK30KKworLSAoTlNPYmplY3QgPFdLRm9ybUNvbnRy
b2w+ICopY29udHJvbAoreworICAgIHJldHVybiBfY29udHJvbC5nZXQoKTsKK30KKworLSAoQk9P
TCloYW5kbGVLZXlFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgQVNTRVJUKGV2ZW50Ll9o
aWRFdmVudCk7CisgICAgaWYgKFtfY29udHJvbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGNvbnRyb2xIYW5kbGVLZXlFdmVudDopXSkgeworICAgICAgICBpZiAoW19jb250cm9sIGNvbnRy
b2xIYW5kbGVLZXlFdmVudDpldmVudF0pCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgIH0K
KyAgICBpZiAoIWV2ZW50Ll9pc0tleURvd24pCisgICAgICAgIHJldHVybiBOTzsKKyAgICBVSVBo
eXNpY2FsS2V5Ym9hcmRFdmVudCAqa2V5RXZlbnQgPSAoVUlQaHlzaWNhbEtleWJvYXJkRXZlbnQg
KilldmVudDsKKyAgICBpZiAoa2V5RXZlbnQuX2lucHV0RmxhZ3MgJiBrVUlLZXlib2FyZElucHV0
TW9kaWZpZXJGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBOTzsKKyAgICBpZiAoX2VkaXRp
bmcgJiYgKGtleUV2ZW50Ll9rZXlDb2RlID09IGtISURVc2FnZV9LZXlib2FyZEVzY2FwZSB8fCBb
a2V5RXZlbnQuX3VubW9kaWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dEVzY2Fw
ZV0pKSB7CisgICAgICAgIFtfdmlldyBhY2Nlc3NvcnlEb25lXTsKKyAgICAgICAgcmV0dXJuIFlF
UzsKKyAgICB9CisgICAgcmV0dXJuIE5POworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLmgKaW5kZXggN2JlNjUxYTgwNGE4OTZlOTBkNjFjZDU4
OGU2Mjk0ODA1ZjgyNjI0Mi4uZjY5NWJlMzFiOThlYmRkY2ZiNmM4MDFiOWI1YmNlZmQyMWRlODUw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNl
bGVjdENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtU2VsZWN0Q29udHJvbC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgIkZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCi0jaW1wb3J0ICJXS0Zv
cm1QZXJpcGhlcmFsLmgiCisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgogI2ltcG9y
dCAiV0tGb3JtUG9wb3Zlci5oIgogI2ltcG9ydCA8VUlLaXQvVUlQaWNrZXJWaWV3Lmg+CiAKQEAg
LTM1LDcgKzM1LDcgQEAgQ0dGbG9hdCBhZGp1c3RlZEZvbnRTaXplKENHRmxvYXQgdGV4dFdpZHRo
LCBVSUZvbnQgKiwgQ0dGbG9hdCBpbml0aWFsRm9udFNpemUsIGMKIAogQGNsYXNzIFdLQ29udGVu
dFZpZXc7CiAKLUBpbnRlcmZhY2UgV0tGb3JtU2VsZWN0Q29udHJvbCA6IE5TT2JqZWN0PFdLRm9y
bVBlcmlwaGVyYWw+CitAaW50ZXJmYWNlIFdLRm9ybVNlbGVjdENvbnRyb2wgOiBXS0Zvcm1QZXJp
cGhlcmFsQmFzZQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAq
KXZpZXc7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW0KaW5kZXggM2I5NDhkMWFkNGRiNTFmZjEyYjJl
YjA3OTQzMjk5YzFhMzExMmY4Yi4uM2Q1YzkyYTIxZWYyNjdiMjcyYmUwMmUyNDFkNjExNDMzNzAz
NmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bVNlbGVjdENvbnRyb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVNlbGVjdENvbnRyb2wubW0KQEAgLTY1LDkgKzY1LDYgQEAgQGltcGxlbWVudGF0aW9u
IFdLRm9ybVNlbGVjdENvbnRyb2wgewogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihX
S0NvbnRlbnRWaWV3ICopdmlldwogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQot
ICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgYm9vbCBoYXNHcm91cHMgPSBmYWxzZTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zZWxl
Y3RPcHRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICh2aWV3LmZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uc2VsZWN0T3B0aW9uc1tpXS5pc0dyb3VwKSB7CkBAIC03NiwyOSArNzMsMTUg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKICAg
ICAgICAgfQogICAgIH0KIAorICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+
IGNvbnRyb2w7CiAgICAgaWYgKGN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKQotICAg
ICAgICBfY29udHJvbCA9IGFkb3B0TlMoW1tXS1NlbGVjdFBvcG92ZXIgYWxsb2NdIGluaXRXaXRo
Vmlldzp2aWV3IGhhc0dyb3VwczpoYXNHcm91cHNdKTsKKyAgICAgICAgY29udHJvbCA9IGFkb3B0
TlMoW1tXS1NlbGVjdFBvcG92ZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGhhc0dyb3Vwczpo
YXNHcm91cHNdKTsKICAgICBlbHNlIGlmICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24u
aXNNdWx0aVNlbGVjdCB8fCBoYXNHcm91cHMpCi0gICAgICAgIF9jb250cm9sID0gYWRvcHROUyhb
W1dLTXVsdGlwbGVTZWxlY3RQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisgICAg
ICAgIGNvbnRyb2wgPSBhZG9wdE5TKFtbV0tNdWx0aXBsZVNlbGVjdFBpY2tlciBhbGxvY10gaW5p
dFdpdGhWaWV3OnZpZXddKTsKICAgICBlbHNlCi0gICAgICAgIF9jb250cm9sID0gYWRvcHROUyhb
W1dLU2VsZWN0U2luZ2xlUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwotICAgICAg
ICAKLSAgICByZXR1cm4gc2VsZjsKLX0KKyAgICAgICAgY29udHJvbCA9IGFkb3B0TlMoW1tXS1Nl
bGVjdFNpbmdsZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXddKTsKIAotLSAoVUlWaWV3
ICopYXNzaXN0YW50VmlldwotewotICAgIHJldHVybiBbX2NvbnRyb2wgY29udHJvbFZpZXddOwot
fQotCi0tICh2b2lkKWJlZ2luRWRpdGluZwotewotICAgIFtfY29udHJvbCBjb250cm9sQmVnaW5F
ZGl0aW5nXTsKLX0KLQotLSAodm9pZCllbmRFZGl0aW5nCi17Ci0gICAgW19jb250cm9sIGNvbnRy
b2xFbmRFZGl0aW5nXTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNvbnRy
b2w6V1RGTW92ZShjb250cm9sKV07CiB9CiAKIEBlbmQKQEAgLTEwNywxNiArOTAsMTUgQEAgQGlt
cGxlbWVudGF0aW9uIFdLRm9ybVNlbGVjdENvbnRyb2woV0tUZXN0aW5nKQogCiAtICh2b2lkKXNl
bGVjdFJvdzooTlNJbnRlZ2VyKXJvd0luZGV4IGluQ29tcG9uZW50OihOU0ludGVnZXIpY29tcG9u
ZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0aW9uOihCT09MKWV4dGVuZGluZ1NlbGVjdGlvbgogewot
ICAgIGlmIChbX2NvbnRyb2wgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZWxlY3RSb3c6
aW5Db21wb25lbnQ6ZXh0ZW5kaW5nU2VsZWN0aW9uOildKQotICAgICAgICBbaWQ8V0tTZWxlY3RU
ZXN0aW5nPihfY29udHJvbC5nZXQoKSkgc2VsZWN0Um93OnJvd0luZGV4IGluQ29tcG9uZW50OmNv
bXBvbmVudEluZGV4IGV4dGVuZGluZ1NlbGVjdGlvbjpleHRlbmRpbmdTZWxlY3Rpb25dOworICAg
IGlmIChbc2VsZi5jb250cm9sIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2VsZWN0Um93
OmluQ29tcG9uZW50OmV4dGVuZGluZ1NlbGVjdGlvbjopXSkKKyAgICAgICAgW2lkPFdLU2VsZWN0
VGVzdGluZz4oc2VsZi5jb250cm9sKSBzZWxlY3RSb3c6cm93SW5kZXggaW5Db21wb25lbnQ6Y29t
cG9uZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0aW9uOmV4dGVuZGluZ1NlbGVjdGlvbl07CiB9CiAK
IC0gKE5TU3RyaW5nICopc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZQogewotICAgIGlmICghW19jb250
cm9sIGlzS2luZE9mQ2xhc3M6W1dLU2VsZWN0UG9wb3ZlciBjbGFzc11dKQorICAgIGlmICghW3Nl
bGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOltXS1NlbGVjdFBvcG92ZXIgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbKFdLU2VsZWN0UG9wb3ZlciAqKV9jb250cm9s
LmdldCgpIHRhYmxlVmlld0NvbnRyb2xsZXJdLnRpdGxlOworICAgIHJldHVybiBbKFdLU2VsZWN0
UG9wb3ZlciAqKXNlbGYuY29udHJvbCB0YWJsZVZpZXdDb250cm9sbGVyXS50aXRsZTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bVNlbGVjdFBvcG92ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtU2VsZWN0UG9wb3Zlci5tbQppbmRleCBlMmQyYmJkMmY0NWRhNzdjOTZmY2Y4NWI0OWYyMTIy
YTIzYTRlYzdiLi41NTQ5NjkwMmU3MzMxMmQ5NTc1NjdkYjBhYmY3NWQ4NDZlYWIxOWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9w
b3Zlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2Vs
ZWN0UG9wb3Zlci5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5Lmgi
CiAjaW1wb3J0IDxVSUtpdC9VSVBpY2tlclZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxp
emVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNDQ2LDYg
KzQ0Nyw3IEBAIC0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwogCiAtICh2b2lkKWNvbnRyb2xF
bmRFZGl0aW5nCiB7CisgICAgW3NlbGYgZGlzbWlzc1BvcG92ZXJBbmltYXRlZDpOT107CiB9CiAK
IC0gKHZvaWQpX3VzZXJBY3Rpb25EaXNtaXNzZWRQb3BvdmVyOihpZClzZW5kZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU4NDc1ODgy
YTRjOTBhYTg0ZjZlNWViYzBmMDY3NThiZDUwYzUxNzAuLmNiMTlkMmE5MDU4NGZmZDgxNTk1OTdi
ODc3NzdiNGYzZTNlNWEyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTU4OSw2ICsxNTg5LDcgQEAKIAkJQ0UxQTBCRDYxQTQ4RTZD
NjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9Owog
CQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVG
NzQgLyogVGV4dElucHV0U1BJLmggKi87IH07CiAJCUNFNUI0Qzg4MjFCNzNEODcwMDIyRTY0RiAv
KiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVCNEM4NjIxQjczRDg3MDAyMkU2NEYgLyogV0tT
eW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oICovOyB9OworCQlDRTcwRUU1RDIyNDQyQkQw
MDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzBFRTVDMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zv
cm1QZXJpcGhlcmFsQmFzZS5oICovOyB9OwogCQlDRUM4RjlDQjFGREY1ODcwMDAyNjM1RTcgLyog
V0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQzhGOUNBMUZERjU4NzAwMDI2MzVFNyAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAv
KiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJ
S2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RUU0QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKQEAgLTQ0NjYsNiAr
NDQ2Nyw4IEBACiAJCUNFMUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0U1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRo
ZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU3ludGhldGljRmxh
Z3NDaGFuZ2VkV2ViRXZlbnQuaDsgcGF0aCA9IGlvcy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdl
YkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUI0Qzg3MjFCNzNEODcw
MDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5tbTsgcGF0aCA9IGlv
cy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTcwRUU1QTIyNDQyQkIzMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJh
c2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbTsgcGF0
aCA9IGlvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0U3MEVFNUMyMjQ0MkJEMDAwRTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybVBlcmlwaGVyYWxCYXNlLmg7IHBhdGggPSBpb3Mv
Zm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VDOEY5Q0ExRkRGNTg3MDAwMjYzNUU3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVQ
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkRFMTUyQ0NBRTgw
MEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFREExMkRGMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg3MTYsNiArODcxOSw4IEBACiAJCQkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9y
bUlucHV0Q29udHJvbC5oICovLAogCQkJCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zv
cm1JbnB1dENvbnRyb2wubW0gKi8sCiAJCQkJQzU0MjU2QjExOEJFQzE4QjAwREU0MTc5IC8qIFdL
Rm9ybVBlcmlwaGVyYWwuaCAqLywKKwkJCQlDRTcwRUU1QzIyNDQyQkQwMDBFMEFGMEYgLyogV0tG
b3JtUGVyaXBoZXJhbEJhc2UuaCAqLywKKwkJCQlDRTcwRUU1QTIyNDQyQkIzMDBFMEFGMEYgLyog
V0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gKi8sCiAJCQkJQzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5
IC8qIFdLRm9ybVBvcG92ZXIuaCAqLywKIAkJCQlDNTQyNTZCMzE4QkVDMThCMDBERTQxNzkgLyog
V0tGb3JtUG9wb3Zlci5tbSAqLywKIAkJCQlDNTQyNTZCNDE4QkVDMThDMDBERTQxNzkgLyogV0tG
b3JtU2VsZWN0Q29udHJvbC5oICovLApAQCAtOTgzOCw2ICs5ODQzLDcgQEAKIAkJCQlFNTQ4RUJE
MTIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM1NDI1NkI3MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhl
cmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTcwRUU1RDIyNDQyQkQwMDBFMEFGMEYgLyogV0tG
b3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NDI1NkI4MThCRUMxOEMw
MERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTQyNTZCQTE4
QkVDMThDMDBERTQxNzkgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwOENGNTIxRDYzQzEzQTAwQjQ4REYxIC8qIFdLRm9ybVNlbGVjdFBpY2tlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZGQ5OTZhNWQwMTRiMTUxZGE1YmRhZTA2ZTBhMWYyZTQzOWIzYmU4
Ny4uNTY5MGNhYTA1MzhlODc3ZjBiZTM3NzI5NTM3ZGZjZjM5ODk4OWMwNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE5LTAzLTI4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBTaG91bGQgYmUgYWJsZSB0byBkaXNtaXNzIHBpY2tlciBvciBwb3Bv
dmVyIHVzaW5nIHRoZSBrZXlib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk2MjcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk0MzE3MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVz
dCB0byBlbnN1cmUgdGhhdCBwcmVzc2luZyBFc2NhcGUgb3IgQ29tbWFuZCArIC4gZGlzbWlzc2Vz
IGEgcGlja2VyLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNp
bmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lv
cy9kaXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC5odG1sOiBBZGRlZC4KKwogMjAxOS0wMy0y
OCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFj
T1MgV0syXSBPdmVybGF5cyBvbiBpbnN0YWdyYW0uY29tIGFyZSBzaGlmdGVkIGlmIHlvdSBjbGlj
ayBvbiBhIHBob3RvIGFmdGVyIHNjcm9sbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmY2RlMjdiMmM1Y2ZhZjVhNDE2OTBmMGRkNzI4ZTBm
YjQ1Zjc0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9k
aXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0OSBA
QAorVGVzdHMgdGhhdCBwcmVzc2luZyB0aGUgRXNjYXBlIGtleSBvciBDb21tYW5kICsgLiBkaXNt
aXNzZXMgYSBwaWNrZXIgd2l0aG91dCBjYXVzaW5nIGEgdmFsdWUgY2hhbmdlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCitEaXNtaXNzIGJ5IHByZXNzaW5nIGVzY2FwZToKKwor
Rm9yIGNvbG9yOgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICIjMDAwMDAwIgorCitGb3Ig
ZGF0ZToKK1BBU1MgZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiMjAxOS0wMy0yNiIKKworRm9yIGRh
dGV0aW1lLWxvY2FsOgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICIyMDE5LTAzLTI2VDE0
OjI4OjA1LjQ1NSIKKworRm9yIG1vbnRoOgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICIy
MDE5LTAzIgorCitGb3Igc2VsZWN0OgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICJGaXJz
dCIKKworRm9yIHRpbWU6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjE0OjI4IgorCitE
aXNtaXNzIGJ5IHByZXNzaW5nIENvbW1hbmQgKyAuOgorCitGb3IgY29sb3I6CitQQVNTIGVsZW1l
bnRUb1Rlc3QudmFsdWUgaXMgIiMwMDAwMDAiCisKK0ZvciBkYXRlOgorUEFTUyBlbGVtZW50VG9U
ZXN0LnZhbHVlIGlzICIyMDE5LTAzLTI2IgorCitGb3IgZGF0ZXRpbWUtbG9jYWw6CitQQVNTIGVs
ZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTktMDMtMjZUMTQ6Mjg6MDUuNDU1IgorCitGb3IgbW9u
dGg6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTktMDMiCisKK0ZvciBzZWxlY3Q6
CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIkZpcnN0IgorCitGb3IgdGltZToKK1BBU1Mg
ZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiMTQ6MjgiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW9zL2Rpc21pc3MtcGlja2VyLXVzaW5nLWtleWJvYXJkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjQxMmNlNzMzYzVlN2EzNDA5NzBlOTM5YjQyNGVlYzBlYzk2YmY4OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2Rpc21pc3MtcGlja2VyLXVzaW5n
LWtleWJvYXJkLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLSBQbGFjZSB0aGUgdGVzdCBjb250YWluZXIgYWJv
dmUgdGhlIGNvbnNvbGUgb3V0cHV0IHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNvbXBlbnNhdGUgZm9y
IHBhZ2Ugc2Nyb2xsLiAtLT4KKzxkaXYgaWQ9InRlc3QtY29udGFpbmVyIj4KKyAgICA8cD48aW5w
dXQgdHlwZT0iY29sb3IiIGNsYXNzPSJ0ZXN0IiBkYXRhLXRlc3QtbmFtZT0iY29sb3IiPjwvcD4K
KyAgICA8cD48aW5wdXQgdHlwZT0iZGF0ZSIgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJk
YXRlIiB2YWx1ZT0iMjAxOS0wMy0yNiI+PC9wPgorICAgIDxwPjxpbnB1dCB0eXBlPSJkYXRldGlt
ZS1sb2NhbCIgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJkYXRldGltZS1sb2NhbCIgdmFs
dWU9IjIwMTktMDMtMjZUMTQ6Mjg6MDUuNDU1Ij48L3A+CisgICAgPHA+PGlucHV0IHR5cGU9Im1v
bnRoIiBjbGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9Im1vbnRoIiB2YWx1ZT0iMjAxOS0wMyI+
PC9wPgorICAgIDxwPjxzZWxlY3QgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJzZWxlY3Qi
PgorICAgICAgICA8b3B0aW9uPkZpcnN0PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+U2Vjb25k
PC9vcHRpb24+CisgICAgPC9zZWxlY3Q+PC9wPgorICAgIDxwPjxpbnB1dCB0eXBlPSJ0aW1lIiBj
bGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9InRpbWUiIHZhbHVlPSIxNDoyOCI+PC9wPgorPC9k
aXY+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IGVsZW1lbnRUb1Rl
c3Q7CisKK2NvbnN0IG1vZGlmaWVyRGlzcGxheU5hbWVNYXAgPSB7CisgICAgImFsdEtleSI6ICJP
cHRpb24iLAorICAgICJjdHJsS2V5IjogIkNvbnRyb2wiLAorICAgICJtZXRhS2V5IjogIkNvbW1h
bmQiLAorICAgICJzaGlmdEtleSI6ICJTaGlmdCIsCisgICAgImNhcHNMb2NrS2V5IjogIkNhcHMg
TG9jayIsCit9CisKK2NsYXNzIEtleUNvbW1hbmQgeworICAgIGNvbnN0cnVjdG9yKGtleSwgbW9k
aWZpZXJzID0gW10pCisgICAgeworICAgICAgICB0aGlzLmtleSA9IGtleTsKKyAgICAgICAgdGhp
cy5tb2RpZmllcnMgPSBtb2RpZmllcnM7CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsK
KyAgICAgICAgbGV0IHJlYWRhYmxlQ29tbWFuZCA9IHRoaXMubW9kaWZpZXJzLm1hcCgobW9kaWZp
ZXIpID0+IG1vZGlmaWVyRGlzcGxheU5hbWVNYXBbbW9kaWZpZXJdKTsKKyAgICAgICAgcmVhZGFi
bGVDb21tYW5kLnB1c2godGhpcy5rZXkpOworICAgICAgICByZXR1cm4gcmVhZGFibGVDb21tYW5k
LmpvaW4oIiArICIpOworICAgIH0KK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgbGV0IHRl
c3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1jb250YWluZXIiKTsK
KyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOworICAgIGZpbmlz
aEpTVGVzdCgpCit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTXVzdCBiZSBydW4gaW4gV2Vi
S2l0VGVzdFJ1bm5lci4iKTsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbGV0IGVsZW1lbnRzVG9UZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgidGVzdCIpOworICAgIGZvciAobGV0IGtleUNvbW1hbmQgb2YgW25ldyBLZXlDb21tYW5k
KCJlc2NhcGUiKSwgbmV3IEtleUNvbW1hbmQoIi4iLCBbIm1ldGFLZXkiXSldKSB7CisgICAgICAg
IGRlYnVnKGA8YnI+RGlzbWlzcyBieSBwcmVzc2luZyAke2tleUNvbW1hbmR9OmApOworICAgICAg
ICBmb3IgKGVsZW1lbnRUb1Rlc3Qgb2YgZWxlbWVudHNUb1Rlc3QpIHsKKyAgICAgICAgICAgIGRl
YnVnKGA8YnI+Rm9yICR7ZWxlbWVudFRvVGVzdC5kYXRhc2V0LnRlc3ROYW1lfTpgKTsKKyAgICAg
ICAgICAgIGxldCBleHBlY3RlZFZhbHVlID0gZWxlbWVudFRvVGVzdC52YWx1ZTsKKyAgICAgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24o
ZWxlbWVudFRvVGVzdCk7CisgICAgICAgICAgICBVSUhlbHBlci5rZXlEb3duKCJlc2NhcGUiKTsK
KyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JLZXlib2FyZFRvSGlkZSgpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbGVtZW50VG9UZXN0LnZhbHVlIiwgZXhw
ZWN0ZWRWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxlbWVudFRvVGVzdCA9IG51bGw7
CisgICAgZG9uZSgpOworfQorCitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBwcmVzc2luZyB0aGUg
RXNjYXBlIGtleSBvciBDb21tYW5kICsgLiBkaXNtaXNzZXMgYSBwaWNrZXIgd2l0aG91dCBjYXVz
aW5nIGEgdmFsdWUgY2hhbmdlLiIpOworCitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366186</attachid>
            <date>2019-03-28 11:19:51 -0700</date>
            <delta_ts>2019-03-28 15:28:21 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-196272-20190328111950.patch</filename>
            <type>text/plain</type>
            <size>38911</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIxMGVlYWQ1OGExYjZlZjFh
NWQxZmM5ZDM0ZjI4MDBhMTMzZWI5NmEuLjU0Y2QyN2E1ZDNhZTkwNmI1ZGFlYTY3MzU1OGQ1NmE1
NzVlZGY4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDMtMjggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNob3VsZCBiZSBhYmxl
IHRvIGRpc21pc3MgcGlja2VyIG9yIHBvcG92ZXIgdXNpbmcgdGhlIGtleWJvYXJkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyNzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4OTQzMTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVyY2VwdCBrZXkgZXZlbnRzIGFuZCByb3V0ZSB0aGVtIHRv
IHRoZSBjdXJyZW50IGlucHV0IHBlcmlwaGVyYWwgKGlmIHdlIGhhdmUgb25lKS4gQWRkIGEgYmFz
ZSBrZXkgZXZlbnQgaGFuZGxlcgorICAgICAgICBmb3IgYWxsIGZvcm0gcGVyaXBoZXJhbHMgdGhh
dCBkaXNtaXNzZXMgdGhlIGFjY2Vzc29yeSB3aGVuIGVpdGhlciB0aGUgRXNjYXBlIGtleSBpcyBw
cmVzc2VkIG9yIENvbW1hbmQgKyAuIGlzIHByZXNzZWQuCisgICAgICAgIEkgd2lsbCBmaXggdGhp
cyBpc3N1ZSBmb3IgdGhlIGZpbGUgdXBsb2FkIHBpY2tlci9wb3BvdmVyIGluIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjg3Pi4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6IEFkZCBmaWxlIFdLRm9ybVBlcmlwaGVyYWxCYXNlLm1tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGVuZEVkaXRpbmdBbmRVcGRhdGVGb2N1c0FwcGVhcmFuY2VXaXRoUmVhc29u
XSk6IEFkZGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVy
Rm9yV2ViVmlld10pOiBXcml0ZSBpbiB0ZXJtcyBvZiAtZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnB1dFZpZXddKTogQ29kZSBz
dHlsZSBuaXQgd2hpbGUgSSBhbSBoZXJlOyBhZGQgYW4gZW1wdHkgbGluZSB0byBkZW1hcmNhdGUg
dGhlICJjcmF6eSIKKyAgICAgICAgY29kZSB0aGF0IHRoZSBGSVhNRSBpcyByZWZlcnJpbmcgdG8g
YW5kIHNob3VsZCBpZGVhbGx5IGJlIHJlbW92ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGlzIHNhbmUg
dG8gYWx3YXlzIGRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjY2Vzc29yeURvbmVdKTog
V2hlbiB0aGUgYWNjZXNzb3J5IGlzIGRpc21pc3NlZCB2aWEgdGhlIERvbmUgYnV0dG9uIChpUGhv
bmUpIG9yIGJ5IHByZXNzaW5nCisgICAgICAgIEVzY2FwZSBvciBDb21tYW5kICsgLiB1c2luZyBh
IGhhcmR3YXJlIGtleWJvYXJkIChpUGhvbmUgb3IgaVBhZCkgdGhlbiBlbmQgdGhlIGN1cnJlbnQg
ZWRpdGluZyBzZXNzaW9uLCBidXQKKyAgICAgICAgZG8gbm90IHJlc2lnbiBmaXJzdCByZXNwb25k
ZXIgc3RhdHVzIGFzIHRoZSBwYWdlIGFjdGl2YXRpb24gc3RhdGUgc2hvdWxkIG5vdCBiZSBjaGFu
Z2VkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVLZXlVSUV2ZW50Ol0pOiBCcmlu
ZyBiYWNrIHRoaXMgY29kZSB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKFVJS0lUX0tFWUJPQVJEX0FE
RElUSU9OUykKKyAgICAgICAgYXMgd2UgbmVlZCB0byByb3V0ZSBrZXkgZXZlbnRzIHRvIHRoZSBp
bnB1dCBwZXJpcGhlcmFsIChpZiB3ZSBoYXZlIG9uZSkuIElmIHRoZSBpbnB1dCBwZXJpcGhlcmFs
IGhhbmRsZXMgaXQKKyAgICAgICAgdGhlbiB3ZSdyZSBkb25lOiBubyBuZWVkIHRvIGxldCBVSUtp
dCBvciBXZWJLaXQgaGFuZGxlIGl0IHdoZW4gYnVpbGRpbmcgd2l0aCBVU0UoVUlLSVRfS0VZQk9B
UkRfQURESVRJT05TKSwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgaW5wdXQgcGVyaXBo
ZXJhbCBkb2VzIG5vdCBoYW5kbGUgaXQgdGhlbiBkbyB3aGF0IHdlIGRvIG5vdy4KKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQ
cmV2aW91c05vZGU6Y2hhbmdpbmdBY3Rpdml0eVN0YXRlOnVzZXJPYmplY3Q6XSk6CisgICAgICAg
IElmIHRoZSBlbGVtZW50IGlzIHJlLWZvY3VzZWQgYW5kIHdlIGhhdmUgYW4gaW5wdXQgcGVyaXBo
ZXJhbCB0aGVuIHdlIHdhbnQgdG8gZW5zdXJlIHdlIGFyZSBmaXJzdCByZXNwb25kZXIsCisgICAg
ICAgIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LCB1cGRhdGUgdGhlIGFjY2Vzc29yeSBhbmQg
dGVsbCB0aGUgcGVyaXBoZXJhbCB0aGF0IGVkaXRpbmcgaGFzIGJlZ3VuIChhZ2FpbikuCisgICAg
ICAgIEZvciBhbGwgb3RoZXIgZWxlbWVudCByZS1mb2N1c2luZyB3aGVyZSB3ZSBkb24ndCBoYXZl
IGEgcGVyaXBoZXJhbCBkbyB3aGF0IHdlIGRvIG5vdy4gQWxzbywgdXBkYXRlIF9pc0VkaXRhYmxl
CisgICAgICAgIHRvIHJlZmxlY3Qgd2hldGhlciB0aGUgZm9jdXNlZCBlbGVtZW50IGNvbnRhaW5z
IHNlbGVjdGFibGUgdGV4dC4gVGhpcyBpcyB3aGF0IFVJS2l0IHdhbnRzIHRvIGtub3cgd2hlbiBp
dCBxdWVyaWVzCisgICAgICAgIC1pc0VkaXRhYmxlLiBOb3cgdGhhdCB3ZSBubyBsb25nZXIgYmx1
ciB0aGUgZm9jdXNlZCBlbGVtZW50IG9uIGlQYWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBkaXNtaXNz
ZWQgYW5kIGtlZXAgdGhlCisgICAgICAgIHBlcmlwaGVyYWwgdW50aWwgdGhlcmUgaXMgYSBmb2N1
cyBjaGFuZ2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBnaXZlIHRoZSBjb3JyZWN0IGFuc3dl
ciB0byBVSUtpdCBvbiB2aWV3CisgICAgICAgIGVkaXRhYmlsaXR5LiBPdGhlcndpc2UsIFVJS2l0
IHRoaW5rcyBpdCBuZWVkcyB0byB1cGRhdGUgdGhlIHRleHQgc2VsZWN0aW9uIHN0YXRlIHdoZW4g
YSBwb3B1cCBidXR0b24gaXMgdGFwcGVkCisgICAgICAgIGFnYWluIChhcyBwYXJ0IG9mIGl0cyBn
ZXN0dXJlIHJlY29nbml6ZXIgbG9naWMpIGFuZCB0aGlzIGNhdXNlcyBhbiBhc3NlcnRpb24gZmFp
bHVyZSBpbiBVSUtpdCBhZnRlciBpdCBjYWxscyBiYWNrCisgICAgICAgIGludG8gdXMgdG8gYXNr
IGZvciBzZWxlY3Rpb24gZGV0YWlscywgd2hpY2ggd2UgY29ycmVjdGx5IHJlc3BvbmQgd2l0aCB0
aGUgZXF1aXZhbGVudCBvZiAid2UgaGF2ZSBub25lIiBhbmQgaXMKKyAgICAgICAgbm90IHRoZSBh
bnN3ZXIgVUlLaXQgZXhwZWN0cyBzaW5jZSB3ZSB0b2xkIGl0IHdlIGFyZSBlZGl0YWJsZS4gKEN1
cnJlbnRseSB3ZSBtYW5hZ2UgdG8gZ2V0IGF3YXkgd2l0aCB0ZWxsaW5nIFVJS2l0CisgICAgICAg
IHdlIGFyZSBhbHdheXMgZWRpdGFibGUgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gcGVy
Zm9ybSBhIHNlbGVjdGlvbiBvcGVyYXRpb24gd2hlbiB3ZSBoYXZlIGEgcG9wb3ZlciBvcGVuLgor
ICAgICAgICBDbG9zaW5nIHRoZSBwb3BvdmVyIGJsdXJzIHRoZSBlbGVtZW50LCBzZXR0aW5nIC1p
c0VkaXRhYmxlIHRvIE5PIGFuZCBkZWFsbG9jYXRlcyB0aGUgcGVyaXBoZXJhbCBhdm9pZGluZyB0
aGlzIGlzc3VlKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
Lm1tOgorICAgICAgICAoLVtXS0NvbG9yUG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10pOiBEaXNt
aXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAoLVtXS0Zvcm1Db2xvckNvbnRyb2wgaW5pdFdpdGhW
aWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5pdGlhbGl6ZXIuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBiZWdpbkVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tGb3JtQ29sb3JDb250cm9sIGVuZEVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tOgorICAgICAgICAoLVtXS0Zvcm1J
bnB1dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3Mg
aW5pdGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybUlucHV0Q29udHJvbCBkYXRlVGltZVBpY2tl
ckNhbGVuZGFyVHlwZV0pOiBXcml0ZSBpbiB0ZXJtcyBvZiBzZWxmLmNvbnRyb2wuCisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQb3BvdmVyIGNvbnRyb2xFbmRFZGl0aW5nXSk6IERpc21pc3MgdGhlIHBv
cG92ZXIgYW5kIHRlbGwgdGhlIGNvbnRyb2xsZXIgdGhhdCBlZGl0aW5nIGVuZGVkLgorICAgICAg
ICAoLVtXS0Zvcm1JbnB1dENvbnRyb2wgYmVnaW5FZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUlucHV0Q29udHJvbCBlbmRFZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLRm9ybUlucHV0Q29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaW5pdFdpdGhWaWV3OmNvbnRyb2w6XSk6IFRha2Ug
b3duZXJzaGlwIG9mIHRoZSBwYXNzZWQgV0tGb3JtQ29udHJvbC4KKyAgICAgICAgKC1bV0tGb3Jt
UGVyaXBoZXJhbEJhc2UgYmVnaW5FZGl0aW5nXSk6IFR1cm4gYXJvdW5kIGFuZCB0ZWxsIHRoZSBj
b250cm9sLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBlbmRFZGl0aW5nXSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBhc3Npc3RhbnRWaWV3XSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBjb250cm9sXSk6IFJldHVybiB0
aGUgY29udHJvbC4KKyAgICAgICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaGFuZGxlS2V5RXZl
bnQ6XSk6IERpc21pc3MgdGhlIGFjY2Vzc29yeSAoaW4gdGhlIHNhbWUgd2F5IHdlIGRpc21pc3Mg
d2hlbiB0aGUgRG9uZQorICAgICAgICBidXR0b24gaXMgcHJlc3NlZCBvbiBpUGhvbmUpIG9uIGtl
eWRvd24gb2YgdGhlIEVzY2FwZSBrZXkgb3Igd2hlbiB3ZSByZWNlaXZlIGEgVUlLZXlJbnB1dEVz
Y2FwZSBldmVudCAoZm9yCisgICAgICAgIENvbW1hbmQgKyAuKS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW06CisgICAgICAgICgtW1dLRm9ybVNlbGVj
dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5p
dGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgc2VsZWN0Um93OmluQ29t
cG9uZW50OmV4dGVuZGluZ1NlbGVjdGlvbjpdKTogV3JpdGUgaW4gdGVybXMgb2Ygc2VsZi5jb250
cm9sLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIHNlbGVjdEZvcm1Qb3BvdmVyVGl0
bGVdKTogRGl0dG8uCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgYXNzaXN0YW50Vmll
d10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGJlZ2luRWRpdGlu
Z10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGVuZEVkaXRpbmdd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBv
cG92ZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10p
OiBEaXNtaXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgZmlsZXMgV0tGb3JtUGVyaXBoZXJhbEJhc2Uue2gsIG1tfS4KKwogMjAx
OS0wMy0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV1bR1RLXSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaCBjYW4g
cmV0dXJuIE5VTEwgd2l0aG91dCBzZXR0aW5nIGVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMzUxMTY0ZmFjYWUyNDE4ZjdiZTFlYzAzYjY1N2RjNDkxYzk3MDhkOS4uYWUxMGQ3OWNkODE5
MTM0N2ZhMDg4NDc2ZjUxZmY1YzY2MmZmMDcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
MzY2LDYgKzM2Niw3IEBAIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xW
aWV3Lm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1JbnB1dENvbnRyb2wubW0KK1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJh
bEJhc2UubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5tbQogVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybVNlbGVjdFBpY2tlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGY4ZGYxM2NmNDIyY2Y1MTk3NWYz
YzM2MzhhM2U3YjRhYzlkZmE4NzQuLmZjOWJmNmM1YjM5NmQxMjUzNzM3NWEwYWU1MzdjMzRkYzM4
MDUwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTMxMiw3ICszMTIsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29y
cmVjdGlvbkRhdGEgewogCiAgICAgQk9PTCBfYmVjb21pbmdGaXJzdFJlc3BvbmRlcjsKICAgICBC
T09MIF9yZXNpZ25pbmdGaXJzdFJlc3BvbmRlcjsKLSAgICBCT09MIF9kaXNtaXNzaW5nQWNjZXNz
b3J5OwogICAgIEJPT0wgX25lZWRzRGVmZXJyZWRFbmRTY3JvbGxpbmdTZWxlY3Rpb25VcGRhdGU7
CiAgICAgQk9PTCBfaXNDaGFuZ2luZ0ZvY3VzOwogICAgIEJPT0wgX2lzQmx1cnJpbmdGb2N1c2Vk
RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDQyZGEwMmVjMTI0YWQ4NDM1ZTQ2Y2I4NmM1OTFk
ZDIzNWFmYjlmNzkuLjliZTAzMWQzMmY1MWJkMTg0ODA5MDkxODJmNzlhNTgwNmNhYTg2ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQpAQCAtMTE2OSwyNCArMTE2OSwzNCBAQCAtIChCT09MKXJlc2lnbkZpcnN0
UmVzcG9uZGVyCiAgICAgcmV0dXJuIFtfd2ViVmlldyByZXNpZ25GaXJzdFJlc3BvbmRlcl07CiB9
CiAKLS0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3Ci17Ci0gICAgLy8gRklY
TUU6IE1heWJlIHdlIHNob3VsZCBjYWxsIHJlc2lnbkZpcnN0UmVzcG9uZGVyIG9uIHRoZSBzdXBl
cmNsYXNzCi0gICAgLy8gYW5kIGRvIG5vdGhpbmcgaWYgdGhlIHJldHVybiB2YWx1ZSBpcyBOTy4K
LQotICAgIFNldEZvclNjb3BlPEJPT0w+IHJlc2lnbmluZ0ZpcnN0UmVzcG9uZGVyU2NvcGUgeyBf
cmVzaWduaW5nRmlyc3RSZXNwb25kZXIsIFlFUyB9OwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgRW5kRWRpdGluZ1JlYXNvbikgeworICAgIEVuZEVkaXRpbmdSZWFzb25BY2Nlc3NvcnlEb25l
LAorICAgIEVuZEVkaXRpbmdSZWFzb25SZXNpZ25pbmdGaXJzdFJlc3BvbmRlciwKK307CiAKKy0g
KHZvaWQpZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3VzQXBwZWFyYW5jZVdpdGhSZWFzb246KEVuZEVk
aXRpbmdSZWFzb24pcmVhc29uCit7CiAgICAgaWYgKCFfd2ViVmlldy5fcmV0YWluaW5nQWN0aXZl
Rm9jdXNlZFN0YXRlKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tcGxldGUgdGhlIGVkaXRp
bmcgb3BlcmF0aW9uIGJlZm9yZSB3ZSBibHVyIHRoZSBlbGVtZW50LgogICAgICAgICBbc2VsZiBf
ZW5kRWRpdGluZ107Ci0gICAgICAgIGlmIChfZGlzbWlzc2luZ0FjY2Vzc29yeSB8fCBfa2V5Ym9h
cmREaWRSZXF1ZXN0RGlzbWlzc2FsKQorICAgICAgICBpZiAoKHJlYXNvbiA9PSBFbmRFZGl0aW5n
UmVhc29uQWNjZXNzb3J5RG9uZSAmJiAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkp
IHx8IF9rZXlib2FyZERpZFJlcXVlc3REaXNtaXNzYWwpCiAgICAgICAgICAgICBfcGFnZS0+Ymx1
ckZvY3VzZWRFbGVtZW50KCk7CiAgICAgfQogCiAgICAgW3NlbGYgX2NhbmNlbEludGVyYWN0aW9u
XTsKICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgZGVhY3RpdmF0ZVNlbGVjdGlvbl07Ci0g
ICAgCisKICAgICBbc2VsZiBfcmVzZXRJbnB1dFZpZXdEZWZlcnJhbF07Cit9CisKKy0gKEJPT0wp
cmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3Cit7CisgICAgLy8gRklYTUU6IE1heWJlIHdl
IHNob3VsZCBjYWxsIHJlc2lnbkZpcnN0UmVzcG9uZGVyIG9uIHRoZSBzdXBlcmNsYXNzCisgICAg
Ly8gYW5kIGRvIG5vdGhpbmcgaWYgdGhlIHJldHVybiB2YWx1ZSBpcyBOTy4KKworICAgIFNldEZv
clNjb3BlPEJPT0w+IHJlc2lnbmluZ0ZpcnN0UmVzcG9uZGVyU2NvcGUgeyBfcmVzaWduaW5nRmly
c3RSZXNwb25kZXIsIFlFUyB9OworCisgICAgW3NlbGYgZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVdpdGhSZWFzb246RW5kRWRpdGluZ1JlYXNvblJlc2lnbmluZ0ZpcnN0UmVzcG9u
ZGVyXTsKIAogICAgIC8vIElmIHRoZSB1c2VyIGV4cGxpY2l0bHkgZGlzbWlzc2VkIHRoZSBrZXli
b2FyZCB0aGVuIHdlIHdpbGwgbG9zZSBmaXJzdCByZXNwb25kZXIKICAgICAvLyBzdGF0dXMgb25s
eSB0byBnYWluIGl0IGJhY2sgYWdhaW4uIEp1c3QgZG9uJ3QgcmVzaWduIGluIHRoYXQgY2FzZS4K
QEAgLTM3NTEsOCArMzc2MSw4IEBAIC0gKHZvaWQpYWNjZXNzb3J5Q2xlYXIKIAogLSAodm9pZClh
Y2Nlc3NvcnlEb25lCiB7Ci0gICAgU2V0Rm9yU2NvcGU8Qk9PTD4gZGlzbWlzc2luZ0FjY2Vzc29y
eVNjb3BlIHsgX2Rpc21pc3NpbmdBY2Nlc3NvcnksIFlFUyB9OwotICAgIFtzZWxmIHJlc2lnbkZp
cnN0UmVzcG9uZGVyXTsKKyAgICBbc2VsZiBlbmRFZGl0aW5nQW5kVXBkYXRlRm9jdXNBcHBlYXJh
bmNlV2l0aFJlYXNvbjpFbmRFZGl0aW5nUmVhc29uQWNjZXNzb3J5RG9uZV07CisgICAgX3BhZ2Ut
PnNldElzU2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRFbGVtZW50KGZhbHNlKTsKIH0KIAogLSAo
dm9pZClhY2Nlc3NvcnlUYWI6KEJPT0wpaXNOZXh0CkBAIC00MzU1LDIxICs0MzY1LDI4IEBAIC0g
KEJPT0wpcmVxdWlyZXNLZXlFdmVudHMKICAgICByZXR1cm4gWUVTOwogfQogCi0jaWYgIVVTRShV
SUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCiAtICh2b2lkKV9oYW5kbGVLZXlVSUV2ZW50Oig6OlVJ
RXZlbnQgKilldmVudAogewogICAgIGJvb2wgaXNIYXJkd2FyZUtleWJvYXJkRXZlbnQgPSAhIWV2
ZW50Ll9oaWRFdmVudDsKLQogICAgIC8vIFdlIG9ubHkgd2FudCB0byBoYW5kbGUga2V5IGV2ZW50
IGZyb20gdGhlIGhhcmR3YXJlIGtleWJvYXJkIHdoZW4gd2UgYXJlCiAgICAgLy8gZmlyc3QgcmVz
cG9uZGVyIGFuZCB3ZSBhcmUgbm90IGludGVyYWN0aW5nIHdpdGggZWRpdGFibGUgY29udGVudC4K
LSAgICBpZiAoW3NlbGYgaXNGaXJzdFJlc3BvbmRlcl0gJiYgaXNIYXJkd2FyZUtleWJvYXJkRXZl
bnQgJiYgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKSB7CisgICAgaWYg
KFtzZWxmIGlzRmlyc3RSZXNwb25kZXJdICYmIGlzSGFyZHdhcmVLZXlib2FyZEV2ZW50ICYmIChf
aW5wdXRQZXJpcGhlcmFsIHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJs
ZSkpIHsKKyAgICAgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaGFuZGxlS2V5RXZlbnQ6KV0pIHsKKyAgICAgICAgICAgIGlmIChbX2lucHV0UGVy
aXBoZXJhbCBoYW5kbGVLZXlFdmVudDpldmVudF0pCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKKyAgICAgICAgW3N1
cGVyIF9oYW5kbGVLZXlVSUV2ZW50OmV2ZW50XTsKKyNlbHNlCiAgICAgICAgIFtzZWxmIGhhbmRs
ZUtleUV2ZW50OmV2ZW50XTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
W3N1cGVyIF9oYW5kbGVLZXlVSUV2ZW50OmV2ZW50XTsKIH0KIAorI2lmICFVU0UoVUlLSVRfS0VZ
Qk9BUkRfQURESVRJT05TKQogLSAodm9pZCloYW5kbGVLZXlFdmVudDooOjpVSUV2ZW50ICopZXZl
bnQKIHsKICAgICAvLyBXZWJDb3JlIGhhcyBhbHJlYWR5IHNlZW4gdGhlIGV2ZW50LCBubyBuZWVk
IGZvciBjdXN0b20gcHJvY2Vzc2luZy4KQEAgLTQ5NjIsOCArNDk3OSwxNiBAQCAtICh2b2lkKV9l
bGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYp
aW5mb3JtYXRpb24gdQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhpcyBjaGVj
ayB3aGVuIHdlIG1hbmFnZSB0byBzZW5kIEVsZW1lbnREaWRGb2N1cyBmcm9tIHRoZSBXZWJQcm9j
ZXNzCiAgICAgLy8gb25seSB3aGVuIGl0IGlzIHRydWx5IHRpbWUgdG8gc2hvdyB0aGUga2V5Ym9h
cmQuCi0gICAgaWYgKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IGlu
Zm9ybWF0aW9uLmVsZW1lbnRUeXBlICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1l
bnRSZWN0ID09IGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0KQorICAgIGlmIChfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSAmJiBf
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9PSBpbmZvcm1hdGlvbi5lbGVt
ZW50UmVjdCkgeworICAgICAgICBpZiAoX2lucHV0UGVyaXBoZXJhbCkgeworICAgICAgICAgICAg
aWYgKCFzZWxmLmlzRmlyc3RSZXNwb25kZXIpCisgICAgICAgICAgICAgICAgW3NlbGYgYmVjb21l
Rmlyc3RSZXNwb25kZXJdOworICAgICAgICAgICAgW3NlbGYgX3pvb21Ub1JldmVhbEZvY3VzZWRF
bGVtZW50XTsKKyAgICAgICAgICAgIFtzZWxmIF91cGRhdGVBY2Nlc3NvcnldOworICAgICAgICAg
ICAgW19pbnB1dFBlcmlwaGVyYWwgYmVnaW5FZGl0aW5nXTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAgICAgW193ZWJWaWV3IF9yZXNldEZvY3VzUHJlc2VydmF0aW9uQ291
bnRdOwogCkBAIC00OTgyLDcgKzUwMDcsOCBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNv
bnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAg
IGlmIChkZWxlZ2F0ZUltcGxlbWVudHNXaWxsU3RhcnRJbnB1dFNlc3Npb24pCiAgICAgICAgIFtp
bnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHdpbGxTdGFydElucHV0U2Vzc2lvbjpfZm9y
bUlucHV0U2Vzc2lvbi5nZXQoKV07CiAKLSAgICBCT09MIGVkaXRhYmxlQ2hhbmdlZCA9IFtzZWxm
IHNldElzRWRpdGFibGU6WUVTXTsKKyAgICBCT09MIGlzU2VsZWN0YWJsZSA9IG1heUNvbnRhaW5T
ZWxlY3RhYmxlVGV4dChpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSk7CisgICAgQk9PTCBlZGl0YWJs
ZUNoYW5nZWQgPSBbc2VsZiBzZXRJc0VkaXRhYmxlOmlzU2VsZWN0YWJsZV07CiAgICAgX2ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24gPSBpbmZvcm1hdGlvbjsKICAgICBfdHJhaXRzID0gbmlsOwog
CkBAIC00OTk5LDcgKzUwMjUsNyBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdl
YktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAgIFtzZWxm
IHJlbG9hZElucHV0Vmlld3NdOwogI2VuZGlmCiAKLSAgICBpZiAobWF5Q29udGFpblNlbGVjdGFi
bGVUZXh0KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSkKKyAgICBpZiAo
aXNTZWxlY3RhYmxlKQogICAgICAgICBbc2VsZiBfc2hvd0tleWJvYXJkXTsKIAogICAgIC8vIFRo
ZSBjdXN0b20gZml4ZWQgcG9zaXRpb24gcmVjdCBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSAtaXNG
b2N1c2luZ0VsZW1lbnQsIHNvIGlmIHRoYXQgY2hhbmdlcyB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBy
ZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1Db2xvckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1Db2xvckNvbnRyb2wuaAppbmRleCA0M2Q2ZGNiZDU1ODk5NjM4Mzk1NGI3YTU3OTYyZGVkNTc3
YjVlZjhiLi5jM2Q1NTFiMzEyNzZlMmQ4NTI2ZDNjZGI5NTA5YzVmOTcwYTk1Njc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgi
CisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgogCiBAY2xhc3MgV0tDb250ZW50Vmll
dzsKIAotQGludGVyZmFjZSBXS0Zvcm1Db2xvckNvbnRyb2wgOiBOU09iamVjdDxXS0Zvcm1QZXJp
cGhlcmFsPgorQGludGVyZmFjZSBXS0Zvcm1Db2xvckNvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFs
QmFzZQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7
CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1Db2xvckNvbnRyb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtQ29sb3JDb250cm9sLm1tCmluZGV4IGY1NTM5ZjM0ZDg2YTA0YzFlOGIwYjZmZjI0ZmVm
OGE2ZDBmN2U4YzUuLjU3Y2VhNWZhM2YyMWRjYmNmZmUxNWFkODBkZGRiNDdmY2EzYjExYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNv
bnRyb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNv
bG9yQ29udHJvbC5tbQpAQCAtODYsNDIgKzg2LDIzIEBAIC0gKHZvaWQpY29udHJvbEJlZ2luRWRp
dGluZwogCiAtICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCiB7CisgICAgW3NlbGYgZGlzbWlzc1Bv
cG92ZXJBbmltYXRlZDpOT107CiB9CiAKIEBlbmQKIAogI3ByYWdtYSBtYXJrIC0gV0tGb3JtQ29s
b3JDb250cm9sCiAKLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1Db2xvckNvbnRyb2wgewotICAgIFJl
dGFpblB0cjxpZDxXS0Zvcm1Db250cm9sPj4gX2NvbnRyb2w7Ci19CitAaW1wbGVtZW50YXRpb24g
V0tGb3JtQ29sb3JDb250cm9sCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29u
dGVudFZpZXcgKil2aWV3CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KKyAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+
PiBjb250cm9sOwogICAgIGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKLSAg
ICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xvclBvcG92ZXIgYWxsb2NdIGluaXRXaXRo
Vmlldzp2aWV3XSk7CisgICAgICAgIGNvbnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xvclBvcG92ZXIg
YWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CiAgICAgZWxzZQotICAgICAgICBfY29udHJvbCA9
IGFkb3B0TlMoW1tXS0NvbG9yUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwotCi0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKLXsKLSAgICBy
ZXR1cm4gW19jb250cm9sIGNvbnRyb2xWaWV3XTsKLX0KLQotLSAodm9pZCliZWdpbkVkaXRpbmcK
LXsKLSAgICBbX2NvbnRyb2wgY29udHJvbEJlZ2luRWRpdGluZ107Ci19Ci0KLS0gKHZvaWQpZW5k
RWRpdGluZwotewotICAgIFtfY29udHJvbCBjb250cm9sRW5kRWRpdGluZ107CisgICAgICAgIGNv
bnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xvclBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXdd
KTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNvbnRyb2w6V1RGTW92ZShj
b250cm9sKV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaAppbmRleCAxNjJjMTZiNDg5YTBlMzFlZDVm
Y2Y1MTgwM2MwODZkNjVmZjhlNjcyLi5lMDdiYjQ5MWU4YzZhMzg4NzA2ZjFmNjlkNjI3NDJiN2E1
OGZhZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtSW5wdXRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybUlucHV0Q29udHJvbC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKLSNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKKyNpbXBvcnQgIldL
Rm9ybVBlcmlwaGVyYWxCYXNlLmgiCiAKIEBjbGFzcyBXS0NvbnRlbnRWaWV3OwogCi1AaW50ZXJm
YWNlIFdLRm9ybUlucHV0Q29udHJvbCA6IE5TT2JqZWN0PFdLRm9ybVBlcmlwaGVyYWw+CitAaW50
ZXJmYWNlIFdLRm9ybUlucHV0Q29udHJvbCA6IFdLRm9ybVBlcmlwaGVyYWxCYXNlCiAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29u
dHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENv
bnRyb2wubW0KaW5kZXggY2ZlZDJkNTBhNmM4YmEwM2Q0ZDIwMTllMTFlNmE4Y2QwOTgwYTQ2MS4u
ZjU3ODY2YTExMmNiZDVlOTA3YjQ3NGMzMWRhZWE0ODg0M2ExZGE1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1t
CkBAIC0yMzksNjEgKzIzOSwzNiBAQCAtICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCiBAZW5kCiAK
IC8vIFdLRm9ybUlucHV0Q29udHJvbAotQGltcGxlbWVudGF0aW9uIFdLRm9ybUlucHV0Q29udHJv
bCB7Ci0gICAgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gX2NvbnRyb2w7Ci19
CitAaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRDb250cm9sCiAKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBVSURhdGVQaWNrZXJNb2Rl
IG1vZGU7CiAKICAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVt
ZW50VHlwZSkgewogICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgogICAgICAgICBtb2RlID0gVUlE
YXRlUGlja2VyTW9kZURhdGU7CiAgICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBJbnB1dFR5cGU6
OkRhdGVUaW1lTG9jYWw6CiAgICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlRGF0ZUFuZFRp
bWU7CiAgICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAg
IG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlVGltZTsKICAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNl
IElucHV0VHlwZTo6TW9udGg6CiAgICAgICAgIG1vZGUgPSAoVUlEYXRlUGlja2VyTW9kZSlVSURh
dGVQaWNrZXJNb2RlWWVhckFuZE1vbnRoOwogICAgICAgICBicmVhazsKLQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAor
ICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+IGNvbnRyb2w7CiAgICAgaWYg
KGN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKQotICAgICAgICBfY29udHJvbCA9IGFk
b3B0TlMoW1tXS0RhdGVUaW1lUG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBp
Y2tlck1vZGU6bW9kZV0pOworICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQ
b3BvdmVyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTptb2RlXSk7CiAg
ICAgZWxzZQotICAgICAgICBfY29udHJvbCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFs
bG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTptb2RlXSk7Ci0KLSAgICByZXR1
cm4gc2VsZjsKLQotfQotCi0tICh2b2lkKWJlZ2luRWRpdGluZwotewotICAgIFtfY29udHJvbCBj
b250cm9sQmVnaW5FZGl0aW5nXTsKLX0KLQotLSAodm9pZCllbmRFZGl0aW5nCi17Ci0gICAgW19j
b250cm9sIGNvbnRyb2xFbmRFZGl0aW5nXTsKLX0KLQotLSAoVUlWaWV3ICopYXNzaXN0YW50Vmll
dwotewotICAgIHJldHVybiBbX2NvbnRyb2wgY29udHJvbFZpZXddOworICAgICAgICBjb250cm9s
ID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRh
dGVQaWNrZXJNb2RlOm1vZGVdKTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3
IGNvbnRyb2w6V1RGTW92ZShjb250cm9sKV07CiB9CiAKIEBlbmQKQEAgLTMwMiwxMiArMjc3LDEw
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dENvbnRyb2wgKFdLVGVzdGluZykKIAogLSAo
TlNTdHJpbmcgKilkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZQogewotICAgIGlmIChbX2NvbnRy
b2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKLSAgICAgICAgcmV0dXJu
IFsoV0tEYXRlVGltZVBpY2tlciAqKV9jb250cm9sLmdldCgpIGNhbGVuZGFyVHlwZV07Ci0KLSAg
ICBpZiAoW19jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIuY2xhc3NdKQot
ICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUG9wb3ZlciAqKV9jb250cm9sLmdldCgpIGNhbGVu
ZGFyVHlwZV07Ci0KKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRp
bWVQaWNrZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2Vs
Zi5jb250cm9sIGNhbGVuZGFyVHlwZV07CisgICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZD
bGFzczpXS0RhdGVUaW1lUG9wb3Zlci5jbGFzc10pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRp
bWVQb3BvdmVyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlwZV07CiAgICAgcmV0dXJuIG5pbDsK
IH0KIApAQCAtMzg4LDYgKzM2MSw4IEBAIC0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwogCiAt
ICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCiB7CisgICAgW3NlbGYgZGlzbWlzc1BvcG92ZXJBbmlt
YXRlZDpOT107CisgICAgW192aWV3Q29udHJvbGxlci5nZXQoKS5pbm5lckNvbnRyb2wgY29udHJv
bEVuZEVkaXRpbmddOwogfQogCiAtIChVSVZpZXcgKiljb250cm9sVmlldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmgKaW5kZXgg
NjdlODg3M2RhY2NiZGNiYjBjY2U3YjEzYmZiYTQ4NGJhYjc4MGQ2My4uYjE4MTJiZTQ0MmYyMmM5
ZjU3MTMwOTFiZTRmNmI3MzI5Y2EzZWEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbC5oCkBAIC0yMywxNiArMjMsMjEgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitAY2xhc3MgVUlFdmVu
dDsKIEBjbGFzcyBVSVZpZXc7CiAKIEBwcm90b2NvbCBXS0Zvcm1QZXJpcGhlcmFsCiAtICh2b2lk
KWJlZ2luRWRpdGluZzsKIC0gKHZvaWQpZW5kRWRpdGluZzsKIC0gKFVJVmlldyAqKWFzc2lzdGFu
dFZpZXc7CitAb3B0aW9uYWwKKy0gKEJPT0wpaGFuZGxlS2V5RXZlbnQ6KFVJRXZlbnQgKilldmVu
dDsKIEBlbmQKIAogQHByb3RvY29sIFdLRm9ybUNvbnRyb2wKIC0gKFVJVmlldyAqKWNvbnRyb2xW
aWV3OwogLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nOwogLSAodm9pZCljb250cm9sRW5kRWRp
dGluZzsKK0BvcHRpb25hbAorLSAoQk9PTCljb250cm9sSGFuZGxlS2V5RXZlbnQ6KFVJRXZlbnQg
KilldmVudDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RlNmM1MmNlYmIxNWUy
OTY2NGJmOWYzM2YzZTQ4ZjY5ZjM5YjgzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAi
V0tGb3JtUGVyaXBoZXJhbC5oIgorI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKworQGludGVyZmFj
ZSBXS0Zvcm1QZXJpcGhlcmFsQmFzZSA6IE5TT2JqZWN0IDxXS0Zvcm1QZXJpcGhlcmFsPgorCist
IChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGNvbnRyb2w6KFJldGFpblB0cjxOU09iamVj
dCA8V0tGb3JtQ29udHJvbD4+JiYpY29udHJvbCBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOwor
CistICh2b2lkKWJlZ2luRWRpdGluZzsKKy0gKHZvaWQpZW5kRWRpdGluZzsKKy0gKFVJVmlldyAq
KWFzc2lzdGFudFZpZXc7CistIChCT09MKWhhbmRsZUtleUV2ZW50OihVSUV2ZW50ICopZXZlbnQ7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tDb250ZW50VmlldyAqdmlldzsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+
ICpjb250cm9sOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNFZGl0
aW5nKSBCT09MIGVkaXRpbmc7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODA5OTlkYTUxYjg3MWQzMzM4ODJmMzZhZGUwN2VjNWQ4YTc1YzZjYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJp
cGhlcmFsQmFzZS5tbQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorCitAaW1wbGVtZW50YXRpb24gV0tGb3JtUGVyaXBoZXJhbEJh
c2UgeworICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+IF9jb250cm9sOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBj
b250cm9sOihSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiYmKWNvbnRyb2wKK3sK
KyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIF92aWV3ID0gdmlldzsKKyAgICBfY29udHJvbCA9IFdURk1vdmUoY29udHJvbCk7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYmVnaW5FZGl0aW5nCit7CisgICAgX2VkaXRpbmcg
PSBZRVM7CisgICAgW19jb250cm9sIGNvbnRyb2xCZWdpbkVkaXRpbmddOworfQorCistICh2b2lk
KWVuZEVkaXRpbmcKK3sKKyAgICBfZWRpdGluZyA9IE5POworICAgIFtfY29udHJvbCBjb250cm9s
RW5kRWRpdGluZ107Cit9CisKKy0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKK3sKKyAgICByZXR1
cm4gW19jb250cm9sIGNvbnRyb2xWaWV3XTsKK30KKworLSAoTlNPYmplY3QgPFdLRm9ybUNvbnRy
b2w+ICopY29udHJvbAoreworICAgIHJldHVybiBfY29udHJvbC5nZXQoKTsKK30KKworLSAoQk9P
TCloYW5kbGVLZXlFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgQVNTRVJUKGV2ZW50Ll9o
aWRFdmVudCk7CisgICAgaWYgKFtfY29udHJvbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGNvbnRyb2xIYW5kbGVLZXlFdmVudDopXSkgeworICAgICAgICBpZiAoW19jb250cm9sIGNvbnRy
b2xIYW5kbGVLZXlFdmVudDpldmVudF0pCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgIH0K
KyAgICBpZiAoIWV2ZW50Ll9pc0tleURvd24pCisgICAgICAgIHJldHVybiBOTzsKKyAgICBVSVBo
eXNpY2FsS2V5Ym9hcmRFdmVudCAqa2V5RXZlbnQgPSAoVUlQaHlzaWNhbEtleWJvYXJkRXZlbnQg
KilldmVudDsKKyAgICBpZiAoa2V5RXZlbnQuX2lucHV0RmxhZ3MgJiBrVUlLZXlib2FyZElucHV0
TW9kaWZpZXJGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBOTzsKKyAgICBpZiAoX2VkaXRp
bmcgJiYgKGtleUV2ZW50Ll9rZXlDb2RlID09IGtISURVc2FnZV9LZXlib2FyZEVzY2FwZSB8fCBb
a2V5RXZlbnQuX3VubW9kaWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dEVzY2Fw
ZV0pKSB7CisgICAgICAgIFtfdmlldyBhY2Nlc3NvcnlEb25lXTsKKyAgICAgICAgcmV0dXJuIFlF
UzsKKyAgICB9CisgICAgcmV0dXJuIE5POworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLmgKaW5kZXggN2JlNjUxYTgwNGE4OTZlOTBkNjFjZDU4
OGU2Mjk0ODA1ZjgyNjI0Mi4uZjY5NWJlMzFiOThlYmRkY2ZiNmM4MDFiOWI1YmNlZmQyMWRlODUw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNl
bGVjdENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtU2VsZWN0Q29udHJvbC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQgIkZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCi0jaW1wb3J0ICJXS0Zv
cm1QZXJpcGhlcmFsLmgiCisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgogI2ltcG9y
dCAiV0tGb3JtUG9wb3Zlci5oIgogI2ltcG9ydCA8VUlLaXQvVUlQaWNrZXJWaWV3Lmg+CiAKQEAg
LTM1LDcgKzM1LDcgQEAgQ0dGbG9hdCBhZGp1c3RlZEZvbnRTaXplKENHRmxvYXQgdGV4dFdpZHRo
LCBVSUZvbnQgKiwgQ0dGbG9hdCBpbml0aWFsRm9udFNpemUsIGMKIAogQGNsYXNzIFdLQ29udGVu
dFZpZXc7CiAKLUBpbnRlcmZhY2UgV0tGb3JtU2VsZWN0Q29udHJvbCA6IE5TT2JqZWN0PFdLRm9y
bVBlcmlwaGVyYWw+CitAaW50ZXJmYWNlIFdLRm9ybVNlbGVjdENvbnRyb2wgOiBXS0Zvcm1QZXJp
cGhlcmFsQmFzZQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAq
KXZpZXc7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW0KaW5kZXggM2I5NDhkMWFkNGRiNTFmZjEyYjJl
YjA3OTQzMjk5YzFhMzExMmY4Yi4uM2Q1YzkyYTIxZWYyNjdiMjcyYmUwMmUyNDFkNjExNDMzNzAz
NmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bVNlbGVjdENvbnRyb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVNlbGVjdENvbnRyb2wubW0KQEAgLTY1LDkgKzY1LDYgQEAgQGltcGxlbWVudGF0aW9u
IFdLRm9ybVNlbGVjdENvbnRyb2wgewogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihX
S0NvbnRlbnRWaWV3ICopdmlldwogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQot
ICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgYm9vbCBoYXNHcm91cHMgPSBmYWxzZTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zZWxl
Y3RPcHRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICh2aWV3LmZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uc2VsZWN0T3B0aW9uc1tpXS5pc0dyb3VwKSB7CkBAIC03NiwyOSArNzMsMTUg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKICAg
ICAgICAgfQogICAgIH0KIAorICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+
IGNvbnRyb2w7CiAgICAgaWYgKGN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKQotICAg
ICAgICBfY29udHJvbCA9IGFkb3B0TlMoW1tXS1NlbGVjdFBvcG92ZXIgYWxsb2NdIGluaXRXaXRo
Vmlldzp2aWV3IGhhc0dyb3VwczpoYXNHcm91cHNdKTsKKyAgICAgICAgY29udHJvbCA9IGFkb3B0
TlMoW1tXS1NlbGVjdFBvcG92ZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGhhc0dyb3Vwczpo
YXNHcm91cHNdKTsKICAgICBlbHNlIGlmICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24u
aXNNdWx0aVNlbGVjdCB8fCBoYXNHcm91cHMpCi0gICAgICAgIF9jb250cm9sID0gYWRvcHROUyhb
W1dLTXVsdGlwbGVTZWxlY3RQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisgICAg
ICAgIGNvbnRyb2wgPSBhZG9wdE5TKFtbV0tNdWx0aXBsZVNlbGVjdFBpY2tlciBhbGxvY10gaW5p
dFdpdGhWaWV3OnZpZXddKTsKICAgICBlbHNlCi0gICAgICAgIF9jb250cm9sID0gYWRvcHROUyhb
W1dLU2VsZWN0U2luZ2xlUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwotICAgICAg
ICAKLSAgICByZXR1cm4gc2VsZjsKLX0KKyAgICAgICAgY29udHJvbCA9IGFkb3B0TlMoW1tXS1Nl
bGVjdFNpbmdsZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXddKTsKIAotLSAoVUlWaWV3
ICopYXNzaXN0YW50VmlldwotewotICAgIHJldHVybiBbX2NvbnRyb2wgY29udHJvbFZpZXddOwot
fQotCi0tICh2b2lkKWJlZ2luRWRpdGluZwotewotICAgIFtfY29udHJvbCBjb250cm9sQmVnaW5F
ZGl0aW5nXTsKLX0KLQotLSAodm9pZCllbmRFZGl0aW5nCi17Ci0gICAgW19jb250cm9sIGNvbnRy
b2xFbmRFZGl0aW5nXTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNvbnRy
b2w6V1RGTW92ZShjb250cm9sKV07CiB9CiAKIEBlbmQKQEAgLTEwNywxNiArOTAsMTUgQEAgQGlt
cGxlbWVudGF0aW9uIFdLRm9ybVNlbGVjdENvbnRyb2woV0tUZXN0aW5nKQogCiAtICh2b2lkKXNl
bGVjdFJvdzooTlNJbnRlZ2VyKXJvd0luZGV4IGluQ29tcG9uZW50OihOU0ludGVnZXIpY29tcG9u
ZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0aW9uOihCT09MKWV4dGVuZGluZ1NlbGVjdGlvbgogewot
ICAgIGlmIChbX2NvbnRyb2wgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZWxlY3RSb3c6
aW5Db21wb25lbnQ6ZXh0ZW5kaW5nU2VsZWN0aW9uOildKQotICAgICAgICBbaWQ8V0tTZWxlY3RU
ZXN0aW5nPihfY29udHJvbC5nZXQoKSkgc2VsZWN0Um93OnJvd0luZGV4IGluQ29tcG9uZW50OmNv
bXBvbmVudEluZGV4IGV4dGVuZGluZ1NlbGVjdGlvbjpleHRlbmRpbmdTZWxlY3Rpb25dOworICAg
IGlmIChbc2VsZi5jb250cm9sIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2VsZWN0Um93
OmluQ29tcG9uZW50OmV4dGVuZGluZ1NlbGVjdGlvbjopXSkKKyAgICAgICAgW2lkPFdLU2VsZWN0
VGVzdGluZz4oc2VsZi5jb250cm9sKSBzZWxlY3RSb3c6cm93SW5kZXggaW5Db21wb25lbnQ6Y29t
cG9uZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0aW9uOmV4dGVuZGluZ1NlbGVjdGlvbl07CiB9CiAK
IC0gKE5TU3RyaW5nICopc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZQogewotICAgIGlmICghW19jb250
cm9sIGlzS2luZE9mQ2xhc3M6W1dLU2VsZWN0UG9wb3ZlciBjbGFzc11dKQorICAgIGlmICghW3Nl
bGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOltXS1NlbGVjdFBvcG92ZXIgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbKFdLU2VsZWN0UG9wb3ZlciAqKV9jb250cm9s
LmdldCgpIHRhYmxlVmlld0NvbnRyb2xsZXJdLnRpdGxlOworICAgIHJldHVybiBbKFdLU2VsZWN0
UG9wb3ZlciAqKXNlbGYuY29udHJvbCB0YWJsZVZpZXdDb250cm9sbGVyXS50aXRsZTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bVNlbGVjdFBvcG92ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtU2VsZWN0UG9wb3Zlci5tbQppbmRleCBlMmQyYmJkMmY0NWRhNzdjOTZmY2Y4NWI0OWYyMTIy
YTIzYTRlYzdiLi41NTQ5NjkwMmU3MzMxMmQ5NTc1NjdkYjBhYmY3NWQ4NDZlYWIxOWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9w
b3Zlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2Vs
ZWN0UG9wb3Zlci5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5Lmgi
CiAjaW1wb3J0IDxVSUtpdC9VSVBpY2tlclZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxp
emVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNDQ2LDYg
KzQ0Nyw3IEBAIC0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwogCiAtICh2b2lkKWNvbnRyb2xF
bmRFZGl0aW5nCiB7CisgICAgW3NlbGYgZGlzbWlzc1BvcG92ZXJBbmltYXRlZDpOT107CiB9CiAK
IC0gKHZvaWQpX3VzZXJBY3Rpb25EaXNtaXNzZWRQb3BvdmVyOihpZClzZW5kZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU4NDc1ODgy
YTRjOTBhYTg0ZjZlNWViYzBmMDY3NThiZDUwYzUxNzAuLmNiMTlkMmE5MDU4NGZmZDgxNTk1OTdi
ODc3NzdiNGYzZTNlNWEyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTU4OSw2ICsxNTg5LDcgQEAKIAkJQ0UxQTBCRDYxQTQ4RTZD
NjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9Owog
CQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVG
NzQgLyogVGV4dElucHV0U1BJLmggKi87IH07CiAJCUNFNUI0Qzg4MjFCNzNEODcwMDIyRTY0RiAv
KiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVCNEM4NjIxQjczRDg3MDAyMkU2NEYgLyogV0tT
eW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oICovOyB9OworCQlDRTcwRUU1RDIyNDQyQkQw
MDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzBFRTVDMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zv
cm1QZXJpcGhlcmFsQmFzZS5oICovOyB9OwogCQlDRUM4RjlDQjFGREY1ODcwMDAyNjM1RTcgLyog
V0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQzhGOUNBMUZERjU4NzAwMDI2MzVFNyAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAv
KiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJ
S2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RUU0QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKQEAgLTQ0NjYsNiAr
NDQ2Nyw4IEBACiAJCUNFMUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0U1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRo
ZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU3ludGhldGljRmxh
Z3NDaGFuZ2VkV2ViRXZlbnQuaDsgcGF0aCA9IGlvcy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdl
YkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUI0Qzg3MjFCNzNEODcw
MDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5tbTsgcGF0aCA9IGlv
cy9XS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTcwRUU1QTIyNDQyQkIzMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJh
c2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbTsgcGF0
aCA9IGlvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0U3MEVFNUMyMjQ0MkJEMDAwRTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybVBlcmlwaGVyYWxCYXNlLmg7IHBhdGggPSBpb3Mv
Zm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VDOEY5Q0ExRkRGNTg3MDAwMjYzNUU3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVQ
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkRFMTUyQ0NBRTgw
MEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFREExMkRGMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg3MTYsNiArODcxOSw4IEBACiAJCQkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9y
bUlucHV0Q29udHJvbC5oICovLAogCQkJCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zv
cm1JbnB1dENvbnRyb2wubW0gKi8sCiAJCQkJQzU0MjU2QjExOEJFQzE4QjAwREU0MTc5IC8qIFdL
Rm9ybVBlcmlwaGVyYWwuaCAqLywKKwkJCQlDRTcwRUU1QzIyNDQyQkQwMDBFMEFGMEYgLyogV0tG
b3JtUGVyaXBoZXJhbEJhc2UuaCAqLywKKwkJCQlDRTcwRUU1QTIyNDQyQkIzMDBFMEFGMEYgLyog
V0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gKi8sCiAJCQkJQzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5
IC8qIFdLRm9ybVBvcG92ZXIuaCAqLywKIAkJCQlDNTQyNTZCMzE4QkVDMThCMDBERTQxNzkgLyog
V0tGb3JtUG9wb3Zlci5tbSAqLywKIAkJCQlDNTQyNTZCNDE4QkVDMThDMDBERTQxNzkgLyogV0tG
b3JtU2VsZWN0Q29udHJvbC5oICovLApAQCAtOTgzOCw2ICs5ODQzLDcgQEAKIAkJCQlFNTQ4RUJE
MTIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM1NDI1NkI3MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhl
cmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTcwRUU1RDIyNDQyQkQwMDBFMEFGMEYgLyogV0tG
b3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NDI1NkI4MThCRUMxOEMw
MERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTQyNTZCQTE4
QkVDMThDMDBERTQxNzkgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwOENGNTIxRDYzQzEzQTAwQjQ4REYxIC8qIFdLRm9ybVNlbGVjdFBpY2tlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNjE4MzdmODdlOTM2ZjY1MDZhMzk5NTdmYzVjYmZhYmEzMGVhMjY3
NS4uZmQ2NGUzMzYyZDA5NGRmMzA4YzFmYWY2Y2M3MzdlNDlkMGVhMzg5ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE5LTAzLTI4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBTaG91bGQgYmUgYWJsZSB0byBkaXNtaXNzIHBpY2tlciBvciBwb3Bv
dmVyIHVzaW5nIHRoZSBrZXlib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk2MjcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk0MzE3MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVz
dCB0byBlbnN1cmUgdGhhdCBwcmVzc2luZyBFc2NhcGUgb3IgQ29tbWFuZCArIC4gZGlzbWlzc2Vz
IGEgcGlja2VyLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNp
bmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lv
cy9kaXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC5odG1sOiBBZGRlZC4KKwogMjAxOS0wMy0y
OCAgU2hhd24gUm9iZXJ0cyAgPHNyb2JlcnRzQGFwcGxlLmNvbT4KIAogICAgICAgICBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMtcHJp
dmF0ZS5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmY2RlMjdiMmM1Y2ZhZjVhNDE2OTBmMGRkNzI4ZTBm
YjQ1Zjc0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9k
aXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0OSBA
QAorVGVzdHMgdGhhdCBwcmVzc2luZyB0aGUgRXNjYXBlIGtleSBvciBDb21tYW5kICsgLiBkaXNt
aXNzZXMgYSBwaWNrZXIgd2l0aG91dCBjYXVzaW5nIGEgdmFsdWUgY2hhbmdlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCitEaXNtaXNzIGJ5IHByZXNzaW5nIGVzY2FwZToKKwor
Rm9yIGNvbG9yOgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICIjMDAwMDAwIgorCitGb3Ig
ZGF0ZToKK1BBU1MgZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiMjAxOS0wMy0yNiIKKworRm9yIGRh
dGV0aW1lLWxvY2FsOgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICIyMDE5LTAzLTI2VDE0
OjI4OjA1LjQ1NSIKKworRm9yIG1vbnRoOgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICIy
MDE5LTAzIgorCitGb3Igc2VsZWN0OgorUEFTUyBlbGVtZW50VG9UZXN0LnZhbHVlIGlzICJGaXJz
dCIKKworRm9yIHRpbWU6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjE0OjI4IgorCitE
aXNtaXNzIGJ5IHByZXNzaW5nIENvbW1hbmQgKyAuOgorCitGb3IgY29sb3I6CitQQVNTIGVsZW1l
bnRUb1Rlc3QudmFsdWUgaXMgIiMwMDAwMDAiCisKK0ZvciBkYXRlOgorUEFTUyBlbGVtZW50VG9U
ZXN0LnZhbHVlIGlzICIyMDE5LTAzLTI2IgorCitGb3IgZGF0ZXRpbWUtbG9jYWw6CitQQVNTIGVs
ZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTktMDMtMjZUMTQ6Mjg6MDUuNDU1IgorCitGb3IgbW9u
dGg6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTktMDMiCisKK0ZvciBzZWxlY3Q6
CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIkZpcnN0IgorCitGb3IgdGltZToKK1BBU1Mg
ZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiMTQ6MjgiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW9zL2Rpc21pc3MtcGlja2VyLXVzaW5nLWtleWJvYXJkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjNmZDFkNThjZmRlOTJmODA1NzIwZGU0MjVlN2VmODAwYjVhMWIxZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2Rpc21pc3MtcGlja2VyLXVzaW5n
LWtleWJvYXJkLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLSBQbGFjZSB0aGUgdGVzdCBjb250YWluZXIgYWJv
dmUgdGhlIGNvbnNvbGUgb3V0cHV0IHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNvbXBlbnNhdGUgZm9y
IHBhZ2Ugc2Nyb2xsLiAtLT4KKzxkaXYgaWQ9InRlc3QtY29udGFpbmVyIj4KKyAgICA8cD48aW5w
dXQgdHlwZT0iY29sb3IiIGNsYXNzPSJ0ZXN0IiBkYXRhLXRlc3QtbmFtZT0iY29sb3IiPjwvcD4K
KyAgICA8cD48aW5wdXQgdHlwZT0iZGF0ZSIgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJk
YXRlIiB2YWx1ZT0iMjAxOS0wMy0yNiI+PC9wPgorICAgIDxwPjxpbnB1dCB0eXBlPSJkYXRldGlt
ZS1sb2NhbCIgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJkYXRldGltZS1sb2NhbCIgdmFs
dWU9IjIwMTktMDMtMjZUMTQ6Mjg6MDUuNDU1Ij48L3A+CisgICAgPHA+PGlucHV0IHR5cGU9Im1v
bnRoIiBjbGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9Im1vbnRoIiB2YWx1ZT0iMjAxOS0wMyI+
PC9wPgorICAgIDxwPjxzZWxlY3QgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJzZWxlY3Qi
PgorICAgICAgICA8b3B0aW9uPkZpcnN0PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+U2Vjb25k
PC9vcHRpb24+CisgICAgPC9zZWxlY3Q+PC9wPgorICAgIDxwPjxpbnB1dCB0eXBlPSJ0aW1lIiBj
bGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9InRpbWUiIHZhbHVlPSIxNDoyOCI+PC9wPgorPC9k
aXY+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IGVsZW1lbnRUb1Rl
c3Q7CisKK2NvbnN0IG1vZGlmaWVyRGlzcGxheU5hbWVNYXAgPSB7CisgICAgImFsdEtleSI6ICJP
cHRpb24iLAorICAgICJjdHJsS2V5IjogIkNvbnRyb2wiLAorICAgICJtZXRhS2V5IjogIkNvbW1h
bmQiLAorICAgICJzaGlmdEtleSI6ICJTaGlmdCIsCisgICAgImNhcHNMb2NrS2V5IjogIkNhcHMg
TG9jayIsCit9CisKK2NsYXNzIEtleUNvbW1hbmQgeworICAgIGNvbnN0cnVjdG9yKGtleSwgbW9k
aWZpZXJzID0gW10pCisgICAgeworICAgICAgICB0aGlzLmtleSA9IGtleTsKKyAgICAgICAgdGhp
cy5tb2RpZmllcnMgPSBtb2RpZmllcnM7CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsK
KyAgICAgICAgbGV0IHJlYWRhYmxlQ29tbWFuZCA9IHRoaXMubW9kaWZpZXJzLm1hcCgobW9kaWZp
ZXIpID0+IG1vZGlmaWVyRGlzcGxheU5hbWVNYXBbbW9kaWZpZXJdKTsKKyAgICAgICAgcmVhZGFi
bGVDb21tYW5kLnB1c2godGhpcy5rZXkpOworICAgICAgICByZXR1cm4gcmVhZGFibGVDb21tYW5k
LmpvaW4oIiArICIpOworICAgIH0KK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgbGV0IHRl
c3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1jb250YWluZXIiKTsK
KyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOworICAgIGZpbmlz
aEpTVGVzdCgpCit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTXVzdCBiZSBydW4gaW4gV2Vi
S2l0VGVzdFJ1bm5lci4iKTsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbGV0IGVsZW1lbnRzVG9UZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgidGVzdCIpOworICAgIGZvciAobGV0IGtleUNvbW1hbmQgb2YgW25ldyBLZXlDb21tYW5k
KCJlc2NhcGUiKSwgbmV3IEtleUNvbW1hbmQoIi4iLCBbIm1ldGFLZXkiXSldKSB7CisgICAgICAg
IGRlYnVnKGA8YnI+RGlzbWlzcyBieSBwcmVzc2luZyAke2tleUNvbW1hbmR9OmApOworICAgICAg
ICBmb3IgKGVsZW1lbnRUb1Rlc3Qgb2YgZWxlbWVudHNUb1Rlc3QpIHsKKyAgICAgICAgICAgIGRl
YnVnKGA8YnI+Rm9yICR7ZWxlbWVudFRvVGVzdC5kYXRhc2V0LnRlc3ROYW1lfTpgKTsKKyAgICAg
ICAgICAgIGxldCBleHBlY3RlZFZhbHVlID0gZWxlbWVudFRvVGVzdC52YWx1ZTsKKyAgICAgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24o
ZWxlbWVudFRvVGVzdCk7CisgICAgICAgICAgICBVSUhlbHBlci5rZXlEb3duKGtleUNvbW1hbmQu
a2V5LCBrZXlDb21tYW5kLm1vZGlmaWVycyk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci53
YWl0Rm9yS2V5Ym9hcmRUb0hpZGUoKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZWxlbWVudFRvVGVzdC52YWx1ZSIsIGV4cGVjdGVkVmFsdWUpOworICAgICAgICB9CisgICAg
fQorICAgIGVsZW1lbnRUb1Rlc3QgPSBudWxsOworICAgIGRvbmUoKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3RzIHRoYXQgcHJlc3NpbmcgdGhlIEVzY2FwZSBrZXkgb3IgQ29tbWFuZCArIC4gZGlz
bWlzc2VzIGEgcGlja2VyIHdpdGhvdXQgY2F1c2luZyBhIHZhbHVlIGNoYW5nZS4iKTsKKworcnVu
VGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366216</attachid>
            <date>2019-03-28 15:28:23 -0700</date>
            <delta_ts>2019-04-03 10:06:11 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-196272-20190328152822.patch</filename>
            <type>text/plain</type>
            <size>38841</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExNjU5M2IyNjEzNTI0MDI3
MDhiNTIzYmMyNDc2ZjRjY2U3YTgxM2EuLmY5MzI1OWQwYjFmNTQzMjEzOGRkMzI4Y2YyNzAwYTJm
M2QzZjgzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDMtMjggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNob3VsZCBiZSBhYmxl
IHRvIGRpc21pc3MgcGlja2VyIG9yIHBvcG92ZXIgdXNpbmcgdGhlIGtleWJvYXJkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyNzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ4OTQzMTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVyY2VwdCBrZXkgZXZlbnRzIGFuZCByb3V0ZSB0aGVtIHRv
IHRoZSBjdXJyZW50IGlucHV0IHBlcmlwaGVyYWwgKGlmIHdlIGhhdmUgb25lKS4gQWRkIGEgYmFz
ZSBrZXkgZXZlbnQgaGFuZGxlcgorICAgICAgICBmb3IgYWxsIGZvcm0gcGVyaXBoZXJhbHMgdGhh
dCBkaXNtaXNzZXMgdGhlIGFjY2Vzc29yeSB3aGVuIGVpdGhlciB0aGUgRXNjYXBlIGtleSBpcyBw
cmVzc2VkIG9yIENvbW1hbmQgKyAuIGlzIHByZXNzZWQuCisgICAgICAgIEkgd2lsbCBmaXggdGhp
cyBpc3N1ZSBmb3IgdGhlIGZpbGUgdXBsb2FkIHBpY2tlci9wb3BvdmVyIGluIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2Mjg3Pi4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6IEFkZCBmaWxlIFdLRm9ybVBlcmlwaGVyYWxCYXNlLm1tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGVuZEVkaXRpbmdBbmRVcGRhdGVGb2N1c0FwcGVhcmFuY2VXaXRoUmVhc29u
XSk6IEFkZGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVy
Rm9yV2ViVmlld10pOiBXcml0ZSBpbiB0ZXJtcyBvZiAtZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnB1dFZpZXddKTogQ29kZSBz
dHlsZSBuaXQgd2hpbGUgSSBhbSBoZXJlOyBhZGQgYW4gZW1wdHkgbGluZSB0byBkZW1hcmNhdGUg
dGhlICJjcmF6eSIKKyAgICAgICAgY29kZSB0aGF0IHRoZSBGSVhNRSBpcyByZWZlcnJpbmcgdG8g
YW5kIHNob3VsZCBpZGVhbGx5IGJlIHJlbW92ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGlzIHNhbmUg
dG8gYWx3YXlzIGRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjY2Vzc29yeURvbmVdKTog
V2hlbiB0aGUgYWNjZXNzb3J5IGlzIGRpc21pc3NlZCB2aWEgdGhlIERvbmUgYnV0dG9uIChpUGhv
bmUpIG9yIGJ5IHByZXNzaW5nCisgICAgICAgIEVzY2FwZSBvciBDb21tYW5kICsgLiB1c2luZyBh
IGhhcmR3YXJlIGtleWJvYXJkIChpUGhvbmUgb3IgaVBhZCkgdGhlbiBlbmQgdGhlIGN1cnJlbnQg
ZWRpdGluZyBzZXNzaW9uLCBidXQKKyAgICAgICAgZG8gbm90IHJlc2lnbiBmaXJzdCByZXNwb25k
ZXIgc3RhdHVzIGFzIHRoZSBwYWdlIGFjdGl2YXRpb24gc3RhdGUgc2hvdWxkIG5vdCBiZSBjaGFu
Z2VkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVLZXlVSUV2ZW50Ol0pOiBCcmlu
ZyBiYWNrIHRoaXMgY29kZSB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKFVJS0lUX0tFWUJPQVJEX0FE
RElUSU9OUykKKyAgICAgICAgYXMgd2UgbmVlZCB0byByb3V0ZSBrZXkgZXZlbnRzIHRvIHRoZSBp
bnB1dCBwZXJpcGhlcmFsIChpZiB3ZSBoYXZlIG9uZSkuIElmIHRoZSBpbnB1dCBwZXJpcGhlcmFs
IGhhbmRsZXMgaXQKKyAgICAgICAgdGhlbiB3ZSdyZSBkb25lOiBubyBuZWVkIHRvIGxldCBVSUtp
dCBvciBXZWJLaXQgaGFuZGxlIGl0IHdoZW4gYnVpbGRpbmcgd2l0aCBVU0UoVUlLSVRfS0VZQk9B
UkRfQURESVRJT05TKSwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgaW5wdXQgcGVyaXBo
ZXJhbCBkb2VzIG5vdCBoYW5kbGUgaXQgdGhlbiBkbyB3aGF0IHdlIGRvIG5vdy4KKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQ
cmV2aW91c05vZGU6Y2hhbmdpbmdBY3Rpdml0eVN0YXRlOnVzZXJPYmplY3Q6XSk6CisgICAgICAg
IElmIHRoZSBlbGVtZW50IGlzIHJlLWZvY3VzZWQgYW5kIHdlIGhhdmUgYW4gaW5wdXQgcGVyaXBo
ZXJhbCB0aGVuIHdlIHdhbnQgdG8gZW5zdXJlIHdlIGFyZSBmaXJzdCByZXNwb25kZXIsCisgICAg
ICAgIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LCB1cGRhdGUgdGhlIGFjY2Vzc29yeSBhbmQg
dGVsbCB0aGUgcGVyaXBoZXJhbCB0aGF0IGVkaXRpbmcgaGFzIGJlZ3VuIChhZ2FpbikuCisgICAg
ICAgIEZvciBhbGwgb3RoZXIgZWxlbWVudCByZS1mb2N1c2luZyB3aGVyZSB3ZSBkb24ndCBoYXZl
IGEgcGVyaXBoZXJhbCBkbyB3aGF0IHdlIGRvIG5vdy4gQWxzbywgdXBkYXRlIF9pc0VkaXRhYmxl
CisgICAgICAgIHRvIHJlZmxlY3Qgd2hldGhlciB0aGUgZm9jdXNlZCBlbGVtZW50IGNvbnRhaW5z
IHNlbGVjdGFibGUgdGV4dC4gVGhpcyBpcyB3aGF0IFVJS2l0IHdhbnRzIHRvIGtub3cgd2hlbiBp
dCBxdWVyaWVzCisgICAgICAgIC1pc0VkaXRhYmxlLiBOb3cgdGhhdCB3ZSBubyBsb25nZXIgYmx1
ciB0aGUgZm9jdXNlZCBlbGVtZW50IG9uIGlQYWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBkaXNtaXNz
ZWQgYW5kIGtlZXAgdGhlCisgICAgICAgIHBlcmlwaGVyYWwgdW50aWwgdGhlcmUgaXMgYSBmb2N1
cyBjaGFuZ2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBnaXZlIHRoZSBjb3JyZWN0IGFuc3dl
ciB0byBVSUtpdCBvbiB2aWV3CisgICAgICAgIGVkaXRhYmlsaXR5LiBPdGhlcndpc2UsIFVJS2l0
IHRoaW5rcyBpdCBuZWVkcyB0byB1cGRhdGUgdGhlIHRleHQgc2VsZWN0aW9uIHN0YXRlIHdoZW4g
YSBwb3B1cCBidXR0b24gaXMgdGFwcGVkCisgICAgICAgIGFnYWluIChhcyBwYXJ0IG9mIGl0cyBn
ZXN0dXJlIHJlY29nbml6ZXIgbG9naWMpIGFuZCB0aGlzIGNhdXNlcyBhbiBhc3NlcnRpb24gZmFp
bHVyZSBpbiBVSUtpdCBhZnRlciBpdCBjYWxscyBiYWNrCisgICAgICAgIGludG8gdXMgdG8gYXNr
IGZvciBzZWxlY3Rpb24gZGV0YWlscywgd2hpY2ggd2UgY29ycmVjdGx5IHJlc3BvbmQgd2l0aCB0
aGUgZXF1aXZhbGVudCBvZiAid2UgaGF2ZSBub25lIiBhbmQgaXMKKyAgICAgICAgbm90IHRoZSBh
bnN3ZXIgVUlLaXQgZXhwZWN0cyBzaW5jZSB3ZSB0b2xkIGl0IHdlIGFyZSBlZGl0YWJsZS4gKEN1
cnJlbnRseSB3ZSBtYW5hZ2UgdG8gZ2V0IGF3YXkgd2l0aCB0ZWxsaW5nIFVJS2l0CisgICAgICAg
IHdlIGFyZSBhbHdheXMgZWRpdGFibGUgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gcGVy
Zm9ybSBhIHNlbGVjdGlvbiBvcGVyYXRpb24gd2hlbiB3ZSBoYXZlIGEgcG9wb3ZlciBvcGVuLgor
ICAgICAgICBDbG9zaW5nIHRoZSBwb3BvdmVyIGJsdXJzIHRoZSBlbGVtZW50LCBzZXR0aW5nIC1p
c0VkaXRhYmxlIHRvIE5PIGFuZCBkZWFsbG9jYXRlcyB0aGUgcGVyaXBoZXJhbCBhdm9pZGluZyB0
aGlzIGlzc3VlKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29u
dHJvbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
Lm1tOgorICAgICAgICAoLVtXS0NvbG9yUG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10pOiBEaXNt
aXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAoLVtXS0Zvcm1Db2xvckNvbnRyb2wgaW5pdFdpdGhW
aWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5pdGlhbGl6ZXIuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUNvbG9yQ29udHJvbCBiZWdpbkVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tGb3JtQ29sb3JDb250cm9sIGVuZEVkaXRpbmddKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tOgorICAgICAgICAoLVtXS0Zvcm1J
bnB1dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3Mg
aW5pdGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybUlucHV0Q29udHJvbCBkYXRlVGltZVBpY2tl
ckNhbGVuZGFyVHlwZV0pOiBXcml0ZSBpbiB0ZXJtcyBvZiBzZWxmLmNvbnRyb2wuCisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQb3BvdmVyIGNvbnRyb2xFbmRFZGl0aW5nXSk6IERpc21pc3MgdGhlIHBv
cG92ZXIgYW5kIHRlbGwgdGhlIGNvbnRyb2xsZXIgdGhhdCBlZGl0aW5nIGVuZGVkLgorICAgICAg
ICAoLVtXS0Zvcm1JbnB1dENvbnRyb2wgYmVnaW5FZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLRm9ybUlucHV0Q29udHJvbCBlbmRFZGl0aW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLRm9ybUlucHV0Q29udHJvbCBhc3Npc3RhbnRWaWV3XSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaW5pdFdpdGhWaWV3OmNvbnRyb2w6XSk6IFRha2Ug
b3duZXJzaGlwIG9mIHRoZSBwYXNzZWQgV0tGb3JtQ29udHJvbC4KKyAgICAgICAgKC1bV0tGb3Jt
UGVyaXBoZXJhbEJhc2UgYmVnaW5FZGl0aW5nXSk6IFR1cm4gYXJvdW5kIGFuZCB0ZWxsIHRoZSBj
b250cm9sLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBlbmRFZGl0aW5nXSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBhc3Npc3RhbnRWaWV3XSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Zvcm1QZXJpcGhlcmFsQmFzZSBjb250cm9sXSk6IFJldHVybiB0
aGUgY29udHJvbC4KKyAgICAgICAgKC1bV0tGb3JtUGVyaXBoZXJhbEJhc2UgaGFuZGxlS2V5RXZl
bnQ6XSk6IERpc21pc3MgdGhlIGFjY2Vzc29yeSAoaW4gdGhlIHNhbWUgd2F5IHdlIGRpc21pc3Mg
d2hlbiB0aGUgRG9uZQorICAgICAgICBidXR0b24gaXMgcHJlc3NlZCBvbiBpUGhvbmUpIG9uIGtl
eWRvd24gb2YgdGhlIEVzY2FwZSBrZXkgb3Igd2hlbiB3ZSByZWNlaXZlIGEgVUlLZXlJbnB1dEVz
Y2FwZSBldmVudCAoZm9yCisgICAgICAgIENvbW1hbmQgKyAuKS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW06CisgICAgICAgICgtW1dLRm9ybVNlbGVj
dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOiBNb2RpZmllZCB0byBjYWxsIGJhc2UgY2xhc3MgaW5p
dGlhbGl6ZXIuCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgc2VsZWN0Um93OmluQ29t
cG9uZW50OmV4dGVuZGluZ1NlbGVjdGlvbjpdKTogV3JpdGUgaW4gdGVybXMgb2Ygc2VsZi5jb250
cm9sLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIHNlbGVjdEZvcm1Qb3BvdmVyVGl0
bGVdKTogRGl0dG8uCisgICAgICAgICgtW1dLRm9ybVNlbGVjdENvbnRyb2wgYXNzaXN0YW50Vmll
d10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGJlZ2luRWRpdGlu
Z10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Zvcm1TZWxlY3RDb250cm9sIGVuZEVkaXRpbmdd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBv
cG92ZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBjb250cm9sRW5kRWRpdGluZ10p
OiBEaXNtaXNzIHRoZSBwb3BvdmVyLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgZmlsZXMgV0tGb3JtUGVyaXBoZXJhbEJhc2Uue2gsIG1tfS4KKwogMjAx
OS0wMy0yOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDM1MTE2NGZhY2FlMjQx
OGY3YmUxZWMwM2I2NTdkYzQ5MWM5NzA4ZDkuLmFlMTBkNzljZDgxOTEzNDdmYTA4ODQ3NmY1MWZm
NWM2NjJmZjA3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM2Niw2ICszNjYsNyBAQCBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQogVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtQ29sb3JQaWNrZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9s
Lm1tCitVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1tCiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
U2VsZWN0Q29udHJvbC5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIu
bW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAppbmRleCBmOGRmMTNjZjQyMmNmNTE5NzVmM2MzNjM4YTNlN2I0YWM5ZGZh
ODc0Li5mYzliZjZjNWIzOTZkMTI1MzczNzVhMGFlNTM3YzM0ZGMzODA1MDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCkBAIC0zMTIsNyArMzEyLDYgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAog
ICAgIEJPT0wgX2JlY29taW5nRmlyc3RSZXNwb25kZXI7CiAgICAgQk9PTCBfcmVzaWduaW5nRmly
c3RSZXNwb25kZXI7Ci0gICAgQk9PTCBfZGlzbWlzc2luZ0FjY2Vzc29yeTsKICAgICBCT09MIF9u
ZWVkc0RlZmVycmVkRW5kU2Nyb2xsaW5nU2VsZWN0aW9uVXBkYXRlOwogICAgIEJPT0wgX2lzQ2hh
bmdpbmdGb2N1czsKICAgICBCT09MIF9pc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCA4YmE2NTdhNWQwMTU2ZmU1MWY1MTYxODZjMjExZWE1NjRjNzMzM2UxLi4yOWIx
ODcwMzYyOTk5YTFjNjY5NTY4MDE4Y2VlY2I1Yzk1NzE5MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTExNjksMjQgKzExNjksMzQgQEAgLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgogICAgIHJl
dHVybiBbX3dlYlZpZXcgcmVzaWduRmlyc3RSZXNwb25kZXJdOwogfQogCi0tIChCT09MKXJlc2ln
bkZpcnN0UmVzcG9uZGVyRm9yV2ViVmlldwotewotICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91
bGQgY2FsbCByZXNpZ25GaXJzdFJlc3BvbmRlciBvbiB0aGUgc3VwZXJjbGFzcwotICAgIC8vIGFu
ZCBkbyBub3RoaW5nIGlmIHRoZSByZXR1cm4gdmFsdWUgaXMgTk8uCi0KLSAgICBTZXRGb3JTY29w
ZTxCT09MPiByZXNpZ25pbmdGaXJzdFJlc3BvbmRlclNjb3BlIHsgX3Jlc2lnbmluZ0ZpcnN0UmVz
cG9uZGVyLCBZRVMgfTsKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEVuZEVkaXRpbmdSZWFz
b24pIHsKKyAgICBFbmRFZGl0aW5nUmVhc29uQWNjZXNzb3J5RG9uZSwKKyAgICBFbmRFZGl0aW5n
UmVhc29uUmVzaWduaW5nRmlyc3RSZXNwb25kZXIsCit9OwogCistICh2b2lkKWVuZEVkaXRpbmdB
bmRVcGRhdGVGb2N1c0FwcGVhcmFuY2VXaXRoUmVhc29uOihFbmRFZGl0aW5nUmVhc29uKXJlYXNv
bgorewogICAgIGlmICghX3dlYlZpZXcuX3JldGFpbmluZ0FjdGl2ZUZvY3VzZWRTdGF0ZSkgewog
ICAgICAgICAvLyBXZSBuZWVkIHRvIGNvbXBsZXRlIHRoZSBlZGl0aW5nIG9wZXJhdGlvbiBiZWZv
cmUgd2UgYmx1ciB0aGUgZWxlbWVudC4KICAgICAgICAgW3NlbGYgX2VuZEVkaXRpbmddOwotICAg
ICAgICBpZiAoX2Rpc21pc3NpbmdBY2Nlc3NvcnkgfHwgX2tleWJvYXJkRGlkUmVxdWVzdERpc21p
c3NhbCkKKyAgICAgICAgaWYgKChyZWFzb24gPT0gRW5kRWRpdGluZ1JlYXNvbkFjY2Vzc29yeURv
bmUgJiYgIWN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKSB8fCBfa2V5Ym9hcmREaWRS
ZXF1ZXN0RGlzbWlzc2FsKQogICAgICAgICAgICAgX3BhZ2UtPmJsdXJGb2N1c2VkRWxlbWVudCgp
OwogICAgIH0KIAogICAgIFtzZWxmIF9jYW5jZWxJbnRlcmFjdGlvbl07CiAgICAgW190ZXh0U2Vs
ZWN0aW9uQXNzaXN0YW50IGRlYWN0aXZhdGVTZWxlY3Rpb25dOwotICAgIAorCiAgICAgW3NlbGYg
X3Jlc2V0SW5wdXRWaWV3RGVmZXJyYWxdOworfQorCistIChCT09MKXJlc2lnbkZpcnN0UmVzcG9u
ZGVyRm9yV2ViVmlldworeworICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgY2FsbCByZXNp
Z25GaXJzdFJlc3BvbmRlciBvbiB0aGUgc3VwZXJjbGFzcworICAgIC8vIGFuZCBkbyBub3RoaW5n
IGlmIHRoZSByZXR1cm4gdmFsdWUgaXMgTk8uCisKKyAgICBTZXRGb3JTY29wZTxCT09MPiByZXNp
Z25pbmdGaXJzdFJlc3BvbmRlclNjb3BlIHsgX3Jlc2lnbmluZ0ZpcnN0UmVzcG9uZGVyLCBZRVMg
fTsKKworICAgIFtzZWxmIGVuZEVkaXRpbmdBbmRVcGRhdGVGb2N1c0FwcGVhcmFuY2VXaXRoUmVh
c29uOkVuZEVkaXRpbmdSZWFzb25SZXNpZ25pbmdGaXJzdFJlc3BvbmRlcl07CiAKICAgICAvLyBJ
ZiB0aGUgdXNlciBleHBsaWNpdGx5IGRpc21pc3NlZCB0aGUga2V5Ym9hcmQgdGhlbiB3ZSB3aWxs
IGxvc2UgZmlyc3QgcmVzcG9uZGVyCiAgICAgLy8gc3RhdHVzIG9ubHkgdG8gZ2FpbiBpdCBiYWNr
IGFnYWluLiBKdXN0IGRvbid0IHJlc2lnbiBpbiB0aGF0IGNhc2UuCkBAIC0zNzUxLDggKzM3NjEs
OCBAQCAtICh2b2lkKWFjY2Vzc29yeUNsZWFyCiAKIC0gKHZvaWQpYWNjZXNzb3J5RG9uZQogewot
ICAgIFNldEZvclNjb3BlPEJPT0w+IGRpc21pc3NpbmdBY2Nlc3NvcnlTY29wZSB7IF9kaXNtaXNz
aW5nQWNjZXNzb3J5LCBZRVMgfTsKLSAgICBbc2VsZiByZXNpZ25GaXJzdFJlc3BvbmRlcl07Cisg
ICAgW3NlbGYgZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3VzQXBwZWFyYW5jZVdpdGhSZWFzb246RW5k
RWRpdGluZ1JlYXNvbkFjY2Vzc29yeURvbmVdOworICAgIF9wYWdlLT5zZXRJc1Nob3dpbmdJbnB1
dFZpZXdGb3JGb2N1c2VkRWxlbWVudChmYWxzZSk7CiB9CiAKIC0gKHZvaWQpYWNjZXNzb3J5VGFi
OihCT09MKWlzTmV4dApAQCAtNDM1NSwyMSArNDM2NSwyOCBAQCAtIChCT09MKXJlcXVpcmVzS2V5
RXZlbnRzCiAgICAgcmV0dXJuIFlFUzsKIH0KIAotI2lmICFVU0UoVUlLSVRfS0VZQk9BUkRfQURE
SVRJT05TKQogLSAodm9pZClfaGFuZGxlS2V5VUlFdmVudDooOjpVSUV2ZW50ICopZXZlbnQKIHsK
ICAgICBib29sIGlzSGFyZHdhcmVLZXlib2FyZEV2ZW50ID0gISFldmVudC5faGlkRXZlbnQ7Ci0K
ICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gaGFuZGxlIGtleSBldmVudCBmcm9tIHRoZSBoYXJkd2Fy
ZSBrZXlib2FyZCB3aGVuIHdlIGFyZQogICAgIC8vIGZpcnN0IHJlc3BvbmRlciBhbmQgd2UgYXJl
IG5vdCBpbnRlcmFjdGluZyB3aXRoIGVkaXRhYmxlIGNvbnRlbnQuCi0gICAgaWYgKFtzZWxmIGlz
Rmlyc3RSZXNwb25kZXJdICYmIGlzSGFyZHdhcmVLZXlib2FyZEV2ZW50ICYmICFfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkgeworICAgIGlmIChbc2VsZiBpc0ZpcnN0UmVz
cG9uZGVyXSAmJiBpc0hhcmR3YXJlS2V5Ym9hcmRFdmVudCAmJiAoX2lucHV0UGVyaXBoZXJhbCB8
fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpKSB7CisgICAgICAgIGlm
IChbX2lucHV0UGVyaXBoZXJhbCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGhhbmRsZUtl
eUV2ZW50OildKSB7CisgICAgICAgICAgICBpZiAoW19pbnB1dFBlcmlwaGVyYWwgaGFuZGxlS2V5
RXZlbnQ6ZXZlbnRdKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2lmIFVT
RShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCisgICAgICAgIFtzdXBlciBfaGFuZGxlS2V5VUlF
dmVudDpldmVudF07CisjZWxzZQogICAgICAgICBbc2VsZiBoYW5kbGVLZXlFdmVudDpldmVudF07
CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFtzdXBlciBfaGFuZGxlS2V5
VUlFdmVudDpldmVudF07CiB9CiAKKyNpZiAhVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykK
IC0gKHZvaWQpaGFuZGxlS2V5RXZlbnQ6KDo6VUlFdmVudCAqKWV2ZW50CiB7CiAgICAgLy8gV2Vi
Q29yZSBoYXMgYWxyZWFkeSBzZWVuIHRoZSBldmVudCwgbm8gbmVlZCBmb3IgY3VzdG9tIHByb2Nl
c3NpbmcuCkBAIC00OTYyLDggKzQ5NzksMTYgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihj
b25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKIAog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgY2hlY2sgd2hlbiB3ZSBtYW5hZ2Ug
dG8gc2VuZCBFbGVtZW50RGlkRm9jdXMgZnJvbSB0aGUgV2ViUHJvY2VzcwogICAgIC8vIG9ubHkg
d2hlbiBpdCBpcyB0cnVseSB0aW1lIHRvIHNob3cgdGhlIGtleWJvYXJkLgotICAgIGlmIChfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBpbmZvcm1hdGlvbi5lbGVtZW50
VHlwZSAmJiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9PSBpbmZvcm1h
dGlvbi5lbGVtZW50UmVjdCkKKyAgICBpZiAoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxl
bWVudFR5cGUgPT0gaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgJiYgX2ZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uZWxlbWVudFJlY3QgPT0gaW5mb3JtYXRpb24uZWxlbWVudFJlY3QpIHsKKyAgICAg
ICAgaWYgKF9pbnB1dFBlcmlwaGVyYWwpIHsKKyAgICAgICAgICAgIGlmICghc2VsZi5pc0ZpcnN0
UmVzcG9uZGVyKQorICAgICAgICAgICAgICAgIFtzZWxmIGJlY29tZUZpcnN0UmVzcG9uZGVyXTsK
KyAgICAgICAgICAgIFtzZWxmIF96b29tVG9SZXZlYWxGb2N1c2VkRWxlbWVudF07CisgICAgICAg
ICAgICBbc2VsZiBfdXBkYXRlQWNjZXNzb3J5XTsKKyAgICAgICAgICAgIFtfaW5wdXRQZXJpcGhl
cmFsIGJlZ2luRWRpdGluZ107CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIFtfd2ViVmlldyBfcmVzZXRGb2N1c1ByZXNlcnZhdGlvbkNvdW50XTsKIApAQCAtNDk4Miw3
ICs1MDA3LDggQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICBpZiAoZGVsZWdhdGVJbXBs
ZW1lbnRzV2lsbFN0YXJ0SW5wdXRTZXNzaW9uKQogICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2Vi
Vmlldzpfd2ViVmlldyB3aWxsU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0
KCldOwogCi0gICAgQk9PTCBlZGl0YWJsZUNoYW5nZWQgPSBbc2VsZiBzZXRJc0VkaXRhYmxlOllF
U107CisgICAgQk9PTCBpc1NlbGVjdGFibGUgPSBtYXlDb250YWluU2VsZWN0YWJsZVRleHQoaW5m
b3JtYXRpb24uZWxlbWVudFR5cGUpOworICAgIEJPT0wgZWRpdGFibGVDaGFuZ2VkID0gW3NlbGYg
c2V0SXNFZGl0YWJsZTppc1NlbGVjdGFibGVdOwogICAgIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uID0gaW5mb3JtYXRpb247CiAgICAgX3RyYWl0cyA9IG5pbDsKIApAQCAtNDk5OSw3ICs1MDI1
LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICBbc2VsZiByZWxvYWRJbnB1dFZpZXdz
XTsKICNlbmRpZgogCi0gICAgaWYgKG1heUNvbnRhaW5TZWxlY3RhYmxlVGV4dChfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkpCisgICAgaWYgKGlzU2VsZWN0YWJsZSkKICAg
ICAgICAgW3NlbGYgX3Nob3dLZXlib2FyZF07CiAKICAgICAvLyBUaGUgY3VzdG9tIGZpeGVkIHBv
c2l0aW9uIHJlY3QgYmVoYXZpb3IgaXMgYWZmZWN0ZWQgYnkgLWlzRm9jdXNpbmdFbGVtZW50LCBz
byBpZiB0aGF0IGNoYW5nZXMgd2UgbmVlZCB0byByZWNvbXB1dGUgcmVjdHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLmgK
aW5kZXggNDNkNmRjYmQ1NTg5OTYzODM5NTRiN2E1Nzk2MmRlZDU3N2I1ZWY4Yi4uYzNkNTUxYjMx
Mjc2ZTJkODUyNmQzY2RiOTUwOWM1Zjk3MGE5NTY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wuaApAQCAtMjUsMTEg
KzI1LDExIEBACiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAotI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgorI2ltcG9ydCAiV0tGb3Jt
UGVyaXBoZXJhbEJhc2UuaCIKIAogQGNsYXNzIFdLQ29udGVudFZpZXc7CiAKLUBpbnRlcmZhY2Ug
V0tGb3JtQ29sb3JDb250cm9sIDogTlNPYmplY3Q8V0tGb3JtUGVyaXBoZXJhbD4KK0BpbnRlcmZh
Y2UgV0tGb3JtQ29sb3JDb250cm9sIDogV0tGb3JtUGVyaXBoZXJhbEJhc2UKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwogQGVuZAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9s
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJv
bC5tbQppbmRleCBmNTUzOWYzNGQ4NmEwNGMxZThiMGI2ZmYyNGZlZjhhNmQwZjdlOGM1Li41N2Nl
YTVmYTNmMjFkY2JjZmZlMTVhZDgwZGRkYjQ3ZmNhM2IxMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KQEAg
LTg2LDQyICs4NiwyMyBAQCAtICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRpbmcKIAogLSAodm9pZClj
b250cm9sRW5kRWRpdGluZwogeworICAgIFtzZWxmIGRpc21pc3NQb3BvdmVyQW5pbWF0ZWQ6Tk9d
OwogfQogCiBAZW5kCiAKICNwcmFnbWEgbWFyayAtIFdLRm9ybUNvbG9yQ29udHJvbAogCi1AaW1w
bGVtZW50YXRpb24gV0tGb3JtQ29sb3JDb250cm9sIHsKLSAgICBSZXRhaW5QdHI8aWQ8V0tGb3Jt
Q29udHJvbD4+IF9jb250cm9sOwotfQorQGltcGxlbWVudGF0aW9uIFdLRm9ybUNvbG9yQ29udHJv
bAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldwog
ewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwot
CisgICAgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gY29udHJvbDsKICAgICBp
ZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCi0gICAgICAgIF9jb250cm9sID0g
YWRvcHROUyhbW1dLQ29sb3JQb3BvdmVyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOworICAg
ICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLQ29sb3JQb3BvdmVyIGFsbG9jXSBpbml0V2l0aFZp
ZXc6dmlld10pOwogICAgIGVsc2UKLSAgICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tDb2xv
clBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXddKTsKLQotICAgIHJldHVybiBzZWxmOwot
fQotCi0tIChVSVZpZXcgKilhc3Npc3RhbnRWaWV3Ci17Ci0gICAgcmV0dXJuIFtfY29udHJvbCBj
b250cm9sVmlld107Ci19Ci0KLS0gKHZvaWQpYmVnaW5FZGl0aW5nCi17Ci0gICAgW19jb250cm9s
IGNvbnRyb2xCZWdpbkVkaXRpbmddOwotfQotCi0tICh2b2lkKWVuZEVkaXRpbmcKLXsKLSAgICBb
X2NvbnRyb2wgY29udHJvbEVuZEVkaXRpbmddOworICAgICAgICBjb250cm9sID0gYWRvcHROUyhb
W1dLQ29sb3JQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisgICAgcmV0dXJuIFtz
dXBlciBpbml0V2l0aFZpZXc6dmlldyBjb250cm9sOldURk1vdmUoY29udHJvbCldOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
SW5wdXRDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
SW5wdXRDb250cm9sLmgKaW5kZXggMTYyYzE2YjQ4OWEwZTMxZWQ1ZmNmNTE4MDNjMDg2ZDY1ZmY4
ZTY3Mi4uZTA3YmI0OTFlOGM2YTM4ODcwNmYxZjY5ZDYyNzQyYjdhNThmYWYxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRy
b2wuaApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0j
aW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgiCisjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFz
ZS5oIgogCiBAY2xhc3MgV0tDb250ZW50VmlldzsKIAotQGludGVyZmFjZSBXS0Zvcm1JbnB1dENv
bnRyb2wgOiBOU09iamVjdDxXS0Zvcm1QZXJpcGhlcmFsPgorQGludGVyZmFjZSBXS0Zvcm1JbnB1
dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFsQmFzZQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tCmluZGV4IGNm
ZWQyZDUwYTZjOGJhMDNkNGQyMDE5ZTExZTZhOGNkMDk4MGE0NjEuLmY1Nzg2NmExMTJjYmQ1ZTkw
N2I0NzRjMzFkYWVhNDg4NDNhMWRhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQpAQCAtMjM5LDYxICsyMzks
MzYgQEAgLSAodm9pZCljb250cm9sRW5kRWRpdGluZwogQGVuZAogCiAvLyBXS0Zvcm1JbnB1dENv
bnRyb2wKLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dENvbnRyb2wgewotICAgIFJldGFpblB0
cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+IF9jb250cm9sOwotfQorQGltcGxlbWVudGF0aW9u
IFdLRm9ybUlucHV0Q29udHJvbAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0Nv
bnRlbnRWaWV3ICopdmlldwogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAg
ICAgICByZXR1cm4gbmlsOwotCiAgICAgVUlEYXRlUGlja2VyTW9kZSBtb2RlOwogCiAgICAgc3dp
dGNoICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBj
YXNlIElucHV0VHlwZTo6RGF0ZToKICAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRl
OwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgog
ICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZURhdGVBbmRUaW1lOwogICAgICAgICBicmVh
azsKLQogICAgIGNhc2UgSW5wdXRUeXBlOjpUaW1lOgogICAgICAgICBtb2RlID0gVUlEYXRlUGlj
a2VyTW9kZVRpbWU7CiAgICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRo
OgogICAgICAgICBtb2RlID0gKFVJRGF0ZVBpY2tlck1vZGUpVUlEYXRlUGlja2VyTW9kZVllYXJB
bmRNb250aDsKICAgICAgICAgYnJlYWs7Ci0KICAgICBkZWZhdWx0OgogICAgICAgICBbc2VsZiBy
ZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKKyAgICBSZXRhaW5QdHI8TlNP
YmplY3QgPFdLRm9ybUNvbnRyb2w+PiBjb250cm9sOwogICAgIGlmIChjdXJyZW50VXNlckludGVy
ZmFjZUlkaW9tSXNQYWQoKSkKLSAgICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tEYXRlVGlt
ZVBvcG92ZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRhdGVQaWNrZXJNb2RlOm1vZGVdKTsK
KyAgICAgICAgY29udHJvbCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUG9wb3ZlciBhbGxvY10gaW5p
dFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6bW9kZV0pOwogICAgIGVsc2UKLSAgICAgICAg
X2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tEYXRlVGltZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3
OnZpZXcgZGF0ZVBpY2tlck1vZGU6bW9kZV0pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci0KLX0KLQot
LSAodm9pZCliZWdpbkVkaXRpbmcKLXsKLSAgICBbX2NvbnRyb2wgY29udHJvbEJlZ2luRWRpdGlu
Z107Ci19Ci0KLS0gKHZvaWQpZW5kRWRpdGluZwotewotICAgIFtfY29udHJvbCBjb250cm9sRW5k
RWRpdGluZ107Ci19Ci0KLS0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKLXsKLSAgICByZXR1cm4g
W19jb250cm9sIGNvbnRyb2xWaWV3XTsKKyAgICAgICAgY29udHJvbCA9IGFkb3B0TlMoW1tXS0Rh
dGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTptb2Rl
XSk7CisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmlldyBjb250cm9sOldURk1vdmUo
Y29udHJvbCldOwogfQogCiBAZW5kCkBAIC0zMDIsMTIgKzI3NywxMCBAQCBAaW1wbGVtZW50YXRp
b24gV0tGb3JtSW5wdXRDb250cm9sIChXS1Rlc3RpbmcpCiAKIC0gKE5TU3RyaW5nICopZGF0ZVRp
bWVQaWNrZXJDYWxlbmRhclR5cGUKIHsKLSAgICBpZiAoW19jb250cm9sIGlzS2luZE9mQ2xhc3M6
V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNr
ZXIgKilfY29udHJvbC5nZXQoKSBjYWxlbmRhclR5cGVdOwotCi0gICAgaWYgKFtfY29udHJvbCBp
c0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQb3BvdmVyLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIFso
V0tEYXRlVGltZVBvcG92ZXIgKilfY29udHJvbC5nZXQoKSBjYWxlbmRhclR5cGVdOwotCisgICAg
aWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkK
KyAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBjYWxlbmRh
clR5cGVdOworICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBv
cG92ZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYu
Y29udHJvbCBjYWxlbmRhclR5cGVdOwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTM4OCw2ICsz
NjEsOCBAQCAtICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRpbmcKIAogLSAodm9pZCljb250cm9sRW5k
RWRpdGluZwogeworICAgIFtzZWxmIGRpc21pc3NQb3BvdmVyQW5pbWF0ZWQ6Tk9dOworICAgIFtf
dmlld0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250cm9sIGNvbnRyb2xFbmRFZGl0aW5nXTsKIH0K
IAogLSAoVUlWaWV3ICopY29udHJvbFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbC5oCmluZGV4IDY3ZTg4NzNkYWNjYmRjYmIw
Y2NlN2IxM2JmYmE0ODRiYWI3ODBkNjMuLmIxODEyYmU0NDJmMjJjOWY1NzEzMDkxYmU0ZjZiNzMy
OWNhM2VhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1QZXJpcGhlcmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVBlcmlwaGVyYWwuaApAQCAtMjMsMTYgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorQGNsYXNzIFVJRXZlbnQ7CiBAY2xhc3MgVUlWaWV3
OwogCiBAcHJvdG9jb2wgV0tGb3JtUGVyaXBoZXJhbAogLSAodm9pZCliZWdpbkVkaXRpbmc7CiAt
ICh2b2lkKWVuZEVkaXRpbmc7CiAtIChVSVZpZXcgKilhc3Npc3RhbnRWaWV3OworQG9wdGlvbmFs
CistIChCT09MKWhhbmRsZUtleUV2ZW50OihVSUV2ZW50ICopZXZlbnQ7CiBAZW5kCiAKIEBwcm90
b2NvbCBXS0Zvcm1Db250cm9sCiAtIChVSVZpZXcgKiljb250cm9sVmlldzsKIC0gKHZvaWQpY29u
dHJvbEJlZ2luRWRpdGluZzsKIC0gKHZvaWQpY29udHJvbEVuZEVkaXRpbmc7CitAb3B0aW9uYWwK
Ky0gKEJPT0wpY29udHJvbEhhbmRsZUtleUV2ZW50OihVSUV2ZW50ICopZXZlbnQ7CiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVyaXBo
ZXJhbEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJp
cGhlcmFsQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NDA3NzYzMTcwNDg1ZDFlYWVjOGU4YmJhN2Q0NGMx
ZGViNjA3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtUGVyaXBoZXJhbEJhc2UuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwu
aCIKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisKK0BjbGFzcyBXS0NvbnRlbnRWaWV3OworCitA
aW50ZXJmYWNlIFdLRm9ybVBlcmlwaGVyYWxCYXNlIDogTlNPYmplY3QgPFdLRm9ybVBlcmlwaGVy
YWw+CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgY29udHJvbDooUmV0YWluUHRy
PE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4mJiljb250cm9sIE5TX0RFU0lHTkFURURfSU5JVElB
TElaRVI7CisKKy0gKHZvaWQpYmVnaW5FZGl0aW5nOworLSAodm9pZCllbmRFZGl0aW5nOworLSAo
VUlWaWV3ICopYXNzaXN0YW50VmlldzsKKy0gKEJPT0wpaGFuZGxlS2V5RXZlbnQ6KFVJRXZlbnQg
KilldmVudDsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0NvbnRlbnRWaWV3
ICp2aWV3OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU09iamVjdCA8V0tGb3Jt
Q29udHJvbD4gKmNvbnRyb2w7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRl
cj1pc0VkaXRpbmcpIEJPT0wgZWRpdGluZzsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFzZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsQmFz
ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZjI4OTY5MzhlMDI1NDZkOTE5YjJjYjdjZWFiY2JjOTIzNDhjZmVl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybVBlcmlwaGVyYWxCYXNlLm1tCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWxCYXNlLmgiCisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K0BpbXBsZW1lbnRhdGlvbiBXS0Zvcm1QZXJpcGhlcmFsQmFzZSB7CisgICAgUmV0YWluUHRyPE5T
T2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gX2NvbnRyb2w7Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGNvbnRyb2w6KFJldGFpblB0cjxOU09i
amVjdCA8V0tGb3JtQ29udHJvbD4+JiYpY29udHJvbAoreworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3ZpZXcgPSB2aWV3OworICAg
IF9jb250cm9sID0gV1RGTW92ZShjb250cm9sKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZCliZWdpbkVkaXRpbmcKK3sKKyAgICBfZWRpdGluZyA9IFlFUzsKKyAgICBbX2NvbnRyb2wg
Y29udHJvbEJlZ2luRWRpdGluZ107Cit9CisKKy0gKHZvaWQpZW5kRWRpdGluZworeworICAgIF9l
ZGl0aW5nID0gTk87CisgICAgW19jb250cm9sIGNvbnRyb2xFbmRFZGl0aW5nXTsKK30KKworLSAo
VUlWaWV3ICopYXNzaXN0YW50VmlldworeworICAgIHJldHVybiBbX2NvbnRyb2wgY29udHJvbFZp
ZXddOworfQorCistIChOU09iamVjdCA8V0tGb3JtQ29udHJvbD4gKiljb250cm9sCit7CisgICAg
cmV0dXJuIF9jb250cm9sLmdldCgpOworfQorCistIChCT09MKWhhbmRsZUtleUV2ZW50OihVSUV2
ZW50ICopZXZlbnQKK3sKKyAgICBBU1NFUlQoZXZlbnQuX2hpZEV2ZW50KTsKKyAgICBpZiAoW19j
b250cm9sIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udHJvbEhhbmRsZUtleUV2ZW50
OildKSB7CisgICAgICAgIGlmIChbX2NvbnRyb2wgY29udHJvbEhhbmRsZUtleUV2ZW50OmV2ZW50
XSkKKyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAgfQorICAgIGlmICghZXZlbnQuX2lzS2V5
RG93bikKKyAgICAgICAgcmV0dXJuIE5POworICAgIFVJUGh5c2ljYWxLZXlib2FyZEV2ZW50ICpr
ZXlFdmVudCA9IChVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCAqKWV2ZW50OworICAgIGlmIChrZXlF
dmVudC5faW5wdXRGbGFncyAmIGtVSUtleWJvYXJkSW5wdXRNb2RpZmllckZsYWdzQ2hhbmdlZCkK
KyAgICAgICAgcmV0dXJuIE5POworICAgIGlmIChfZWRpdGluZyAmJiAoa2V5RXZlbnQuX2tleUNv
ZGUgPT0ga0hJRFVzYWdlX0tleWJvYXJkRXNjYXBlIHx8IFtrZXlFdmVudC5fdW5tb2RpZmllZElu
cHV0IGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0RXNjYXBlXSkpIHsKKyAgICAgICAgW192aWV3
IGFjY2Vzc29yeURvbmVdOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAgICByZXR1cm4g
Tk87Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJv
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRy
b2wuaAppbmRleCA3YmU2NTFhODA0YTg5NmU5MGQ2MWNkNTg4ZTYyOTQ4MDVmODI2MjQyLi5mNjk1
YmUzMWI5OGViZGRjZmI2YzgwMWI5YjViY2VmZDIxZGU4NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLmgKQEAg
LTI3LDcgKzI3LDcgQEAKIAogI2ltcG9ydCAiRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIgog
I2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKKyNpbXBv
cnQgIldLRm9ybVBlcmlwaGVyYWxCYXNlLmgiCiAjaW1wb3J0ICJXS0Zvcm1Qb3BvdmVyLmgiCiAj
aW1wb3J0IDxVSUtpdC9VSVBpY2tlclZpZXcuaD4KIApAQCAtMzUsNyArMzUsNyBAQCBDR0Zsb2F0
IGFkanVzdGVkRm9udFNpemUoQ0dGbG9hdCB0ZXh0V2lkdGgsIFVJRm9udCAqLCBDR0Zsb2F0IGlu
aXRpYWxGb250U2l6ZSwgYwogCiBAY2xhc3MgV0tDb250ZW50VmlldzsKIAotQGludGVyZmFjZSBX
S0Zvcm1TZWxlY3RDb250cm9sIDogTlNPYmplY3Q8V0tGb3JtUGVyaXBoZXJhbD4KK0BpbnRlcmZh
Y2UgV0tGb3JtU2VsZWN0Q29udHJvbCA6IFdLRm9ybVBlcmlwaGVyYWxCYXNlCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsKIEBlbmQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRy
b2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29u
dHJvbC5tbQppbmRleCAzYjk0OGQxYWQ0ZGI1MWZmMTJiMmViMDc5NDMyOTljMWEzMTEyZjhiLi4z
ZDVjOTJhMjFlZjI2N2IyNzJiZTAyZTI0MWQ2MTE0MzM3MDM2YWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5t
bQpAQCAtNjUsOSArNjUsNiBAQCBAaW1wbGVtZW50YXRpb24gV0tGb3JtU2VsZWN0Q29udHJvbCB7
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3CiB7
Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
ICAgICBib29sIGhhc0dyb3VwcyA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnNlbGVjdE9wdGlvbnMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgaWYgKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zZWxlY3RPcHRp
b25zW2ldLmlzR3JvdXApIHsKQEAgLTc2LDI5ICs3MywxNSBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldwogICAgICAgICB9CiAgICAgfQogCisgICAg
UmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gY29udHJvbDsKICAgICBpZiAoY3Vy
cmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCi0gICAgICAgIF9jb250cm9sID0gYWRvcHRO
UyhbW1dLU2VsZWN0UG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgaGFzR3JvdXBzOmhh
c0dyb3Vwc10pOworICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLU2VsZWN0UG9wb3ZlciBh
bGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgaGFzR3JvdXBzOmhhc0dyb3Vwc10pOwogICAgIGVsc2Ug
aWYgKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc011bHRpU2VsZWN0IHx8IGhhc0dy
b3VwcykKLSAgICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tNdWx0aXBsZVNlbGVjdFBpY2tl
ciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXddKTsKKyAgICAgICAgY29udHJvbCA9IGFkb3B0TlMo
W1tXS011bHRpcGxlU2VsZWN0UGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwogICAg
IGVsc2UKLSAgICAgICAgX2NvbnRyb2wgPSBhZG9wdE5TKFtbV0tTZWxlY3RTaW5nbGVQaWNrZXIg
YWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7Ci0gICAgICAgIAotICAgIHJldHVybiBzZWxmOwot
fQorICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLU2VsZWN0U2luZ2xlUGlja2VyIGFsbG9j
XSBpbml0V2l0aFZpZXc6dmlld10pOwogCi0tIChVSVZpZXcgKilhc3Npc3RhbnRWaWV3Ci17Ci0g
ICAgcmV0dXJuIFtfY29udHJvbCBjb250cm9sVmlld107Ci19Ci0KLS0gKHZvaWQpYmVnaW5FZGl0
aW5nCi17Ci0gICAgW19jb250cm9sIGNvbnRyb2xCZWdpbkVkaXRpbmddOwotfQotCi0tICh2b2lk
KWVuZEVkaXRpbmcKLXsKLSAgICBbX2NvbnRyb2wgY29udHJvbEVuZEVkaXRpbmddOworICAgIHJl
dHVybiBbc3VwZXIgaW5pdFdpdGhWaWV3OnZpZXcgY29udHJvbDpXVEZNb3ZlKGNvbnRyb2wpXTsK
IH0KIAogQGVuZApAQCAtMTA3LDE2ICs5MCwxNSBAQCBAaW1wbGVtZW50YXRpb24gV0tGb3JtU2Vs
ZWN0Q29udHJvbChXS1Rlc3RpbmcpCiAKIC0gKHZvaWQpc2VsZWN0Um93OihOU0ludGVnZXIpcm93
SW5kZXggaW5Db21wb25lbnQ6KE5TSW50ZWdlciljb21wb25lbnRJbmRleCBleHRlbmRpbmdTZWxl
Y3Rpb246KEJPT0wpZXh0ZW5kaW5nU2VsZWN0aW9uCiB7Ci0gICAgaWYgKFtfY29udHJvbCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNlbGVjdFJvdzppbkNvbXBvbmVudDpleHRlbmRpbmdT
ZWxlY3Rpb246KV0pCi0gICAgICAgIFtpZDxXS1NlbGVjdFRlc3Rpbmc+KF9jb250cm9sLmdldCgp
KSBzZWxlY3RSb3c6cm93SW5kZXggaW5Db21wb25lbnQ6Y29tcG9uZW50SW5kZXggZXh0ZW5kaW5n
U2VsZWN0aW9uOmV4dGVuZGluZ1NlbGVjdGlvbl07CisgICAgaWYgKFtzZWxmLmNvbnRyb2wgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZWxlY3RSb3c6aW5Db21wb25lbnQ6ZXh0ZW5kaW5n
U2VsZWN0aW9uOildKQorICAgICAgICBbaWQ8V0tTZWxlY3RUZXN0aW5nPihzZWxmLmNvbnRyb2wp
IHNlbGVjdFJvdzpyb3dJbmRleCBpbkNvbXBvbmVudDpjb21wb25lbnRJbmRleCBleHRlbmRpbmdT
ZWxlY3Rpb246ZXh0ZW5kaW5nU2VsZWN0aW9uXTsKIH0KIAogLSAoTlNTdHJpbmcgKilzZWxlY3RG
b3JtUG9wb3ZlclRpdGxlCiB7Ci0gICAgaWYgKCFbX2NvbnRyb2wgaXNLaW5kT2ZDbGFzczpbV0tT
ZWxlY3RQb3BvdmVyIGNsYXNzXV0pCisgICAgaWYgKCFbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xh
c3M6W1dLU2VsZWN0UG9wb3ZlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
cmV0dXJuIFsoV0tTZWxlY3RQb3BvdmVyICopX2NvbnRyb2wuZ2V0KCkgdGFibGVWaWV3Q29udHJv
bGxlcl0udGl0bGU7CisgICAgcmV0dXJuIFsoV0tTZWxlY3RQb3BvdmVyICopc2VsZi5jb250cm9s
IHRhYmxlVmlld0NvbnRyb2xsZXJdLnRpdGxlOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCmlu
ZGV4IGUyZDJiYmQyZjQ1ZGE3N2M5NmZjZjg1YjQ5ZjIxMjJhMjNhNGVjN2IuLjU1NDk2OTAyZTcz
MzEyZDk1NzU2N2RiMGFiZjc1ZDg0NmVhYjE5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFVJS2l0L1VJUGlj
a2VyVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC00NDYsNiArNDQ3LDcgQEAgLSAodm9pZCljb250
cm9sQmVnaW5FZGl0aW5nCiAKIC0gKHZvaWQpY29udHJvbEVuZEVkaXRpbmcKIHsKKyAgICBbc2Vs
ZiBkaXNtaXNzUG9wb3ZlckFuaW1hdGVkOk5PXTsKIH0KIAogLSAodm9pZClfdXNlckFjdGlvbkRp
c21pc3NlZFBvcG92ZXI6KGlkKXNlbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTg0NzU4ODJhNGM5MGFhODRmNmU1ZWJjMGYwNjc1
OGJkNTBjNTE3MC4uY2IxOWQyYTkwNTg0ZmZkODE1OTU5N2I4Nzc3N2I0ZjNlM2U1YTIzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NTg5LDYgKzE1ODksNyBAQAogCQlDRTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFB
NDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0
RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAq
LzsgfTsKIAkJQ0U1QjRDODgyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFu
Z2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdl
YkV2ZW50LmggKi87IH07CisJCUNFNzBFRTVEMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zvcm1QZXJp
cGhlcmFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U3MEVFNUMyMjQ0MkJEMDAwRTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxCYXNlLmggKi87
IH07CiAJCUNFQzhGOUNCMUZERjU4NzAwMDI2MzVFNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0VDOEY5Q0ExRkRGNTg3MDAwMjYzNUU3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VE
QTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovOyB9
OwogCQlDRUU0QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAyRjQ5
QiAvKiBVSUtpdFNQSS5oICovOyB9OwpAQCAtNDQ2Niw2ICs0NDY3LDggQEAKIAkJQ0UxQTBCRDEx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0U1QjRDODYyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oOyBw
YXRoID0gaW9zL1dLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1QjRDODcyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGlj
RmxhZ3NDaGFuZ2VkV2ViRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1N5bnRoZXRp
Y0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lm1tOyBwYXRoID0gaW9zL1dLU3ludGhldGljRmxhZ3NDaGFu
Z2VkV2ViRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNzBFRTVBMjI0
NDJCQjMwMEUwQUYwRiAvKiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdLRm9ybVBlcmlwaGVyYWxCYXNlLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBl
cmlwaGVyYWxCYXNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTcwRUU1QzIy
NDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tGb3JtUGVyaXBoZXJhbEJhc2UuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFs
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUM4RjlDQTFGREY1ODcwMDAy
NjM1RTcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZVByaXZhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEy
REYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODcxNiw2ICs4NzE5LDggQEAKIAkJ
CQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLmggKi8sCiAJ
CQkJQzU0MjU2QjAxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5tbSAqLywK
IAkJCQlDNTQyNTZCMTE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUGVyaXBoZXJhbC5oICovLAor
CQkJCUNFNzBFRTVDMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oICov
LAorCQkJCUNFNzBFRTVBMjI0NDJCQjMwMEUwQUYwRiAvKiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5t
bSAqLywKIAkJCQlDNTQyNTZCMjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5oICov
LAogCQkJCUM1NDI1NkIzMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLm1tICovLAog
CQkJCUM1NDI1NkI0MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1TZWxlY3RDb250cm9sLmggKi8s
CkBAIC05ODM4LDYgKzk4NDMsNyBAQAogCQkJCUU1NDhFQkQxMjEwMTVGMEUwMEJFM0MzMiAvKiBX
S0Zvcm1Db2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU0MjU2QjUxOEJFQzE4QzAw
REU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU0MjU2
QjcxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVBlcmlwaGVyYWwuaCBpbiBIZWFkZXJzICovLAor
CQkJCUNFNzBFRTVEMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzU0MjU2QjgxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVBvcG92
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NDI1NkJBMThCRUMxOEMwMERFNDE3OSAvKiBXS0Zv
cm1TZWxlY3RDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA4Q0Y1MjFENjNDMTNBMDBC
NDhERjEgLyogV0tGb3JtU2VsZWN0UGlja2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYWI0
ZGMxODdkNTZiZmU2MGE3NmRjNjkwYWY0NmQwZjNkNmRhNzg0Li5lMTE5MWUzNjJjNzJhMmFhMTk0
YTA3Njk3MmIwZmVhNDViODNhZDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDMtMjgg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNob3Vs
ZCBiZSBhYmxlIHRvIGRpc21pc3MgcGlja2VyIG9yIHBvcG92ZXIgdXNpbmcgdGhlIGtleWJvYXJk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYyNzIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTQzMTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IHRvIGVuc3VyZSB0aGF0IHByZXNz
aW5nIEVzY2FwZSBvciBDb21tYW5kICsgLiBkaXNtaXNzZXMgYSBwaWNrZXIuCisKKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2lvcy9kaXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvaW9zL2Rpc21pc3MtcGlja2VyLXVzaW5n
LWtleWJvYXJkLmh0bWw6IEFkZGVkLgorCiAyMDE5LTAzLTI4ICBKdXN0aW4gRmFuICA8anVzdGlu
X2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBHUFVdIFByb3RvdHlwZSBjb21wdXRlIHBp
cGVsaW5lIHdpdGggTVNMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9k
aXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2lvcy9kaXNtaXNzLXBpY2tlci11c2luZy1rZXlib2FyZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmZjZGUyN2IyYzVjZmFmNWE0MTY5MGYwZGQ3MjhlMGZiNDVmNzQ2NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2Rpc21pc3MtcGlja2Vy
LXVzaW5nLWtleWJvYXJkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ5IEBACitUZXN0cyB0aGF0
IHByZXNzaW5nIHRoZSBFc2NhcGUga2V5IG9yIENvbW1hbmQgKyAuIGRpc21pc3NlcyBhIHBpY2tl
ciB3aXRob3V0IGNhdXNpbmcgYSB2YWx1ZSBjaGFuZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCisKK0Rpc21pc3MgYnkgcHJlc3NpbmcgZXNjYXBlOgorCitGb3IgY29sb3I6CitQ
QVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIiMwMDAwMDAiCisKK0ZvciBkYXRlOgorUEFTUyBl
bGVtZW50VG9UZXN0LnZhbHVlIGlzICIyMDE5LTAzLTI2IgorCitGb3IgZGF0ZXRpbWUtbG9jYWw6
CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTktMDMtMjZUMTQ6Mjg6MDUuNDU1Igor
CitGb3IgbW9udGg6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIjIwMTktMDMiCisKK0Zv
ciBzZWxlY3Q6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMgIkZpcnN0IgorCitGb3IgdGlt
ZToKK1BBU1MgZWxlbWVudFRvVGVzdC52YWx1ZSBpcyAiMTQ6MjgiCisKK0Rpc21pc3MgYnkgcHJl
c3NpbmcgQ29tbWFuZCArIC46CisKK0ZvciBjb2xvcjoKK1BBU1MgZWxlbWVudFRvVGVzdC52YWx1
ZSBpcyAiIzAwMDAwMCIKKworRm9yIGRhdGU6CitQQVNTIGVsZW1lbnRUb1Rlc3QudmFsdWUgaXMg
IjIwMTktMDMtMjYiCisKK0ZvciBkYXRldGltZS1sb2NhbDoKK1BBU1MgZWxlbWVudFRvVGVzdC52
YWx1ZSBpcyAiMjAxOS0wMy0yNlQxNDoyODowNS40NTUiCisKK0ZvciBtb250aDoKK1BBU1MgZWxl
bWVudFRvVGVzdC52YWx1ZSBpcyAiMjAxOS0wMyIKKworRm9yIHNlbGVjdDoKK1BBU1MgZWxlbWVu
dFRvVGVzdC52YWx1ZSBpcyAiRmlyc3QiCisKK0ZvciB0aW1lOgorUEFTUyBlbGVtZW50VG9UZXN0
LnZhbHVlIGlzICIxNDoyOCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9kaXNt
aXNzLXBpY2tlci11c2luZy1rZXlib2FyZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
b3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2ZkMWQ1
OGNmZGU5MmY4MDU3MjBkZTQyNWU3ZWY4MDBiNWExYjFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvZGlzbWlzcy1waWNrZXItdXNpbmcta2V5Ym9hcmQuaHRt
bApAQCAtMCwwICsxLDg2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8IS0tIFBsYWNlIHRoZSB0ZXN0IGNvbnRhaW5lciBhYm92ZSB0aGUgY29uc29s
ZSBvdXRwdXQgdG8gYXZvaWQgdGhlIG5lZWQgdG8gY29tcGVuc2F0ZSBmb3IgcGFnZSBzY3JvbGwu
IC0tPgorPGRpdiBpZD0idGVzdC1jb250YWluZXIiPgorICAgIDxwPjxpbnB1dCB0eXBlPSJjb2xv
ciIgY2xhc3M9InRlc3QiIGRhdGEtdGVzdC1uYW1lPSJjb2xvciI+PC9wPgorICAgIDxwPjxpbnB1
dCB0eXBlPSJkYXRlIiBjbGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9ImRhdGUiIHZhbHVlPSIy
MDE5LTAzLTI2Ij48L3A+CisgICAgPHA+PGlucHV0IHR5cGU9ImRhdGV0aW1lLWxvY2FsIiBjbGFz
cz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9ImRhdGV0aW1lLWxvY2FsIiB2YWx1ZT0iMjAxOS0wMy0y
NlQxNDoyODowNS40NTUiPjwvcD4KKyAgICA8cD48aW5wdXQgdHlwZT0ibW9udGgiIGNsYXNzPSJ0
ZXN0IiBkYXRhLXRlc3QtbmFtZT0ibW9udGgiIHZhbHVlPSIyMDE5LTAzIj48L3A+CisgICAgPHA+
PHNlbGVjdCBjbGFzcz0idGVzdCIgZGF0YS10ZXN0LW5hbWU9InNlbGVjdCI+CisgICAgICAgIDxv
cHRpb24+Rmlyc3Q8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj5TZWNvbmQ8L29wdGlvbj4KKyAg
ICA8L3NlbGVjdD48L3A+CisgICAgPHA+PGlucHV0IHR5cGU9InRpbWUiIGNsYXNzPSJ0ZXN0IiBk
YXRhLXRlc3QtbmFtZT0idGltZSIgdmFsdWU9IjE0OjI4Ij48L3A+Cis8L2Rpdj4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitsZXQgZWxlbWVudFRvVGVzdDsKKworY29uc3Qg
bW9kaWZpZXJEaXNwbGF5TmFtZU1hcCA9IHsKKyAgICAiYWx0S2V5IjogIk9wdGlvbiIsCisgICAg
ImN0cmxLZXkiOiAiQ29udHJvbCIsCisgICAgIm1ldGFLZXkiOiAiQ29tbWFuZCIsCisgICAgInNo
aWZ0S2V5IjogIlNoaWZ0IiwKKyAgICAiY2Fwc0xvY2tLZXkiOiAiQ2FwcyBMb2NrIiwKK30KKwor
Y2xhc3MgS2V5Q29tbWFuZCB7CisgICAgY29uc3RydWN0b3Ioa2V5LCBtb2RpZmllcnMgPSBbXSkK
KyAgICB7CisgICAgICAgIHRoaXMua2V5ID0ga2V5OworICAgICAgICB0aGlzLm1vZGlmaWVycyA9
IG1vZGlmaWVyczsKKyAgICB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICBsZXQg
cmVhZGFibGVDb21tYW5kID0gdGhpcy5tb2RpZmllcnMubWFwKChtb2RpZmllcikgPT4gbW9kaWZp
ZXJEaXNwbGF5TmFtZU1hcFttb2RpZmllcl0pOworICAgICAgICByZWFkYWJsZUNvbW1hbmQucHVz
aCh0aGlzLmtleSk7CisgICAgICAgIHJldHVybiByZWFkYWJsZUNvbW1hbmQuam9pbigiICsgIik7
CisgICAgfQorfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBsZXQgdGVzdENvbnRhaW5lciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpOworICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7CisgICAgZmluaXNoSlNUZXN0KCkKK30K
KworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICB0ZXN0RmFpbGVkKCJNdXN0IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVy
LiIpOworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQg
ZWxlbWVudHNUb1Rlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0ZXN0Iik7
CisgICAgZm9yIChsZXQga2V5Q29tbWFuZCBvZiBbbmV3IEtleUNvbW1hbmQoImVzY2FwZSIpLCBu
ZXcgS2V5Q29tbWFuZCgiLiIsIFsibWV0YUtleSJdKV0pIHsKKyAgICAgICAgZGVidWcoYDxicj5E
aXNtaXNzIGJ5IHByZXNzaW5nICR7a2V5Q29tbWFuZH06YCk7CisgICAgICAgIGZvciAoZWxlbWVu
dFRvVGVzdCBvZiBlbGVtZW50c1RvVGVzdCkgeworICAgICAgICAgICAgZGVidWcoYDxicj5Gb3Ig
JHtlbGVtZW50VG9UZXN0LmRhdGFzZXQudGVzdE5hbWV9OmApOworICAgICAgICAgICAgbGV0IGV4
cGVjdGVkVmFsdWUgPSBlbGVtZW50VG9UZXN0LnZhbHVlOworICAgICAgICAgICAgYXdhaXQgVUlI
ZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihlbGVtZW50VG9UZXN0
KTsKKyAgICAgICAgICAgIFVJSGVscGVyLmtleURvd24oa2V5Q29tbWFuZC5rZXksIGtleUNvbW1h
bmQubW9kaWZpZXJzKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JLZXlib2Fy
ZFRvSGlkZSgpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbGVtZW50VG9U
ZXN0LnZhbHVlIiwgZXhwZWN0ZWRWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxlbWVu
dFRvVGVzdCA9IG51bGw7CisgICAgZG9uZSgpOworfQorCitkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBwcmVzc2luZyB0aGUgRXNjYXBlIGtleSBvciBDb21tYW5kICsgLiBkaXNtaXNzZXMgYSBwaWNr
ZXIgd2l0aG91dCBjYXVzaW5nIGEgdmFsdWUgY2hhbmdlLiIpOworCitydW5UZXN0KCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>