<?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>86474</bug_id>
          
          <creation_ts>2012-05-15 06:12:15 -0700</creation_ts>
          <short_desc>[Qt] Add infra for testing double-tap to zoom functionality etc</short_desc>
          <delta_ts>2020-08-24 21:49:50 -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 Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Rohde Christiansen">kenneth</reporter>
          <assigned_to name="Kenneth Rohde Christiansen">kenneth</assigned_to>
          <cc>hausmann</cc>
    
    <cc>menard</cc>
    
    <cc>samwcurry</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>623964</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-15 06:12:15 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623974</commentid>
    <comment_count>1</comment_count>
      <attachid>141945</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-15 06:20:28 -0700</bug_when>
    <thetext>Created attachment 141945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623975</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 06:22:57 -0700</bug_when>
    <thetext>Attachment 141945 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebK...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/qt/declarative/experimental/plugin.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623979</commentid>
    <comment_count>3</comment_count>
      <attachid>141945</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-15 06:27:08 -0700</bug_when>
    <thetext>Comment on attachment 141945
Patch

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

r=me, I like the step of moving the viewport info stuff into something that can be re-used for unit testing. But it doesn&apos;t belong into experimental (because we know this experiment is never going to succeed to become public API) and it should only be instantiated when run as part of the unit tests.

I suggest private C++ API to expose (and thus lazily create) the testing object and then make it available in TestWebView.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:114
&gt; +    emit d-&gt;viewportItem-&gt;experimental()-&gt;test()-&gt;contentsSizeChanged();

So even &quot;production&quot; code instantiates the test object and emits signals. Wouldn&apos;t it be better to avoid that?

&gt; Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp:53
&gt; +    // if (delay &gt; 0)
&gt; +    //     QTest::qWait(delay);

Forgot to remove this? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623981</commentid>
    <comment_count>4</comment_count>
      <attachid>141949</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-15 06:28:29 -0700</bug_when>
    <thetext>Created attachment 141949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623984</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-15 06:31:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 141945 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141945&amp;action=review
&gt; 
&gt; r=me, I like the step of moving the viewport info stuff into something that can be re-used for unit testing. But it doesn&apos;t belong into experimental (because we know this experiment is never going to succeed to become public API) and it should only be instantiated when run as part of the unit tests.
&gt; 
&gt; I suggest private C++ API to expose (and thus lazily create) the testing object and then make it available in TestWebView.

Let&apos;s do this in a follow up.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:114
&gt; &gt; +    emit d-&gt;viewportItem-&gt;experimental()-&gt;test()-&gt;contentsSizeChanged();
&gt; 
&gt; So even &quot;production&quot; code instantiates the test object and emits signals. Wouldn&apos;t it be better to avoid that?

Any suggestion on how to do this?

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp:53
&gt; &gt; +    // if (delay &gt; 0)
&gt; &gt; +    //     QTest::qWait(delay);
&gt; 
&gt; Forgot to remove this? :)

I wanted to link to QTest later, but I dont want to do that unless it becomes a separate module. I can remove it, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623987</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-15 06:33:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 141945 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141945&amp;action=review
&gt; &gt; 
&gt; &gt; r=me, I like the step of moving the viewport info stuff into something that can be re-used for unit testing. But it doesn&apos;t belong into experimental (because we know this experiment is never going to succeed to become public API) and it should only be instantiated when run as part of the unit tests.
&gt; &gt; 
&gt; &gt; I suggest private C++ API to expose (and thus lazily create) the testing object and then make it available in TestWebView.
&gt; 
&gt; Let&apos;s do this in a follow up.

Okay.
 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:114
&gt; &gt; &gt; +    emit d-&gt;viewportItem-&gt;experimental()-&gt;test()-&gt;contentsSizeChanged();
&gt; &gt; 
&gt; &gt; So even &quot;production&quot; code instantiates the test object and emits signals. Wouldn&apos;t it be better to avoid that?
&gt; 
&gt; Any suggestion on how to do this?

For example by lazy allocation of the testing harness in QQuickWebView, i.e. not allocated by default unless somebody calls QQuickWebView::testingHarness().
 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp:53
&gt; &gt; &gt; +    // if (delay &gt; 0)
&gt; &gt; &gt; +    //     QTest::qWait(delay);
&gt; &gt; 
&gt; &gt; Forgot to remove this? :)
&gt; 
&gt; I wanted to link to QTest later, but I dont want to do that unless it becomes a separate module. I can remove it, what do you think?

Yeah. What would you use QTest for beyond qWait?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623992</commentid>
    <comment_count>7</comment_count>
      <attachid>141949</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-15 06:34:15 -0700</bug_when>
    <thetext>Comment on attachment 141949
Patch

Now without style errors :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624023</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-15 06:54:32 -0700</bug_when>
    <thetext>Fixed patch landed in 117061</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141945</attachid>
            <date>2012-05-15 06:20:28 -0700</date>
            <delta_ts>2012-05-15 06:28:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86474-20120515152025.patch</filename>
            <type>text/plain</type>
            <size>37106</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDY4ODFhZjRhMTdl
YWY2ZDhkMDhkYTkzYmRjZmFlMDYwNDM2ZjUzZjYuLmNmNmU2MTlmMTBiMWFjNjQyOWRhOTgzNmY5
MWQ3MTllNjRkMTU3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUt
MTUgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFtRdF0gQWRkIGluZnJhIGZvciB0ZXN0aW5nIGRvdWJsZS10YXAgdG8gem9vbSBmdW5j
dGlvbmFsaXR5IGV0YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgV2ViVmlld3BvcnRJbmZvIGNsYXNzIHdhcyByZW5hbWVkIHRvIFFXZWJLaXRUZXN0
IGluIHByZXBhcmF0aW9uCisgICAgICAgIG9mIGJlY29taW5nIGEgc2VwYXJhdGUgbW9kdWxlLiBB
ZGFwdCB0aGUgdXNlIEFQSS4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9w
bHVnaW4uY3BwOgorCiAyMDEyLTA1LTEwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgTW92ZSByZXN1bWVBbmltYXRpb25zIHRvIHVzZSBJbnRlcm5h
bHMgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmJmZjFmYjZmM2JkMjI3MmQxNGFlMDIzMjliNTA5
Zjc4YmRjOWMzZS4uYjhlYjQzOTE0NTI0ZjQ3NmJiYWJiMDYxYzgzNmRkNTg3NzAwNWQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA1LTE1ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEFkZCBpbmZyYSBm
b3IgdGVzdGluZyBkb3VibGUtdGFwIHRvIHpvb20gZnVuY3Rpb25hbGl0eSBldGMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHRoZSBXZWJWaWV3
cG9ydEluZm8gY2xhc3MgdG8gUVdlYktpdFRlc3QgaW4gcHJlcGFyYXRpb24KKyAgICAgICAgb2Yg
YmVjb21pbmcgYSBzZXBhcmF0ZSBtb2R1bGUuIEFkYXB0IHRoZSB1c2UgQVBJLgorCisgICAgICAg
IE1vZGlmeSB0aGUgQVBJIHRvIHdvcmsgYmV0dGVyIGZvciB0ZXN0aW5nIGFuZCBtYWtlIHN1cmUg
dGhlCisgICAgICAgIHNpZ25hbHMgYXJlIGVtaXR0ZWQgdGhlIHJpZ2h0IHBsYWNlcy4gQWxzbyBh
ZGQgYSBtZXRob2QgZm9yCisgICAgICAgIHNpbXVsYXRpbmcgYSBkb3VibGUgdGFwLgorCisgICAg
ICAgIFdvcmsgYXJvdW5kIGlzc3VlIHdpdGggYW5pbWF0aW9ucyBub3QgcnVubmluZyB3aGVuIHRo
ZSBpdGVtCisgICAgICAgIGRvZXNuJ3QgaGF2ZSBmb2N1cy4KKworICAgICAgICBDcmVhdGUgYW4g
ZXhhbXBsZSB0ZXN0IGZvciBkb3VibGUtdGFwIHRvIHpvb20sIHNob3dpbmcgaG93IHdlIGNhbgor
ICAgICAgICBub3cgY3JlYXRlIFVJIHRlc3RzIHVzaW5nIFFNTC4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKFFRdWlja1dlYlBhZ2U6OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChRUXVpY2tX
ZWJQYWdlOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6
OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Rmxp
Y2thYmxlUHJpdmF0ZTo6X3FfY29udGVudFZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OlFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwp
OgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dGVzdCk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmtpdHRlc3QuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcC4KKyAgICAg
ICAgKFFXZWJLaXRUZXN0OjpRV2ViS2l0VGVzdCk6CisgICAgICAgIChRV2ViS2l0VGVzdDo6flFX
ZWJLaXRUZXN0KToKKyAgICAgICAgKFFXZWJLaXRUZXN0Ojp0b3VjaERvdWJsZVRhcCk6CisgICAg
ICAgIChRV2ViS2l0VGVzdDo6Y29udGVudHNTaXplKToKKyAgICAgICAgKFFXZWJLaXRUZXN0Ojpj
b250ZW50c1NjYWxlKToKKyAgICAgICAgKFFXZWJLaXRUZXN0OjpkZXZpY2VQaXhlbFJhdGlvKToK
KyAgICAgICAgKFFXZWJLaXRUZXN0Ojppbml0aWFsU2NhbGUpOgorICAgICAgICAoUVdlYktpdFRl
c3Q6Om1pbmltdW1TY2FsZSk6CisgICAgICAgIChRV2ViS2l0VGVzdDo6bWF4aW11bVNjYWxlKToK
KyAgICAgICAgKFFXZWJLaXRUZXN0Ojppc1NjYWxhYmxlKToKKyAgICAgICAgKFFXZWJLaXRUZXN0
OjpsYXlvdXRTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0ZXN0X3Au
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdw
b3J0aW5mb19wLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9X
ZWJWaWV3L3RzdF9kb3VibGVUYXBUb1pvb20ucW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlSXRlbVJlY3RWaXNpYmxlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6CisgICAg
ICAgIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpOgorCiAyMDEyLTA1LTE1ICBNaWNoYWVs
IEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dL
Ml0gaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2h0dHBzLWluLXBhZ2UtY2FjaGUuaHRtbCBmYWlscyB3
aXRoIHRpbWVvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhw
ZXJpbWVudGFsL3BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVy
aW1lbnRhbC9wbHVnaW4uY3BwCmluZGV4IGQzM2E0Nzk1NTEwNmZlMWY5NTJkZDcxZDFlMmI2NjMx
NTRkZWE4ZjcuLmJiZjU5Yzg5N2ZhNzI5ZDc4Y2Y0ZGU2ZmU5NzJlMzRhYmE0ZjYyOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2lu
LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgInByaXZhdGUvcXdlYm5hdmlnYXRpb25o
aXN0b3J5X3AuaCIKICNpbmNsdWRlICJwcml2YXRlL3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmgi
CiAjaW5jbHVkZSAicHJpdmF0ZS9xd2VicHJlZmVyZW5jZXNfcC5oIgotI2luY2x1ZGUgInByaXZh
dGUvcXdlYnZpZXdwb3J0aW5mb19wLmgiCisjaW5jbHVkZSAicHJpdmF0ZS9xd2Via2l0dGVzdF9w
LmgiCiAKICNpbmNsdWRlIDxRdFFtbC9xcW1sLmg+CiAjaW5jbHVkZSA8UXRRbWwvcXFtbGV4dGVu
c2lvbnBsdWdpbi5oPgpAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHFtbFJlZ2lz
dGVyRXh0ZW5kZWRUeXBlPFFRdWlja1dlYlZpZXcsIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWxF
eHRlbnNpb24+KHVyaSwgMSwgMCwgIldlYlZpZXciKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNy
ZWF0YWJsZVR5cGU8UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbD4odXJpLCAxLCAwLCAiV2ViVmll
d0V4cGVyaW1lbnRhbCIsCiAgICAgICAgICAgICBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBz
ZXBhcmF0ZSBpbnN0YW5jZSBvZiBXZWJWaWV3RXhwZXJpbWVudGFsIikpOwotICAgICAgICBxbWxS
ZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViVmlld3BvcnRJbmZvPih1cmksIDEsIDAsICJRV2Vi
Vmlld3BvcnRJbmZvIiwKLSAgICAgICAgICAgIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNl
cGFyYXRlIGluc3RhbmNlIG9mIFFXZWJWaWV3cG9ydEluZm8iKSk7CisgICAgICAgIHFtbFJlZ2lz
dGVyVW5jcmVhdGFibGVUeXBlPFFXZWJLaXRUZXN0Pih1cmksIDEsIDAsICJRV2ViS2l0VGVzdCIs
CisgICAgICAgICAgICBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5j
ZSBvZiBRV2ViS2l0VGVzdCIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJUeXBlPFFRdWlja1VybFNj
aGVtZURlbGVnYXRlPih1cmksIDEsIDAsICJVcmxTY2hlbWVEZWxlZ2F0ZSIpOwogICAgICAgICBx
bWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRUXVpY2tOZXR3b3JrUmVxdWVzdD4odXJpLCAxLCAw
LCAiTmV0d29ya1JlcXVlc3QiLAogICAgICAgICAgICAgUU9iamVjdDo6dHIoIk5ldHdvcmtSZXF1
ZXN0IHNob3VsZCBub3QgYmUgY3JlYXRlZCBmcm9tIFFNTCIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGQ5
NmE4NTJkMzc1ZDE5NTdjOWZjNTlkNDdlMjM0Y2E0NzQyYjBhNTUuLmE0YjlhNGY2ZWYyMTVkNGE2
YmI3Nzg5NzYzMjhmYTBjMTU2MzczYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMTk1LDcgKzE5NSw3IEBA
IEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrbmV0d29ya3JlcGx5X3Au
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2tuZXR3b3JrcmVxdWVzdF9wLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrdXJsc2NoZW1lZGVsZWdhdGVfcC5oIFwKLSAgICBVSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm9fcC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0
L3F3ZWJraXR0ZXN0X3AuaCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vV2ViQ3JlZGVudGlhbC5oIFwKQEAgLTUzNSw3ICs1MzUsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja25ldHdvcmtyZXF1ZXN0LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t1cmxzY2hlbWVkZWxlZ2F0ZS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcCBcCi0gICAgVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
dmlld3BvcnRpbmZvLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2Via2l0dGVzdC5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5jcHAgXAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVk
ZW50aWFsLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJwYWdlLmNwcAppbmRleCAyMDNjNzJiN2UwZjNkN2IwOWQ3NDRkMTEzNjExZGVhMGFkNjg1
NzdmLi5lMDJjY2M5YjJmNGRhNTA5MmQ5MmEyNzAzYjNjMWQ4OGYxZGQ1YTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJxcXVpY2t3
ZWJwYWdlX3BfcC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3
ZWJraXR0ZXN0X3AuaCIKICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja0NhbnZhcz4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKQEAgLTExMCw2ICsxMTEsNyBAQCB2b2lkIFFRdWlja1dlYlBhZ2U6
OnNldENvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZUYmIHNpemUpCiAKICAgICBkLT5jb250ZW50c1Np
emUgPSBzaXplOwogICAgIGQtPnVwZGF0ZVNpemUoKTsKKyAgICBlbWl0IGQtPnZpZXdwb3J0SXRl
bS0+ZXhwZXJpbWVudGFsKCktPnRlc3QoKS0+Y29udGVudHNTaXplQ2hhbmdlZCgpOwogfQogCiBj
b25zdCBRU2l6ZUYmIFFRdWlja1dlYlBhZ2U6OmNvbnRlbnRzU2l6ZSgpIGNvbnN0CkBAIC0xMjIs
NiArMTI0LDcgQEAgdm9pZCBRUXVpY2tXZWJQYWdlOjpzZXRDb250ZW50c1NjYWxlKHFyZWFsIHNj
YWxlKQogICAgIEFTU0VSVChzY2FsZSA+IDApOwogICAgIGQtPmNvbnRlbnRzU2NhbGUgPSBzY2Fs
ZTsKICAgICBkLT51cGRhdGVTaXplKCk7CisgICAgZW1pdCBkLT52aWV3cG9ydEl0ZW0tPmV4cGVy
aW1lbnRhbCgpLT50ZXN0KCktPmNvbnRlbnRzU2NhbGVDb21taXR0ZWQoKTsKIH0KIAogcXJlYWwg
UVF1aWNrV2ViUGFnZTo6Y29udGVudHNTY2FsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA3MTYzYTdlNmE3OTJh
ZGM5Mjc0YWY1ZDhjNDY5NzVmY2JkYzgzMmU3Li40YzE3NTJjMDYyYTZiOGM1YjlmNzMyNTYzYzUw
YTE3MDJiZTVjOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNlbmRpZgogI2luY2x1ZGUgIldl
YlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCi0KICNpbmNsdWRlICJx
cXVpY2tuZXR3b3JrcmVwbHlfcC5oIgogI2luY2x1ZGUgInFxdWlja25ldHdvcmtyZXF1ZXN0X3Au
aCIKICNpbmNsdWRlICJxcXVpY2t3ZWJwYWdlX3BfcC5oIgpAQCAtNTAsOCArNDksNyBAQAogI2lu
Y2x1ZGUgInF3ZWJuYXZpZ2F0aW9uaGlzdG9yeV9wX3AuaCIKICNpbmNsdWRlICJxd2VicHJlZmVy
ZW5jZXNfcC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlc19wX3AuaCIKLSNpbmNsdWRlICJx
d2Vidmlld3BvcnRpbmZvX3AuaCIKLQorI2luY2x1ZGUgInF3ZWJraXR0ZXN0X3AuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KQEAgLTg2Niw3ICs4NjQsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2
YXRlOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6VgogICAgICAg
ICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0Q1NTU2NhbGUoYXR0ci5pbml0aWFsU2NhbGUpOwogCiAg
ICAgdGhpcy0+YXR0cmlidXRlcyA9IGF0dHI7Ci0gICAgcS0+ZXhwZXJpbWVudGFsKCktPnZpZXdw
b3J0SW5mbygpLT5kaWRVcGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CisgICAgZW1pdCBxLT5l
eHBlcmltZW50YWwoKS0+dGVzdCgpLT52aWV3cG9ydENoYW5nZWQoKTsKIAogICAgIC8vIElmIHRo
ZSB3ZWIgYXBwIHN1Y2Nlc3NpdmVseSBjaGFuZ2VzIHRoZSB2aWV3cG9ydCBvbiBwdXJwb3NlCiAg
ICAgLy8gaXQgd2FudHMgdG8gYmUgaW4gY29udHJvbCBhbmQgd2Ugc2hvdWxkIGRpc2FibGUgYW5p
bWF0aW9ucy4KQEAgLTg5NSw4ICs4OTMsNiBAQCB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQ
cml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxl
UHJpdmF0ZTo6X3FfY29udGVudFZpZXdwb3J0Q2hhbmdlZChjb25zdCBRUG9pbnRGJiB0cmFqZWN0
b3J5VmVjdG9yKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICAvLyBUaGlzIGlzIG9u
bHkgZm9yIG91ciBRTUwgVmlld3BvcnRJbmZvIGRlYnVnZ2luZyBBUEkuCi0gICAgcS0+ZXhwZXJp
bWVudGFsKCktPnZpZXdwb3J0SW5mbygpLT5kaWRVcGRhdGVDdXJyZW50U2NhbGUoKTsKIAogICAg
IERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJl
YSgpOwogICAgIGlmICghZHJhd2luZ0FyZWEpCkBAIC05MDUsNiArOTAxLDggQEAgdm9pZCBRUXVp
Y2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3FfY29udGVudFZpZXdwb3J0Q2hhbmdlZChjb25z
dCBRUG9pbnRGJiB0cmEKICAgICBjb25zdCBRUmVjdCB2aXNpYmxlUmVjdCh2aXNpYmxlQ29udGVu
dHNSZWN0KCkpOwogICAgIGZsb2F0IHNjYWxlID0gcGFnZVZpZXctPmNvbnRlbnRzU2NhbGUoKTsK
IAorICAgIGVtaXQgcS0+ZXhwZXJpbWVudGFsKCktPnRlc3QoKS0+Y29udGVudHNTY2FsZUNoYW5n
ZWQoKTsKKwogICAgIFFSZWN0RiBhY2N1cmF0ZVZpc2libGVSZWN0KHEtPmJvdW5kaW5nUmVjdCgp
KTsKICAgICBhY2N1cmF0ZVZpc2libGVSZWN0LnRyYW5zbGF0ZShjb250ZW50UG9zKCkpOwogICAg
IGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVSZWN0LCBzY2FsZSwg
dHJhamVjdG9yeVZlY3RvciwgRmxvYXRQb2ludChhY2N1cmF0ZVZpc2libGVSZWN0LngoKSwgYWNj
dXJhdGVWaXNpYmxlUmVjdC55KCkpKTsKQEAgLTk0MCwxNCArOTM4LDEzIEBAIHZvaWQgUVF1aWNr
V2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6
ZSYgbmV3U2l6ZSkKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CiAgICAgUVNpemUgdmlld3BvcnRT
aXplID0gcS0+Ym91bmRpbmdSZWN0KCkuc2l6ZSgpLnRvU2l6ZSgpOwogCi0gICAgcGFnZVZpZXct
PnNldENvbnRlbnRzU2l6ZShuZXdTaXplKTsKLSAgICBxLT5leHBlcmltZW50YWwoKS0+dmlld3Bv
cnRJbmZvKCktPmRpZFVwZGF0ZUNvbnRlbnRzU2l6ZSgpOworICAgIHBhZ2VWaWV3LT5zZXRDb250
ZW50c1NpemUobmV3U2l6ZSk7IC8vIGVtaXRzIGNvbnRlbnRzU2l6ZUNoYW5nZWQoKQogCiAgICAg
ZmxvYXQgbWluaW11bVNjYWxlID0gV2ViQ29yZTo6Y29tcHV0ZU1pbmltdW1TY2FsZUZhY3RvckZv
ckNvbnRlbnRDb250YWluZWQoYXR0cmlidXRlcywgdmlld3BvcnRTaXplLCBuZXdTaXplKTsKIAog
ICAgIGlmICghcUZ1enp5Q29tcGFyZShtaW5pbXVtU2NhbGUsIGF0dHJpYnV0ZXMubWluaW11bVNj
YWxlKSkgewogICAgICAgICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0Q1NTU2NhbGVCb3VuZHMobWlu
aW11bVNjYWxlLCBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZSk7Ci0gICAgICAgIHEtPmV4cGVyaW1l
bnRhbCgpLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpOwor
ICAgICAgICBlbWl0IHEtPmV4cGVyaW1lbnRhbCgpLT50ZXN0KCktPnZpZXdwb3J0Q2hhbmdlZCgp
OwogCiAgICAgICAgIGlmICghaW50ZXJhY3Rpb25FbmdpbmUtPmhhZFVzZXJJbnRlcmFjdGlvbigp
ICYmICFwYWdlSXNTdXNwZW5kZWQpCiAgICAgICAgICAgICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0
Q1NTU2NhbGUobWluaW11bVNjYWxlKTsKQEAgLTk3NSw3ICs5NzIsNyBAQCBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsOjpRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKFFRdWlja1dlYlZpZXcgKndl
YlZpZXcpCiAgICAgLCBxX3B0cih3ZWJWaWV3KQogICAgICwgZF9wdHIod2ViVmlldy0+ZF9wdHIu
ZGF0YSgpKQogICAgICwgc2NoZW1lUGFyZW50KG5ldyBRT2JqZWN0KHRoaXMpKQotICAgICwgbV92
aWV3cG9ydEluZm8obmV3IFFXZWJWaWV3cG9ydEluZm8od2ViVmlldy0+ZF9wdHIuZGF0YSgpLCB0
aGlzKSkKKyAgICAsIG1fdGVzdChuZXcgUVdlYktpdFRlc3Qod2ViVmlldy0+ZF9wdHIuZGF0YSgp
LCB0aGlzKSkKIHsKIH0KIApAQCAtMTM4Niw5ICsxMzgzLDkgQEAgdm9pZCBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsOjpnb0JhY2tUbyhpbnQgaW5kZXgpCiAgICAgZF9wdHItPm5hdmlnYXRpb25I
aXN0b3J5LT5kLT5nb0JhY2tUbyhpbmRleCk7CiB9CiAKLVFXZWJWaWV3cG9ydEluZm8qIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWw6OnZpZXdwb3J0SW5mbygpCitRV2ViS2l0VGVzdCogUVF1aWNr
V2ViVmlld0V4cGVyaW1lbnRhbDo6dGVzdCgpCiB7Ci0gICAgcmV0dXJuIG1fdmlld3BvcnRJbmZv
OworICAgIHJldHVybiBtX3Rlc3Q7CiB9CiAKIFFRdWlja1dlYlBhZ2UqIFFRdWlja1dlYlZpZXdF
eHBlcmltZW50YWw6OnBhZ2UoKQpAQCAtMTcxMCw2ICsxNzA3LDcgQEAgdm9pZCBRUXVpY2tXZWJW
aWV3Ojptb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCogZXZlbnQpCiB2b2lkIFFRdWlja1dl
YlZpZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCogZXZlbnQpCiB7CiAgICAg
UV9EKFFRdWlja1dlYlZpZXcpOworCiAgICAgLy8gSWYgYSBNb3VzZUJ1dHRvbkRibENsaWNrIHdh
cyByZWNlaXZlZCB0aGVuIHdlIGdvdCBhIE1vdXNlQnV0dG9uUHJlc3MgYmVmb3JlCiAgICAgLy8g
aGFuZGxlTW91c2VQcmVzc0V2ZW50IHdpbGwgdGFrZSBjYXJlIG9mIGRvdWJsZSBjbGlja3MuCiAg
ICAgZC0+cGFnZVZpZXctPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoZXZl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmgKaW5kZXggN2JkNDViNjYxMDliMTljZDUxNTI0NDUyZDFiY2MwZDdjYmZiYTc4Mi4uNzcz
ZjczNWE5Y2M5MjAwMmM2MjZjNjYyNmM0ZGMwMTlhZjllMWRlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiBjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7
CiBjbGFzcyBRV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBRV2ViUGVybWlzc2lvblJlcXVlc3Q7Ci1j
bGFzcyBRV2ViVmlld3BvcnRJbmZvOworY2xhc3MgUVdlYktpdFRlc3Q7CiBjbGFzcyBRUXVpY2tO
ZXR3b3JrUmVwbHk7CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMjY2LDcgKzI2Niw3IEBAIGNsYXNz
IFFXRUJLSVRfRVhQT1JUIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwgOiBwdWJsaWMgUU9iamVj
dCB7CiAgICAgUV9QUk9QRVJUWShRUW1sQ29tcG9uZW50KiBmaWxlUGlja2VyIFJFQUQgZmlsZVBp
Y2tlciBXUklURSBzZXRGaWxlUGlja2VyIE5PVElGWSBmaWxlUGlja2VyQ2hhbmdlZCkKICAgICBR
X1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGRhdGFiYXNlUXVvdGFEaWFsb2cgUkVBRCBkYXRhYmFz
ZVF1b3RhRGlhbG9nIFdSSVRFIHNldERhdGFiYXNlUXVvdGFEaWFsb2cgTk9USUZZIGRhdGFiYXNl
UXVvdGFEaWFsb2dDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2VzKiBwcmVm
ZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQotICAgIFFfUFJPUEVSVFko
UVdlYlZpZXdwb3J0SW5mbyogdmlld3BvcnRJbmZvIFJFQUQgdmlld3BvcnRJbmZvIENPTlNUQU5U
IEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdlYktpdFRlc3QqIHRlc3QgUkVBRCB0ZXN0IENPTlNU
QU5UIEZJTkFMKQogICAgIFFfUFJPUEVSVFkoUVFtbExpc3RQcm9wZXJ0eTxRUXVpY2tVcmxTY2hl
bWVEZWxlZ2F0ZT4gdXJsU2NoZW1lRGVsZWdhdGVzIFJFQUQgc2NoZW1lRGVsZWdhdGVzKQogICAg
IFFfUFJPUEVSVFkoUVN0cmluZyB1c2VyQWdlbnQgUkVBRCB1c2VyQWdlbnQgV1JJVEUgc2V0VXNl
ckFnZW50IE5PVElGWSB1c2VyQWdlbnRDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoZG91YmxlIGRl
dmljZVBpeGVsUmF0aW8gUkVBRCBkZXZpY2VQaXhlbFJhdGlvIFdSSVRFIHNldERldmljZVBpeGVs
UmF0aW8gTk9USUZZIGRldmljZVBpeGVsUmF0aW9DaGFuZ2VkKQpAQCAtMzAzLDcgKzMwMyw3IEBA
IHB1YmxpYzoKICAgICBkb3VibGUgZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0OwogICAgIHZvaWQg
c2V0RGV2aWNlUGl4ZWxSYXRpbyhkb3VibGUpOwogCi0gICAgUVdlYlZpZXdwb3J0SW5mbyogdmll
d3BvcnRJbmZvKCk7CisgICAgUVdlYktpdFRlc3QqIHRlc3QoKTsKIAogICAgIFFXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMoKSBjb25zdDsKICAgICBRV2ViTmF2aWdhdGlvbkhpc3RvcnkqIG5h
dmlnYXRpb25IaXN0b3J5KCkgY29uc3Q7CkBAIC0zNjAsNyArMzYwLDcgQEAgcHJpdmF0ZToKICAg
ICBRUXVpY2tXZWJWaWV3KiBxX3B0cjsKICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogZF9wdHI7
CiAgICAgUU9iamVjdCogc2NoZW1lUGFyZW50OwotICAgIFFXZWJWaWV3cG9ydEluZm8qIG1fdmll
d3BvcnRJbmZvOworICAgIFFXZWJLaXRUZXN0KiBtX3Rlc3Q7CiAKICAgICBmcmllbmQgY2xhc3Mg
V2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IGQzYmVjYTQ0YTZmYjU5YTI3
MzZkZWEwYTZlYmU2N2NhMzVmYTY4OGEuLmViZDA2ZTNlYTQ3Njc0MzYyMWEyNmNhMDQ0NjY2ZDhh
YmY0ODhjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXdfcF9wLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5Owog
fQogCiBjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7Ci1jbGFzcyBRV2ViVmlld3BvcnRJbmZv
OworY2xhc3MgUVdlYktpdFRlc3Q7CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVFtbENv
bXBvbmVudDsKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZhdGUgewog
ICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOwogICAgIGZyaWVuZCBj
bGFzcyBRUXVpY2tXZWJQYWdlOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViUHJlZmVyZW5jZXNQcml2
YXRlOwotICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlld3BvcnRJbmZvOworICAgIGZyaWVuZCBjbGFz
cyBRV2ViS2l0VGVzdDsKIAogcHVibGljOgogICAgIHN0YXRpYyBRUXVpY2tXZWJWaWV3UHJpdmF0
ZSogZ2V0KFFRdWlja1dlYlZpZXcqIHEpIHsgcmV0dXJuIHEtPmRfcHRyLmRhdGEoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Via2l0dGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0ZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MTBkYWE0Yzk1YWRiMWI5NzNhMzMxODc2YzMwOWZjNDhhMjdkNGRiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Via2l0dGVzdC5jcHAK
QEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAicXdlYmtpdHRlc3RfcC5oIgorCisjaW5jbHVkZSAiUXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCisjaW5j
bHVkZSAicXF1aWNrd2Vidmlld19wLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworUVdlYktpdFRlc3Q6OlFXZWJLaXRUZXN0KFFR
dWlja1dlYlZpZXdQcml2YXRlKiB3ZWJWaWV3UHJpdmF0ZSwgUU9iamVjdCogcGFyZW50KQorICAg
IDogUU9iamVjdChwYXJlbnQpCisgICAgLCBtX3dlYlZpZXdQcml2YXRlKHdlYlZpZXdQcml2YXRl
KQoreworfQorCitRV2ViS2l0VGVzdDo6flFXZWJLaXRUZXN0KCkKK3sKK30KKworYm9vbCBRV2Vi
S2l0VGVzdDo6dG91Y2hEb3VibGVUYXAoUU9iamVjdCogaXRlbSwgcXJlYWwgeCwgcXJlYWwgeSwg
aW50IGRlbGF5KQoreworICAgIGlmICghcW9iamVjdF9jYXN0PFFRdWlja1dlYlZpZXcqPihpdGVt
KSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugb25seSBzdXBwb3J0IHRoZSBhY3R1YWwgd2ViIHZp
ZXcgZm9yIG5vdy4KKyAgICAgICAgLy8gUVRlc3Q6OnFXYXJuKCJUb3VjaCBldmVudCBcIkRvdWJs
ZVRhcFwiIG5vdCBhY2NlcHRlZCBieSByZWNlaXZpbmcgaXRlbSIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKGRlbGF5ID09IC0xKQorICAgICAgICBkZWxheSA9IDA7
CisKKyAgICAvLyBpZiAoZGVsYXkgPiAwKQorICAgIC8vICAgICBRVGVzdDo6cVdhaXQoZGVsYXkp
OworCisgICAgUVBvaW50RiBsb2NhbFBvcyh4LCB5KTsKKworICAgIFFUb3VjaEV2ZW50OjpUb3Vj
aFBvaW50IHBvaW50OworICAgIHBvaW50LnNldExhc3RQb3MobG9jYWxQb3MpOworICAgIFFSZWN0
RiB0b3VjaFJlY3QoMCwgMCwgNDAsIDQwKTsKKyAgICB0b3VjaFJlY3QubW92ZUNlbnRlcihsb2Nh
bFBvcyk7CisgICAgcG9pbnQuc2V0UmVjdCh0b3VjaFJlY3QpOworCisgICAgbV93ZWJWaWV3UHJp
dmF0ZS0+cGFnZVZpZXctPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVEb3VibGVUYXBFdmVudChwb2lu
dCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUVNpemUgUVdlYktpdFRlc3Q6OmNvbnRlbnRz
U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFTaXplKG1fd2ViVmlld1ByaXZhdGUtPnBhZ2VW
aWV3LT5jb250ZW50c1NpemUoKS50b1NpemUoKSk7Cit9CisKK1FWYXJpYW50IFFXZWJLaXRUZXN0
Ojpjb250ZW50c1NjYWxlKCkgY29uc3QKK3sKKyAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUoKSkKKyAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jdXJy
ZW50Q1NTU2NhbGUoKTsKKworICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVz
LmluaXRpYWxTY2FsZTsKK30KKworUVZhcmlhbnQgUVdlYktpdFRlc3Q6OmRldmljZVBpeGVsUmF0
aW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLmRl
dmljZVBpeGVsUmF0aW87Cit9CisKK1FWYXJpYW50IFFXZWJLaXRUZXN0Ojppbml0aWFsU2NhbGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLmluaXRp
YWxTY2FsZTsKK30KKworUVZhcmlhbnQgUVdlYktpdFRlc3Q6Om1pbmltdW1TY2FsZSgpIGNvbnN0
Cit7CisgICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25Fbmdp
bmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCisgICAg
ICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+bV9taW5pbXVtU2NhbGU7CisKKyAgICByZXR1
cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5taW5pbXVtU2NhbGU7Cit9CisKK1FWYXJp
YW50IFFXZWJLaXRUZXN0OjptYXhpbXVtU2NhbGUoKSBjb25zdAoreworICAgIGlmIChRdFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0
ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQorICAgICAgICByZXR1cm4gaW50ZXJhY3Rp
b25FbmdpbmUtPm1fbWF4aW11bVNjYWxlOworCisgICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUt
PmF0dHJpYnV0ZXMubWF4aW11bVNjYWxlOworfQorCitRVmFyaWFudCBRV2ViS2l0VGVzdDo6aXNT
Y2FsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmli
dXRlcy51c2VyU2NhbGFibGU7Cit9CisKK1FWYXJpYW50IFFXZWJLaXRUZXN0OjpsYXlvdXRTaXpl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVNpemVGKG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0
ZXMubGF5b3V0U2l6ZS53aWR0aCgpLCBtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLmxheW91
dFNpemUuaGVpZ2h0KCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2Via2l0dGVzdF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJraXR0ZXN0X3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2M3MTgwYzE4MTliNzdlZDIxNWE0NmFhNTVi
ZDA2MjZkMDZmNWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2Via2l0dGVzdF9wLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZm5kZWYgcXdlYmtpdHRlc3RfcF9oCisjZGVmaW5lIHF3ZWJraXR0ZXN0X3BfaAorCisj
aW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Cisj
aW5jbHVkZSA8UXRDb3JlL1FQb2ludGVyPgorI2luY2x1ZGUgPFF0Q29yZS9RU2l6ZT4KKyNpbmNs
dWRlIDxRdENvcmUvUVZhcmlhbnQ+CisjaW5jbHVkZSA8UXRRbWwvUXRRbWw+CisjaW5jbHVkZSA8
UXRRdWljay9xcXVpY2tpdGVtLmg+CisKK2NsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOworCitj
bGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViS2l0VGVzdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBR
X09CSkVDVAorCisgICAgUV9QUk9QRVJUWShRU2l6ZSBjb250ZW50c1NpemUgUkVBRCBjb250ZW50
c1NpemUgTk9USUZZIGNvbnRlbnRzU2l6ZUNoYW5nZWQpCisKKyAgICBRX1BST1BFUlRZKFFWYXJp
YW50IGNvbnRlbnRzU2NhbGUgUkVBRCBjb250ZW50c1NjYWxlIE5PVElGWSBjb250ZW50c1NjYWxl
Q2hhbmdlZCkKKworICAgIFFfUFJPUEVSVFkoUVZhcmlhbnQgZGV2aWNlUGl4ZWxSYXRpbyBSRUFE
IGRldmljZVBpeGVsUmF0aW8gTk9USUZZIHZpZXdwb3J0Q2hhbmdlZCkKKyAgICBRX1BST1BFUlRZ
KFFWYXJpYW50IGluaXRpYWxTY2FsZSBSRUFEIGluaXRpYWxTY2FsZSBOT1RJRlkgdmlld3BvcnRD
aGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoUVZhcmlhbnQgaXNTY2FsYWJsZSBSRUFEIGlzU2NhbGFi
bGUgTk9USUZZIHZpZXdwb3J0Q2hhbmdlZCkKKyAgICBRX1BST1BFUlRZKFFWYXJpYW50IG1heGlt
dW1TY2FsZSBSRUFEIG1heGltdW1TY2FsZSBOT1RJRlkgdmlld3BvcnRDaGFuZ2VkKQorICAgIFFf
UFJPUEVSVFkoUVZhcmlhbnQgbWluaW11bVNjYWxlIFJFQUQgbWluaW11bVNjYWxlIE5PVElGWSB2
aWV3cG9ydENoYW5nZWQpCisgICAgUV9QUk9QRVJUWShRVmFyaWFudCBsYXlvdXRTaXplIFJFQUQg
bGF5b3V0U2l6ZSBOT1RJRlkgdmlld3BvcnRDaGFuZ2VkKQorCitzaWduYWxzOgorICAgIHZvaWQg
Y29udGVudHNTaXplQ2hhbmdlZCgpOworICAgIHZvaWQgY29udGVudHNTY2FsZUNoYW5nZWQoKTsK
KyAgICB2b2lkIGNvbnRlbnRzU2NhbGVDb21taXR0ZWQoKTsKKyAgICB2b2lkIHZpZXdwb3J0Q2hh
bmdlZCgpOworCitwdWJsaWMgc2xvdHM6CisgICAgYm9vbCB0b3VjaERvdWJsZVRhcChRT2JqZWN0
KiBpdGVtLCBxcmVhbCB4LCBxcmVhbCB5LCBpbnQgZGVsYXkgPSAtMSk7CisKK3B1YmxpYzoKKyAg
ICBRV2ViS2l0VGVzdChRUXVpY2tXZWJWaWV3UHJpdmF0ZSogd2Vidmlld1ByaXZhdGUsIFFPYmpl
Y3QqIHBhcmVudCA9IDApOworICAgIHZpcnR1YWwgflFXZWJLaXRUZXN0KCk7CisKKyAgICBRU2l6
ZSBjb250ZW50c1NpemUoKSBjb25zdDsKKyAgICBRVmFyaWFudCBjb250ZW50c1NjYWxlKCkgY29u
c3Q7CisKKyAgICBRVmFyaWFudCBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7CisgICAgUVZhcmlh
bnQgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CisgICAgUVZhcmlhbnQgaXNTY2FsYWJsZSgpIGNvbnN0
OworICAgIFFWYXJpYW50IGxheW91dFNpemUoKSBjb25zdDsKKyAgICBRVmFyaWFudCBtYXhpbXVt
U2NhbGUoKSBjb25zdDsKKyAgICBRVmFyaWFudCBtaW5pbXVtU2NhbGUoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogbV93ZWJWaWV3UHJpdmF0ZTsKK307CisK
KyNlbmRpZiAvLyBxd2Via2l0dGVzdF9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWExNjczMmY1ZDBjYjdjMGYzYmI0YWU5M2I3MWZkODExMzc1NzBhZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgiCi0jaW5jbHVkZSAicXdlYnZpZXdwb3J0
aW5mb19wLmgiCi0KLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKLSNpbmNsdWRlICJxcXVp
Y2t3ZWJ2aWV3X3BfcC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1RV2ViVmlld3Bv
cnRJbmZvOjpRV2ViVmlld3BvcnRJbmZvKFFRdWlja1dlYlZpZXdQcml2YXRlKiB3ZWJWaWV3UHJp
dmF0ZSwgUU9iamVjdCogcGFyZW50KQotICAgIDogUU9iamVjdChwYXJlbnQpCi0gICAgLCBtX3dl
YlZpZXdQcml2YXRlKHdlYlZpZXdQcml2YXRlKQotewotfQotCi1RV2ViVmlld3BvcnRJbmZvOjp+
UVdlYlZpZXdwb3J0SW5mbygpCi17Ci19Ci0KLVFTaXplIFFXZWJWaWV3cG9ydEluZm86OmNvbnRl
bnRzU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFFTaXplKG1fd2ViVmlld1ByaXZhdGUtPnBh
Z2VWaWV3LT5jb250ZW50c1NpemUoKS50b1NpemUoKSk7Ci19Ci0KLVFWYXJpYW50IFFXZWJWaWV3
cG9ydEluZm86OmN1cnJlbnRTY2FsZSgpIGNvbnN0Ci17Ci0gICAgaWYgKFF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3
cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2lu
ZS0+Y3VycmVudENTU1NjYWxlKCk7Ci0KLSAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0
cmlidXRlcy5pbml0aWFsU2NhbGU7Ci19Ci0KLVFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmRl
dmljZVBpeGVsUmF0aW8oKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5h
dHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87Ci19Ci0KLVFWYXJpYW50IFFXZWJWaWV3cG9ydElu
Zm86OmluaXRpYWxTY2FsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUt
PmF0dHJpYnV0ZXMuaW5pdGlhbFNjYWxlOwotfQotCi1RVmFyaWFudCBRV2ViVmlld3BvcnRJbmZv
OjptaW5pbXVtU2NhbGUoKSBjb25zdAotewotICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZSgpKQotICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPm1fbWlu
aW11bVNjYWxlOwotCi0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0ZXMubWlu
aW11bVNjYWxlOwotfQotCi1RVmFyaWFudCBRV2ViVmlld3BvcnRJbmZvOjptYXhpbXVtU2NhbGUo
KSBjb25zdAotewotICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0
aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgp
KQotICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPm1fbWF4aW11bVNjYWxlOwotCi0g
ICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0ZXMubWF4aW11bVNjYWxlOwotfQot
Ci1RVmFyaWFudCBRV2ViVmlld3BvcnRJbmZvOjppc1NjYWxhYmxlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gISFtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZTsKLX0KLQot
UVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6bGF5b3V0U2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFFTaXplRihtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLmxheW91dFNpemUud2lkdGgo
KSwgbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5sYXlvdXRTaXplLmhlaWdodCgpKTsKLX0K
LQotdm9pZCBRV2ViVmlld3BvcnRJbmZvOjpkaWRVcGRhdGVDb250ZW50c1NpemUoKQotewotICAg
IGVtaXQgY29udGVudHNTaXplVXBkYXRlZCgpOwotfQotCi12b2lkIFFXZWJWaWV3cG9ydEluZm86
OmRpZFVwZGF0ZUN1cnJlbnRTY2FsZSgpCi17Ci0gICAgZW1pdCBjdXJyZW50U2NhbGVVcGRhdGVk
KCk7Ci19Ci0KLXZvaWQgUVdlYlZpZXdwb3J0SW5mbzo6ZGlkVXBkYXRlVmlld3BvcnRDb25zdHJh
aW50cygpCi17Ci0gICAgZW1pdCB2aWV3cG9ydENvbnN0cmFpbnRzVXBkYXRlZCgpOwotICAgIGVt
aXQgY3VycmVudFNjYWxlVXBkYXRlZCgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mb19wLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQzMDYwYmJlNjZiMTI2N2VhMWFiY2IyYTUxNzdiNWQ2ZmY0ZTNlY2QuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvX3AuaAorKysgL2Rldi9udWxsCkBAIC0x
LDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIHF3ZWJ2aWV3cG9ydGluZm9f
cF9oCi0jZGVmaW5lIHF3ZWJ2aWV3cG9ydGluZm9fcF9oCi0KLSNpbmNsdWRlICJxd2Via2l0Z2xv
YmFsLmgiCi0KLSNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KLSNpbmNsdWRlIDxRdENvcmUvUVBv
aW50ZXI+Ci0jaW5jbHVkZSA8UXRDb3JlL1FTaXplPgotI2luY2x1ZGUgPFF0Q29yZS9RVmFyaWFu
dD4KLSNpbmNsdWRlIDxRdFFtbC9RdFFtbD4KLQotY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZhdGU7
Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJWaWV3cG9ydEluZm8gOiBwdWJsaWMgUU9iamVj
dCB7Ci0gICAgUV9PQkpFQ1QKLSAgICBRX1BST1BFUlRZKFFTaXplIGNvbnRlbnRzU2l6ZSBSRUFE
IGNvbnRlbnRzU2l6ZSBOT1RJRlkgY29udGVudHNTaXplVXBkYXRlZCkKLSAgICBRX1BST1BFUlRZ
KFFWYXJpYW50IGN1cnJlbnRTY2FsZSBSRUFEIGN1cnJlbnRTY2FsZSBOT1RJRlkgY3VycmVudFNj
YWxlVXBkYXRlZCkKLSAgICBRX1BST1BFUlRZKFFWYXJpYW50IGRldmljZVBpeGVsUmF0aW8gUkVB
RCBkZXZpY2VQaXhlbFJhdGlvIE5PVElGWSB2aWV3cG9ydENvbnN0cmFpbnRzVXBkYXRlZCkKLSAg
ICBRX1BST1BFUlRZKFFWYXJpYW50IGluaXRpYWxTY2FsZSBSRUFEIGluaXRpYWxTY2FsZSBOT1RJ
Rlkgdmlld3BvcnRDb25zdHJhaW50c1VwZGF0ZWQpCi0gICAgUV9QUk9QRVJUWShRVmFyaWFudCBp
c1NjYWxhYmxlIFJFQUQgaXNTY2FsYWJsZSBOT1RJRlkgdmlld3BvcnRDb25zdHJhaW50c1VwZGF0
ZWQpCi0gICAgUV9QUk9QRVJUWShRVmFyaWFudCBtYXhpbXVtU2NhbGUgUkVBRCBtYXhpbXVtU2Nh
bGUgTk9USUZZIHZpZXdwb3J0Q29uc3RyYWludHNVcGRhdGVkKQotICAgIFFfUFJPUEVSVFkoUVZh
cmlhbnQgbWluaW11bVNjYWxlIFJFQUQgbWluaW11bVNjYWxlIE5PVElGWSB2aWV3cG9ydENvbnN0
cmFpbnRzVXBkYXRlZCkKLSAgICBRX1BST1BFUlRZKFFWYXJpYW50IGxheW91dFNpemUgUkVBRCBs
YXlvdXRTaXplIE5PVElGWSB2aWV3cG9ydENvbnN0cmFpbnRzVXBkYXRlZCkKLQotc2lnbmFsczoK
LSAgICB2b2lkIGNvbnRlbnRzU2l6ZVVwZGF0ZWQoKTsKLSAgICB2b2lkIGN1cnJlbnRTY2FsZVVw
ZGF0ZWQoKTsKLSAgICB2b2lkIHZpZXdwb3J0Q29uc3RyYWludHNVcGRhdGVkKCk7Ci0KLXB1Ymxp
YzoKLSAgICBRV2ViVmlld3BvcnRJbmZvKFFRdWlja1dlYlZpZXdQcml2YXRlKiB3ZWJ2aWV3UHJp
dmF0ZSwgUU9iamVjdCogcGFyZW50ID0gMCk7Ci0gICAgdmlydHVhbCB+UVdlYlZpZXdwb3J0SW5m
bygpOwotCi0gICAgUVNpemUgY29udGVudHNTaXplKCkgY29uc3Q7Ci0gICAgUVZhcmlhbnQgY3Vy
cmVudFNjYWxlKCkgY29uc3Q7Ci0gICAgUVZhcmlhbnQgZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0
OwotICAgIFFWYXJpYW50IGluaXRpYWxTY2FsZSgpIGNvbnN0OwotICAgIFFWYXJpYW50IGlzU2Nh
bGFibGUoKSBjb25zdDsKLSAgICBRVmFyaWFudCBsYXlvdXRTaXplKCkgY29uc3Q7Ci0gICAgUVZh
cmlhbnQgbWF4aW11bVNjYWxlKCkgY29uc3Q7Ci0gICAgUVZhcmlhbnQgbWluaW11bVNjYWxlKCkg
Y29uc3Q7Ci0KLSAgICB2b2lkIGRpZFVwZGF0ZUNvbnRlbnRzU2l6ZSgpOwotICAgIHZvaWQgZGlk
VXBkYXRlQ3VycmVudFNjYWxlKCk7Ci0gICAgdm9pZCBkaWRVcGRhdGVWaWV3cG9ydENvbnN0cmFp
bnRzKCk7Ci0KLXByaXZhdGU6Ci0gICAgUVF1aWNrV2ViVmlld1ByaXZhdGUqIG1fd2ViVmlld1By
aXZhdGU7Ci19OwotCi0jZW5kaWYgLy8gcXdlYnZpZXdwb3J0aW5mb19wCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0
X2RvdWJsZVRhcFRvWm9vbS5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2RvdWJsZVRhcFRvWm9vbS5xbWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTA0ZjYwZmViMTE3YzZmZDNlYzBkOThhMzk2ZDI3ODNmNGQzYjRiNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmll
dy90c3RfZG91YmxlVGFwVG9ab29tLnFtbApAQCAtMCwwICsxLDEwNiBAQAoraW1wb3J0IFF0UXVp
Y2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0
V2ViS2l0LmV4cGVyaW1lbnRhbCAxLjAKK2ltcG9ydCBUZXN0IDEuMAoraW1wb3J0ICIuLi9jb21t
b24iCisKK0l0ZW0geworICAgIFRlc3RXZWJWaWV3IHsKKyAgICAgICAgaWQ6IHdlYlZpZXcKKyAg
ICAgICAgd2lkdGg6IDQ4MAorICAgICAgICBoZWlnaHQ6IDcyMAorCisgICAgICAgIHByb3BlcnR5
IHZhcmlhbnQgcmVzdWx0CisKKyAgICAgICAgZXhwZXJpbWVudGFsLnRlc3Qub25Db250ZW50c1Nj
YWxlQ29tbWl0dGVkOiBzY2FsZUNoYW5nZWQoKQorCisgICAgICAgIHByb3BlcnR5IHZhcmlhbnQg
Y29udGVudDogImRhdGE6dGV4dC9odG1sLCIgKworICAgICAgICAgICAgIjxoZWFkPiIgKworICAg
ICAgICAgICAgIiAgICA8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNl
LXdpZHRoJz4iICsKKyAgICAgICAgICAgICI8L2hlYWQ+IiArCisgICAgICAgICAgICAiPGJvZHk+
IiArCisgICAgICAgICAgICAiICAgIDxkaXYgaWQ9J3RhcmdldCcgIiArCisgICAgICAgICAgICAi
ICAgICAgICAgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjIwOyB0b3A6MjA7IHdpZHRo
OjIwMDsgaGVpZ2h0OjIwMDsnPiIgKworICAgICAgICAgICAgIiAgICA8L2Rpdj4iICsKKyAgICAg
ICAgICAgICI8L2JvZHk+IgorCisgICAgICAgIHNpZ25hbCByZXN1bHRSZWNlaXZlZAorICAgICAg
ICBzaWduYWwgc2NhbGVDaGFuZ2VkCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAg
aWQ6IHJlc3VsdFNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFt
ZTogInJlc3VsdFJlY2VpdmVkIgorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlk
OiBzY2FsZVNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTog
InNjYWxlQ2hhbmdlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJE
b3VibGVUYXBUb1pvb20iCisKKyAgICAgICAgcHJvcGVydHkgdmFyaWFudCB0ZXN0OiB3ZWJWaWV3
LmV4cGVyaW1lbnRhbC50ZXN0CisKKyAgICAgICAgLy8gRGVsYXllZCB3aW5kb3dTaG93biB0byB3
b3JrYXJvdW5kIHByb2JsZW1zIHdpdGggUXQ1IGluIGRlYnVnIG1vZGUuCisgICAgICAgIHdoZW46
IGZhbHNlCisgICAgICAgIFRpbWVyIHsKKyAgICAgICAgICAgIHJ1bm5pbmc6IHBhcmVudC53aW5k
b3dTaG93bgorICAgICAgICAgICAgcmVwZWF0OiBmYWxzZQorICAgICAgICAgICAgaW50ZXJ2YWw6
IDEKKyAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiBwYXJlbnQud2hlbiA9IHRydWUKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CisgICAgICAgICAgICByZXN1bHRTcHkuY2xl
YXIoKQorICAgICAgICAgICAgc2NhbGVTcHkuY2xlYXIoKQorICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gZG9jdW1lbnRTaXplKCkgeworICAgICAgICAgICAgcmVzdWx0U3B5LmNsZWFyKCk7
CisgICAgICAgICAgICB2YXIgcmVzdWx0OworCisgICAgICAgICAgICAgd2ViVmlldy5leHBlcmlt
ZW50YWwuZXZhbHVhdGVKYXZhU2NyaXB0KAorICAgICAgICAgICAgICAgICJ3aW5kb3cuaW5uZXJX
aWR0aCArICd4JyArIHdpbmRvdy5pbm5lckhlaWdodCIsCisgICAgICAgICAgICAgICAgZnVuY3Rp
b24oc2l6ZSkgeyB3ZWJWaWV3LnJlc3VsdFJlY2VpdmVkKCk7IHJlc3VsdCA9IHNpemUgfSk7Cisg
ICAgICAgICAgICByZXN1bHRTcHkud2FpdCgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVsZW1lbnRSZWN0KGlkKSB7CisgICAgICAg
ICAgICByZXN1bHRTcHkuY2xlYXIoKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQ7CisKKyAgICAg
ICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5ldmFsdWF0ZUphdmFTY3JpcHQoCisgICAgICAg
ICAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgaWQgKyAiJykuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7IiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbihyZWN0KSB7IHdlYlZp
ZXcucmVzdWx0UmVjZWl2ZWQoKTsgcmVzdWx0ID0gcmVjdCB9KTsKKyAgICAgICAgICAgIHJlc3Vs
dFNweS53YWl0KCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gZG91YmxlVGFwQXRQb2ludCh4LCB5KSB7CisgICAgICAgICAgICBzY2Fs
ZVNweS5jbGVhcigpCisgICAgICAgICAgICB0ZXN0LnRvdWNoRG91YmxlVGFwKHdlYlZpZXcsIHgs
IHkpCisgICAgICAgICAgICBzY2FsZVNweS53YWl0KCkKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHRlc3RfYmFzaWMoKSB7CisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IHdlYlZpZXcu
Y29udGVudAorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQo
KSkKKworICAgICAgICAgICAgY29tcGFyZSgiNDgweDcyMCIsIGRvY3VtZW50U2l6ZSgpKQorCisg
ICAgICAgICAgICBjb21wYXJlKDEuMCwgdGVzdC5jb250ZW50c1NjYWxlKQorCisgICAgICAgICAg
ICB2YXIgcmVjdCA9IGVsZW1lbnRSZWN0KCJ0YXJnZXQiKTsKKyAgICAgICAgICAgIHZhciBuZXdT
Y2FsZSA9IHdlYlZpZXcud2lkdGggLyAocmVjdC53aWR0aCArIDIgKiAxMCkgLy8gaW5mbGF0ZWQg
YnkgMTBweAorICAgICAgICAgICAgZG91YmxlVGFwQXRQb2ludChyZWN0LmxlZnQgKyByZWN0Lmhl
aWdodCAvIDIsIHJlY3QudG9wICsgcmVjdC53aWR0aCAvIDIpCisKKyAgICAgICAgICAgIGNvbXBh
cmUobmV3U2NhbGUsIHRlc3QuY29udGVudHNTY2FsZSkKKyAgICAgICAgfQorICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS5jcHAKaW5kZXggOTQ5YTU5MThjYTE2MjI3M2IxNzg5MTdhZTEwYzc3MGMx
N2Q2OWFhNC4uYjhjODVlZjRiYjFmYWJhZjA4OTU5ZTc3NTkwZDgyYThmMWI5N2Q1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS5jcHAKQEAgLTE5Miw2ICsxOTIsMTMgQEAgYm9vbCBRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OmFuaW1hdGVJdGVtUmVjdFZpc2libGUoY29uc3QgUVJlY3RGJiBpdGVt
UmVjdCkKICAgICBpZiAoaXRlbVJlY3QgPT0gY3VycmVudEl0ZW1SZWN0VmlzaWJsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHdoeSB0aGF0IGFu
aW1hdGlvbiBkb2Vzbid0IHJ1biB3aGVuIHdlIGFyZSB1bmZvY3VzZWQuCisgICAgaWYgKCFtX3Zp
ZXdwb3J0LT5pc1Zpc2libGUoKSB8fCAhbV92aWV3cG9ydC0+aGFzRm9jdXMoKSkgeworICAgICAg
ICAvLyBBcHBseSB0aGUgZW5kIHJlc3VsdCBpbW1lZGlhdGVseSB3aGVuIHdlIGFyZSBub24tdmlz
aWJsZS4KKyAgICAgICAgc2V0SXRlbVJlY3RWaXNpYmxlKGl0ZW1SZWN0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgbV9zY2FsZUFuaW1hdGlvbi0+c2V0RHVyYXRpb24oa1Nj
YWxlQW5pbWF0aW9uRHVyYXRpb25NaWxsaXMpOwogICAgIG1fc2NhbGVBbmltYXRpb24tPnNldEVh
c2luZ0N1cnZlKFFFYXNpbmdDdXJ2ZTo6T3V0Q3ViaWMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgKaW5k
ZXggOGE3MjBmMzRiOTcyNTMyYjRhZjQ3MmNhMmUyZmJlZTZiNTA2MjAwMi4uODc2YWI2OTAxODJm
MTA4ZTNkMTA3NTU1MjJlOGRlYTE0MDc0NGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaApAQCAtMzUs
NyArMzUsNyBAQCBjbGFzcyBRUXVpY2tXZWJWaWV3OwogY2xhc3MgUVdoZWVsRXZlbnQ7CiBRVF9F
TkRfTkFNRVNQQUNFCiAKLWNsYXNzIFFXZWJWaWV3cG9ydEluZm87CitjbGFzcyBRV2ViS2l0VGVz
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlIFFf
U0xPVFM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFZpZXdwb3J0VXBkYXRlRGVmZXJy
ZXI7Ci0gICAgZnJpZW5kIGNsYXNzIDo6UVdlYlZpZXdwb3J0SW5mbzsKKyAgICBmcmllbmQgY2xh
c3MgOjpRV2ViS2l0VGVzdDsKIAogICAgIFFRdWlja1dlYlZpZXcqIGNvbnN0IG1fdmlld3BvcnQ7
CiAgICAgUVF1aWNrV2ViUGFnZSogY29uc3QgbV9jb250ZW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMzYTVjMzk3MzFkMjg1Zjg3M2YxZTQy
MzY2YzU5YzMyM2Y4YzU2NjQuLjkzMTc5YzA4NmQ4ZTcyNzU0YmQ5MjBkMGQwNjlmZWJmNDZlMjgy
MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMi0wNS0xNSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxr
ZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBBZGQgaW5mcmEgZm9yIHRlc3Rpbmcg
ZG91YmxlLXRhcCB0byB6b29tIGZ1bmN0aW9uYWxpdHkgZXRjCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJWaWV3cG9ydEluZm8gY2xhc3Mgd2Fz
IHJlbmFtZWQgdG8gUVdlYktpdFRlc3QgaW4gcHJlcGFyYXRpb24KKyAgICAgICAgb2YgYmVjb21p
bmcgYSBzZXBhcmF0ZSBtb2R1bGUuIEFkYXB0IHRoZSB1c2UgQVBJLgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sOgorICAgICAgICAqIE1pbmlCcm93c2Vy
L3F0L3FtbC9WaWV3cG9ydEluZm9JdGVtLnFtbDoKKwogMjAxMi0wNS0xNSAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIEludHJvZHVjZSBFTkFCTEVfQ1NT
X1ZBUklBQkxFUyBjb21waWxlIGZsYWcuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3Nl
cldpbmRvdy5xbWwKaW5kZXggNTUxM2I5YmExNGU5NjVhN2U1YzQzODA3NmE2NzUzMjkwNTNhNDJm
NS4uOTZkNTNkMzA5OTI1MzIwNDUyOTYxMjUwZTMxYzU1NTdiMzgxNTE3OCAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApAQCAtMzU2LDYgKzM1Niw2IEBAIFJl
Y3RhbmdsZSB7CiAgICAgICAgICAgICBib3R0b206IHBhcmVudC5ib3R0b20KICAgICAgICAgfQog
ICAgICAgICB2aXNpYmxlOiBmYWxzZQotICAgICAgICB2aWV3cG9ydEluZm8gOiB3ZWJWaWV3LmV4
cGVyaW1lbnRhbC52aWV3cG9ydEluZm8KKyAgICAgICAgdGVzdCA6IHdlYlZpZXcuZXhwZXJpbWVu
dGFsLnRlc3QKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwv
Vmlld3BvcnRJbmZvSXRlbS5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvVmlld3BvcnRJ
bmZvSXRlbS5xbWwKaW5kZXggNzdmNzM0Y2FkNDZjYjBlMTVmMzE1MzU0ZDM1MWU5YjUwY2I2MThl
MS4uODhhYzAxMjc1MjkzMWE5MzY3ODQ3MDY0NWU0ZDBjYjJmNTRmNThmNyAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1ZpZXdwb3J0SW5mb0l0ZW0ucW1sCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL3F0L3FtbC9WaWV3cG9ydEluZm9JdGVtLnFtbApAQCAtMiw3ICsyLDcgQEAg
aW1wb3J0IFF0UXVpY2sgMi4wCiBpbXBvcnQgUXRXZWJLaXQgMy4wCiAKIFJlY3RhbmdsZSB7Ci0g
ICAgcHJvcGVydHkgdmFyIHZpZXdwb3J0SW5mbworICAgIHByb3BlcnR5IHZhciB0ZXN0CiAKICAg
ICBjb2xvcjogImJsYWNrIgogICAgIG9wYWNpdHk6IDAuOApAQCAtMjUsMjggKzI1LDI4IEBAIFJl
Y3RhbmdsZSB7CiAgICAgICAgICAgICBpZDogY3VycmVudFNjYWxlTGFiZWwKICAgICAgICAgICAg
IGFuY2hvcnMudG9wOiB2aWV3cG9ydEluZm9MYWJlbC5ib3R0b20KICAgICAgICAgICAgIGFuY2hv
cnMudG9wTWFyZ2luOiAzMAotICAgICAgICAgICAgdGV4dDogIkN1cnJlbnQgc2NhbGU6ICIgKyBw
YXJzZUZsb2F0KHZpZXdwb3J0SW5mby5jdXJyZW50U2NhbGUudG9GaXhlZCg0KSkKKyAgICAgICAg
ICAgIHRleHQ6ICJDdXJyZW50IHNjYWxlOiAiICsgcGFyc2VGbG9hdCh0ZXN0LmNvbnRlbnRzU2Nh
bGUudG9GaXhlZCg0KSkKICAgICAgICAgICAgIGZvbnQuZmFtaWx5OiBwYXJlbnQuZm9udEZhbWls
eQogICAgICAgICAgICAgY29sb3I6IHBhcmVudC5mb250Q29sb3IKICAgICAgICAgfQogICAgICAg
ICBUZXh0IHsKICAgICAgICAgICAgIGlkOiBpbml0aWFsU2NhbGVMYWJlbAogICAgICAgICAgICAg
YW5jaG9ycy50b3A6IGN1cnJlbnRTY2FsZUxhYmVsLmJvdHRvbQotICAgICAgICAgICAgdGV4dDog
IkluaXRpYWwgc2NhbGU6ICIgKyBwYXJzZUZsb2F0KHZpZXdwb3J0SW5mby5pbml0aWFsU2NhbGUu
dG9GaXhlZCg0KSkKKyAgICAgICAgICAgIHRleHQ6ICJJbml0aWFsIHNjYWxlOiAiICsgcGFyc2VG
bG9hdCh0ZXN0LmluaXRpYWxTY2FsZS50b0ZpeGVkKDQpKQogICAgICAgICAgICAgZm9udC5mYW1p
bHk6IHBhcmVudC5mb250RmFtaWx5CiAgICAgICAgICAgICBjb2xvcjogcGFyZW50LmZvbnRDb2xv
cgogICAgICAgICB9CiAgICAgICAgIFRleHQgewogICAgICAgICAgICAgaWQ6IG1pbmltdW1TY2Fs
ZUxhYmVsCiAgICAgICAgICAgICBhbmNob3JzLnRvcDogaW5pdGlhbFNjYWxlTGFiZWwuYm90dG9t
Ci0gICAgICAgICAgICB0ZXh0OiAiTWluaW11bSBzY2FsZTogIiArIHBhcnNlRmxvYXQodmlld3Bv
cnRJbmZvLm1pbmltdW1TY2FsZS50b0ZpeGVkKDQpKQorICAgICAgICAgICAgdGV4dDogIk1pbmlt
dW0gc2NhbGU6ICIgKyBwYXJzZUZsb2F0KHRlc3QubWluaW11bVNjYWxlLnRvRml4ZWQoNCkpCiAg
ICAgICAgICAgICBmb250LmZhbWlseTogcGFyZW50LmZvbnRGYW1pbHkKICAgICAgICAgICAgIGNv
bG9yOiBwYXJlbnQuZm9udENvbG9yCiAgICAgICAgIH0KICAgICAgICAgVGV4dCB7CiAgICAgICAg
ICAgICBpZDogbWF4aW11bVNjYWxlTGFiZWwKICAgICAgICAgICAgIGFuY2hvcnMudG9wOiBtaW5p
bXVtU2NhbGVMYWJlbC5ib3R0b20KLSAgICAgICAgICAgIHRleHQ6ICJNYXhpbXVtIHNjYWxlOiAi
ICsgcGFyc2VGbG9hdCh2aWV3cG9ydEluZm8ubWF4aW11bVNjYWxlLnRvRml4ZWQoNCkpCisgICAg
ICAgICAgICB0ZXh0OiAiTWF4aW11bSBzY2FsZTogIiArIHBhcnNlRmxvYXQodGVzdC5tYXhpbXVt
U2NhbGUudG9GaXhlZCg0KSkKICAgICAgICAgICAgIGZvbnQuZmFtaWx5OiBwYXJlbnQuZm9udEZh
bWlseQogICAgICAgICAgICAgY29sb3I6IHBhcmVudC5mb250Q29sb3IKICAgICAgICAgfQpAQCAt
NTQsMjEgKzU0LDIxIEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICBpZDogZGV2aWNlUGl4ZWxS
YXRpb0xhYmVsCiAgICAgICAgICAgICBhbmNob3JzLnRvcDogbWF4aW11bVNjYWxlTGFiZWwuYm90
dG9tCiAgICAgICAgICAgICBhbmNob3JzLnRvcE1hcmdpbjogMzAKLSAgICAgICAgICAgIHRleHQ6
ICJEZXZpY2UgcGl4ZWwgcmF0aW86ICIgKyBwYXJzZUZsb2F0KHZpZXdwb3J0SW5mby5kZXZpY2VQ
aXhlbFJhdGlvLnRvRml4ZWQoNCkpCisgICAgICAgICAgICB0ZXh0OiAiRGV2aWNlIHBpeGVsIHJh
dGlvOiAiICsgcGFyc2VGbG9hdCh0ZXN0LmRldmljZVBpeGVsUmF0aW8udG9GaXhlZCg0KSkKICAg
ICAgICAgICAgIGZvbnQuZmFtaWx5OiBwYXJlbnQuZm9udEZhbWlseQogICAgICAgICAgICAgY29s
b3I6IHBhcmVudC5mb250Q29sb3IKICAgICAgICAgfQogICAgICAgICBUZXh0IHsKICAgICAgICAg
ICAgIGlkOiBjb250ZW50c1NpemVMYWJlbAogICAgICAgICAgICAgYW5jaG9ycy50b3A6IGRldmlj
ZVBpeGVsUmF0aW9MYWJlbC5ib3R0b20KLSAgICAgICAgICAgIHRleHQ6ICJDb250ZW50cyBzaXpl
OiAiICsgdmlld3BvcnRJbmZvLmNvbnRlbnRzU2l6ZS53aWR0aCArICJ4IiArIHZpZXdwb3J0SW5m
by5jb250ZW50c1NpemUuaGVpZ2h0CisgICAgICAgICAgICB0ZXh0OiAiQ29udGVudHMgc2l6ZTog
IiArIHRlc3QuY29udGVudHNTaXplLndpZHRoICsgIngiICsgdGVzdC5jb250ZW50c1NpemUuaGVp
Z2h0CiAgICAgICAgICAgICBmb250LmZhbWlseTogcGFyZW50LmZvbnRGYW1pbHkKICAgICAgICAg
ICAgIGNvbG9yOiBwYXJlbnQuZm9udENvbG9yCiAgICAgICAgIH0KICAgICAgICAgVGV4dCB7CiAg
ICAgICAgICAgICBpZDogbGF5b3V0U2l6ZUxhYmVsCiAgICAgICAgICAgICBhbmNob3JzLnRvcDog
Y29udGVudHNTaXplTGFiZWwuYm90dG9tCi0gICAgICAgICAgICB0ZXh0OiAiVmlld3BvcnQgbGF5
b3V0IHNpemU6ICIgKyB2aWV3cG9ydEluZm8ubGF5b3V0U2l6ZS53aWR0aCArICJ4IiArIHZpZXdw
b3J0SW5mby5sYXlvdXRTaXplLmhlaWdodAorICAgICAgICAgICAgdGV4dDogIlZpZXdwb3J0IGxh
eW91dCBzaXplOiAiICsgdGVzdC5sYXlvdXRTaXplLndpZHRoICsgIngiICsgdGVzdC5sYXlvdXRT
aXplLmhlaWdodAogICAgICAgICAgICAgZm9udC5mYW1pbHk6IHBhcmVudC5mb250RmFtaWx5CiAg
ICAgICAgICAgICBjb2xvcjogcGFyZW50LmZvbnRDb2xvcgogICAgICAgICB9CkBAIC03Niw3ICs3
Niw3IEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICBpZDogc2NhbGFibGVMYWJlbAogICAgICAg
ICAgICAgYW5jaG9ycy50b3A6IGxheW91dFNpemVMYWJlbC5ib3R0b20KICAgICAgICAgICAgIGFu
Y2hvcnMudG9wTWFyZ2luOiAzMAotICAgICAgICAgICAgdGV4dDogIlZpZXcgIiArICh2aWV3cG9y
dEluZm8uaXNTY2FsYWJsZSA/ICJpcyAiIDogImlzIG5vdCAiICkgKyAic2NhbGFibGUuIgorICAg
ICAgICAgICAgdGV4dDogIlZpZXcgIiArICh0ZXN0LmlzU2NhbGFibGUgPyAiaXMgIiA6ICJpcyBu
b3QgIiApICsgInNjYWxhYmxlLiIKICAgICAgICAgICAgIGZvbnQuZmFtaWx5OiBwYXJlbnQuZm9u
dEZhbWlseQogICAgICAgICAgICAgY29sb3I6IHBhcmVudC5mb250Q29sb3IKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141949</attachid>
            <date>2012-05-15 06:28:29 -0700</date>
            <delta_ts>2012-05-15 06:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86474-20120515152826.patch</filename>
            <type>text/plain</type>
            <size>37352</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDY4ODFhZjRhMTdl
YWY2ZDhkMDhkYTkzYmRjZmFlMDYwNDM2ZjUzZjYuLmNmNmU2MTlmMTBiMWFjNjQyOWRhOTgzNmY5
MWQ3MTllNjRkMTU3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUt
MTUgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFtRdF0gQWRkIGluZnJhIGZvciB0ZXN0aW5nIGRvdWJsZS10YXAgdG8gem9vbSBmdW5j
dGlvbmFsaXR5IGV0YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgV2ViVmlld3BvcnRJbmZvIGNsYXNzIHdhcyByZW5hbWVkIHRvIFFXZWJLaXRUZXN0
IGluIHByZXBhcmF0aW9uCisgICAgICAgIG9mIGJlY29taW5nIGEgc2VwYXJhdGUgbW9kdWxlLiBB
ZGFwdCB0aGUgdXNlIEFQSS4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9w
bHVnaW4uY3BwOgorCiAyMDEyLTA1LTEwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgTW92ZSByZXN1bWVBbmltYXRpb25zIHRvIHVzZSBJbnRlcm5h
bHMgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmJmZjFmYjZmM2JkMjI3MmQxNGFlMDIzMjliNTA5
Zjc4YmRjOWMzZS4uYjhlYjQzOTE0NTI0ZjQ3NmJiYWJiMDYxYzgzNmRkNTg3NzAwNWQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA1LTE1ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEFkZCBpbmZyYSBm
b3IgdGVzdGluZyBkb3VibGUtdGFwIHRvIHpvb20gZnVuY3Rpb25hbGl0eSBldGMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHRoZSBXZWJWaWV3
cG9ydEluZm8gY2xhc3MgdG8gUVdlYktpdFRlc3QgaW4gcHJlcGFyYXRpb24KKyAgICAgICAgb2Yg
YmVjb21pbmcgYSBzZXBhcmF0ZSBtb2R1bGUuIEFkYXB0IHRoZSB1c2UgQVBJLgorCisgICAgICAg
IE1vZGlmeSB0aGUgQVBJIHRvIHdvcmsgYmV0dGVyIGZvciB0ZXN0aW5nIGFuZCBtYWtlIHN1cmUg
dGhlCisgICAgICAgIHNpZ25hbHMgYXJlIGVtaXR0ZWQgdGhlIHJpZ2h0IHBsYWNlcy4gQWxzbyBh
ZGQgYSBtZXRob2QgZm9yCisgICAgICAgIHNpbXVsYXRpbmcgYSBkb3VibGUgdGFwLgorCisgICAg
ICAgIFdvcmsgYXJvdW5kIGlzc3VlIHdpdGggYW5pbWF0aW9ucyBub3QgcnVubmluZyB3aGVuIHRo
ZSBpdGVtCisgICAgICAgIGRvZXNuJ3QgaGF2ZSBmb2N1cy4KKworICAgICAgICBDcmVhdGUgYW4g
ZXhhbXBsZSB0ZXN0IGZvciBkb3VibGUtdGFwIHRvIHpvb20sIHNob3dpbmcgaG93IHdlIGNhbgor
ICAgICAgICBub3cgY3JlYXRlIFVJIHRlc3RzIHVzaW5nIFFNTC4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKFFRdWlja1dlYlBhZ2U6OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChRUXVpY2tX
ZWJQYWdlOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6
OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Rmxp
Y2thYmxlUHJpdmF0ZTo6X3FfY29udGVudFZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OlFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwp
OgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dGVzdCk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmtpdHRlc3QuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcC4KKyAgICAg
ICAgKFFXZWJLaXRUZXN0OjpRV2ViS2l0VGVzdCk6CisgICAgICAgIChRV2ViS2l0VGVzdDo6flFX
ZWJLaXRUZXN0KToKKyAgICAgICAgKFFXZWJLaXRUZXN0Ojp0b3VjaERvdWJsZVRhcCk6CisgICAg
ICAgIChRV2ViS2l0VGVzdDo6Y29udGVudHNTaXplKToKKyAgICAgICAgKFFXZWJLaXRUZXN0Ojpj
b250ZW50c1NjYWxlKToKKyAgICAgICAgKFFXZWJLaXRUZXN0OjpkZXZpY2VQaXhlbFJhdGlvKToK
KyAgICAgICAgKFFXZWJLaXRUZXN0Ojppbml0aWFsU2NhbGUpOgorICAgICAgICAoUVdlYktpdFRl
c3Q6Om1pbmltdW1TY2FsZSk6CisgICAgICAgIChRV2ViS2l0VGVzdDo6bWF4aW11bVNjYWxlKToK
KyAgICAgICAgKFFXZWJLaXRUZXN0Ojppc1NjYWxhYmxlKToKKyAgICAgICAgKFFXZWJLaXRUZXN0
OjpsYXlvdXRTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0ZXN0X3Au
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdw
b3J0aW5mb19wLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9X
ZWJWaWV3L3RzdF9kb3VibGVUYXBUb1pvb20ucW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlSXRlbVJlY3RWaXNpYmxlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6CisgICAg
ICAgIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpOgorCiAyMDEyLTA1LTE1ICBNaWNoYWVs
IEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dL
Ml0gaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2h0dHBzLWluLXBhZ2UtY2FjaGUuaHRtbCBmYWlscyB3
aXRoIHRpbWVvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhw
ZXJpbWVudGFsL3BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVy
aW1lbnRhbC9wbHVnaW4uY3BwCmluZGV4IGQzM2E0Nzk1NTEwNmZlMWY5NTJkZDcxZDFlMmI2NjMx
NTRkZWE4ZjcuLjQ5NWIzMDhjNjdkZTI2YjRkMzg2Njk0MTE0YjE5YmJmYzFiYmIzMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2lu
LmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2t3ZWJ2aWV3
X3AuaCIKICNpbmNsdWRlICJwcml2YXRlL3F0d2Vic2VjdXJpdHlvcmlnaW5fcC5oIgogI2luY2x1
ZGUgInByaXZhdGUvcXdlYmRvd25sb2FkaXRlbV9wLmgiCisjaW5jbHVkZSAicHJpdmF0ZS9xd2Vi
a2l0dGVzdF9wLmgiCiAjaW5jbHVkZSAicHJpdmF0ZS9xd2VibmF2aWdhdGlvbmhpc3RvcnlfcC5o
IgogI2luY2x1ZGUgInByaXZhdGUvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaCIKICNpbmNsdWRl
ICJwcml2YXRlL3F3ZWJwcmVmZXJlbmNlc19wLmgiCi0jaW5jbHVkZSAicHJpdmF0ZS9xd2Vidmll
d3BvcnRpbmZvX3AuaCIKIAogI2luY2x1ZGUgPFF0UW1sL3FxbWwuaD4KICNpbmNsdWRlIDxRdFFt
bC9xcW1sZXh0ZW5zaW9ucGx1Z2luLmg+CkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcW1sUmVnaXN0ZXJFeHRlbmRlZFR5cGU8UVF1aWNrV2ViVmlldywgUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbEV4dGVuc2lvbj4odXJpLCAxLCAwLCAiV2ViVmlldyIpOwogICAgICAgICBxbWxS
ZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsPih1cmksIDEs
IDAsICJXZWJWaWV3RXhwZXJpbWVudGFsIiwKICAgICAgICAgICAgIFFPYmplY3Q6OnRyKCJDYW5u
b3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFdlYlZpZXdFeHBlcmltZW50YWwiKSk7Ci0g
ICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJWaWV3cG9ydEluZm8+KHVyaSwg
MSwgMCwgIlFXZWJWaWV3cG9ydEluZm8iLAotICAgICAgICAgICAgUU9iamVjdDo6dHIoIkNhbm5v
dCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgUVdlYlZpZXdwb3J0SW5mbyIpKTsKKyAgICAg
ICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYktpdFRlc3Q+KHVyaSwgMSwgMCwgIlFX
ZWJLaXRUZXN0IiwKKyAgICAgICAgICAgIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFy
YXRlIGluc3RhbmNlIG9mIFFXZWJLaXRUZXN0IikpOwogICAgICAgICBxbWxSZWdpc3RlclR5cGU8
UVF1aWNrVXJsU2NoZW1lRGVsZWdhdGU+KHVyaSwgMSwgMCwgIlVybFNjaGVtZURlbGVnYXRlIik7
CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFRdWlja05ldHdvcmtSZXF1ZXN0
Pih1cmksIDEsIDAsICJOZXR3b3JrUmVxdWVzdCIsCiAgICAgICAgICAgICBRT2JqZWN0Ojp0cigi
TmV0d29ya1JlcXVlc3Qgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGZyb20gUU1MIikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5w
cmkKaW5kZXggZDk2YTg1MmQzNzVkMTk1N2M5ZmM1OWQ0N2UyMzRjYTQ3NDJiMGE1NS4uYTRiOWE0
ZjZlZjIxNWQ0YTZiYjc3ODk3NjMyOGZhMGMxNTYzNzNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xOTUs
NyArMTk1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2tuZXR3
b3JrcmVwbHlfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja25ldHdvcmtyZXF1ZXN0
X3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t1cmxzY2hlbWVkZWxlZ2F0ZV9wLmgg
XAotICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mb19wLmggXAorICAgIFVJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmtpdHRlc3RfcC5oIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggXAogICAgIFVJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmggXApAQCAtNTM1LDcgKzUzNSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrbmV0d29ya3JlcXVlc3QuY3Bw
IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3VybHNjaGVtZWRlbGVnYXRlLmNwcCBcCiAg
ICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuY3BwIFwKLSAgICBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJr
aXR0ZXN0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL1dlYkNyZWRlbnRpYWwuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCmluZGV4IDIwM2M3MmI3ZTBmM2Q3YjA5ZDc0NGQxMTM2
MTFkZWEwYWQ2ODU3N2YuLmUwMmNjYzliMmY0ZGE1MDkyZDkyYTI3MDNiM2MxZDg4ZjFkZDVhOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdl
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgInFxdWlja3dlYnBhZ2VfcF9wLmgiCiAjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCisj
aW5jbHVkZSAicXdlYmtpdHRlc3RfcC5oIgogI2luY2x1ZGUgPFF0UXVpY2svUVF1aWNrQ2FudmFz
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTEwLDYgKzExMSw3IEBAIHZvaWQgUVF1
aWNrV2ViUGFnZTo6c2V0Q29udGVudHNTaXplKGNvbnN0IFFTaXplRiYgc2l6ZSkKIAogICAgIGQt
PmNvbnRlbnRzU2l6ZSA9IHNpemU7CiAgICAgZC0+dXBkYXRlU2l6ZSgpOworICAgIGVtaXQgZC0+
dmlld3BvcnRJdGVtLT5leHBlcmltZW50YWwoKS0+dGVzdCgpLT5jb250ZW50c1NpemVDaGFuZ2Vk
KCk7CiB9CiAKIGNvbnN0IFFTaXplRiYgUVF1aWNrV2ViUGFnZTo6Y29udGVudHNTaXplKCkgY29u
c3QKQEAgLTEyMiw2ICsxMjQsNyBAQCB2b2lkIFFRdWlja1dlYlBhZ2U6OnNldENvbnRlbnRzU2Nh
bGUocXJlYWwgc2NhbGUpCiAgICAgQVNTRVJUKHNjYWxlID4gMCk7CiAgICAgZC0+Y29udGVudHNT
Y2FsZSA9IHNjYWxlOwogICAgIGQtPnVwZGF0ZVNpemUoKTsKKyAgICBlbWl0IGQtPnZpZXdwb3J0
SXRlbS0+ZXhwZXJpbWVudGFsKCktPnRlc3QoKS0+Y29udGVudHNTY2FsZUNvbW1pdHRlZCgpOwog
fQogCiBxcmVhbCBRUXVpY2tXZWJQYWdlOjpjb250ZW50c1NjYWxlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDcx
NjNhN2U2YTc5MmFkYzkyNzRhZjVkOGM0Njk3NWZjYmRjODMyZTcuLjkzNTg0MjE0NjQwNmUzNGUz
OWVjYTQ4MjU1Y2FiMjk2Zjc1YjdjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMzksMTkgKzM5LDE3IEBACiAjZW5kaWYK
ICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgot
CiAjaW5jbHVkZSAicXF1aWNrbmV0d29ya3JlcGx5X3AuaCIKICNpbmNsdWRlICJxcXVpY2tuZXR3
b3JrcmVxdWVzdF9wLmgiCiAjaW5jbHVkZSAicXF1aWNrd2VicGFnZV9wX3AuaCIKICNpbmNsdWRl
ICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgogI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcF9wLmgi
CisjaW5jbHVkZSAicXdlYmtpdHRlc3RfcC5oIgogI2luY2x1ZGUgInF3ZWJsb2FkcmVxdWVzdF9w
LmgiCiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5X3AuaCIKICNpbmNsdWRlICJxd2Vi
bmF2aWdhdGlvbmhpc3RvcnlfcF9wLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3AuaCIK
ICNpbmNsdWRlICJxd2VicHJlZmVyZW5jZXNfcF9wLmgiCi0jaW5jbHVkZSAicXdlYnZpZXdwb3J0
aW5mb19wLmgiCi0KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KQEAgLTg2Niw3ICs4NjQsNyBAQCB2b2lkIFFRdWlja1dl
YlZpZXdGbGlja2FibGVQcml2YXRlOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6VgogICAgICAgICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0Q1NTU2NhbGUoYXR0ci5p
bml0aWFsU2NhbGUpOwogCiAgICAgdGhpcy0+YXR0cmlidXRlcyA9IGF0dHI7Ci0gICAgcS0+ZXhw
ZXJpbWVudGFsKCktPnZpZXdwb3J0SW5mbygpLT5kaWRVcGRhdGVWaWV3cG9ydENvbnN0cmFpbnRz
KCk7CisgICAgZW1pdCBxLT5leHBlcmltZW50YWwoKS0+dGVzdCgpLT52aWV3cG9ydENoYW5nZWQo
KTsKIAogICAgIC8vIElmIHRoZSB3ZWIgYXBwIHN1Y2Nlc3NpdmVseSBjaGFuZ2VzIHRoZSB2aWV3
cG9ydCBvbiBwdXJwb3NlCiAgICAgLy8gaXQgd2FudHMgdG8gYmUgaW4gY29udHJvbCBhbmQgd2Ug
c2hvdWxkIGRpc2FibGUgYW5pbWF0aW9ucy4KQEAgLTg5NSw4ICs4OTMsNiBAQCB2b2lkIFFRdWlj
a1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogdm9pZCBRUXVp
Y2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3FfY29udGVudFZpZXdwb3J0Q2hhbmdlZChjb25z
dCBRUG9pbnRGJiB0cmFqZWN0b3J5VmVjdG9yKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsK
LSAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIG91ciBRTUwgVmlld3BvcnRJbmZvIGRlYnVnZ2luZyBB
UEkuCi0gICAgcS0+ZXhwZXJpbWVudGFsKCktPnZpZXdwb3J0SW5mbygpLT5kaWRVcGRhdGVDdXJy
ZW50U2NhbGUoKTsKIAogICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gd2ViUGFn
ZVByb3h5LT5kcmF3aW5nQXJlYSgpOwogICAgIGlmICghZHJhd2luZ0FyZWEpCkBAIC05MDUsNiAr
OTAxLDggQEAgdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3FfY29udGVudFZp
ZXdwb3J0Q2hhbmdlZChjb25zdCBRUG9pbnRGJiB0cmEKICAgICBjb25zdCBRUmVjdCB2aXNpYmxl
UmVjdCh2aXNpYmxlQ29udGVudHNSZWN0KCkpOwogICAgIGZsb2F0IHNjYWxlID0gcGFnZVZpZXct
PmNvbnRlbnRzU2NhbGUoKTsKIAorICAgIGVtaXQgcS0+ZXhwZXJpbWVudGFsKCktPnRlc3QoKS0+
Y29udGVudHNTY2FsZUNoYW5nZWQoKTsKKwogICAgIFFSZWN0RiBhY2N1cmF0ZVZpc2libGVSZWN0
KHEtPmJvdW5kaW5nUmVjdCgpKTsKICAgICBhY2N1cmF0ZVZpc2libGVSZWN0LnRyYW5zbGF0ZShj
b250ZW50UG9zKCkpOwogICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZp
c2libGVSZWN0LCBzY2FsZSwgdHJhamVjdG9yeVZlY3RvciwgRmxvYXRQb2ludChhY2N1cmF0ZVZp
c2libGVSZWN0LngoKSwgYWNjdXJhdGVWaXNpYmxlUmVjdC55KCkpKTsKQEAgLTk0MCwxNCArOTM4
LDEzIEBAIHZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OmRpZENoYW5nZUNvbnRl
bnRzU2l6ZShjb25zdCBRU2l6ZSYgbmV3U2l6ZSkKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CiAg
ICAgUVNpemUgdmlld3BvcnRTaXplID0gcS0+Ym91bmRpbmdSZWN0KCkuc2l6ZSgpLnRvU2l6ZSgp
OwogCi0gICAgcGFnZVZpZXctPnNldENvbnRlbnRzU2l6ZShuZXdTaXplKTsKLSAgICBxLT5leHBl
cmltZW50YWwoKS0+dmlld3BvcnRJbmZvKCktPmRpZFVwZGF0ZUNvbnRlbnRzU2l6ZSgpOworICAg
IHBhZ2VWaWV3LT5zZXRDb250ZW50c1NpemUobmV3U2l6ZSk7IC8vIGVtaXRzIGNvbnRlbnRzU2l6
ZUNoYW5nZWQoKQogCiAgICAgZmxvYXQgbWluaW11bVNjYWxlID0gV2ViQ29yZTo6Y29tcHV0ZU1p
bmltdW1TY2FsZUZhY3RvckZvckNvbnRlbnRDb250YWluZWQoYXR0cmlidXRlcywgdmlld3BvcnRT
aXplLCBuZXdTaXplKTsKIAogICAgIGlmICghcUZ1enp5Q29tcGFyZShtaW5pbXVtU2NhbGUsIGF0
dHJpYnV0ZXMubWluaW11bVNjYWxlKSkgewogICAgICAgICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0
Q1NTU2NhbGVCb3VuZHMobWluaW11bVNjYWxlLCBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZSk7Ci0g
ICAgICAgIHEtPmV4cGVyaW1lbnRhbCgpLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlVmlld3Bv
cnRDb25zdHJhaW50cygpOworICAgICAgICBlbWl0IHEtPmV4cGVyaW1lbnRhbCgpLT50ZXN0KCkt
PnZpZXdwb3J0Q2hhbmdlZCgpOwogCiAgICAgICAgIGlmICghaW50ZXJhY3Rpb25FbmdpbmUtPmhh
ZFVzZXJJbnRlcmFjdGlvbigpICYmICFwYWdlSXNTdXNwZW5kZWQpCiAgICAgICAgICAgICBpbnRl
cmFjdGlvbkVuZ2luZS0+c2V0Q1NTU2NhbGUobWluaW11bVNjYWxlKTsKQEAgLTk3NSw3ICs5NzIs
NyBAQCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFs
KFFRdWlja1dlYlZpZXcgKndlYlZpZXcpCiAgICAgLCBxX3B0cih3ZWJWaWV3KQogICAgICwgZF9w
dHIod2ViVmlldy0+ZF9wdHIuZGF0YSgpKQogICAgICwgc2NoZW1lUGFyZW50KG5ldyBRT2JqZWN0
KHRoaXMpKQotICAgICwgbV92aWV3cG9ydEluZm8obmV3IFFXZWJWaWV3cG9ydEluZm8od2ViVmll
dy0+ZF9wdHIuZGF0YSgpLCB0aGlzKSkKKyAgICAsIG1fdGVzdChuZXcgUVdlYktpdFRlc3Qod2Vi
Vmlldy0+ZF9wdHIuZGF0YSgpLCB0aGlzKSkKIHsKIH0KIApAQCAtMTM4Niw5ICsxMzgzLDkgQEAg
dm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpnb0JhY2tUbyhpbnQgaW5kZXgpCiAgICAg
ZF9wdHItPm5hdmlnYXRpb25IaXN0b3J5LT5kLT5nb0JhY2tUbyhpbmRleCk7CiB9CiAKLVFXZWJW
aWV3cG9ydEluZm8qIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnZpZXdwb3J0SW5mbygpCitR
V2ViS2l0VGVzdCogUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dGVzdCgpCiB7Ci0gICAgcmV0
dXJuIG1fdmlld3BvcnRJbmZvOworICAgIHJldHVybiBtX3Rlc3Q7CiB9CiAKIFFRdWlja1dlYlBh
Z2UqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnBhZ2UoKQpAQCAtMTcxMCw2ICsxNzA3LDcg
QEAgdm9pZCBRUXVpY2tXZWJWaWV3Ojptb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCogZXZl
bnQpCiB2b2lkIFFRdWlja1dlYlZpZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVu
dCogZXZlbnQpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOworCiAgICAgLy8gSWYgYSBNb3Vz
ZUJ1dHRvbkRibENsaWNrIHdhcyByZWNlaXZlZCB0aGVuIHdlIGdvdCBhIE1vdXNlQnV0dG9uUHJl
c3MgYmVmb3JlCiAgICAgLy8gaGFuZGxlTW91c2VQcmVzc0V2ZW50IHdpbGwgdGFrZSBjYXJlIG9m
IGRvdWJsZSBjbGlja3MuCiAgICAgZC0+cGFnZVZpZXctPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVN
b3VzZVByZXNzRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXggN2JkNDViNjYxMDliMTljZDUxNTI0NDUyZDFi
Y2MwZDdjYmZiYTc4Mi4uNzczZjczNWE5Y2M5MjAwMmM2MjZjNjYyNmM0ZGMwMTlhZjllMWRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiBjbGFzcyBRV2Vi
TmF2aWdhdGlvbkhpc3Rvcnk7CiBjbGFzcyBRV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBRV2ViUGVy
bWlzc2lvblJlcXVlc3Q7Ci1jbGFzcyBRV2ViVmlld3BvcnRJbmZvOworY2xhc3MgUVdlYktpdFRl
c3Q7CiBjbGFzcyBRUXVpY2tOZXR3b3JrUmVwbHk7CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMjY2
LDcgKzI2Niw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWwgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9QRVJUWShRUW1sQ29tcG9uZW50KiBmaWxl
UGlja2VyIFJFQUQgZmlsZVBpY2tlciBXUklURSBzZXRGaWxlUGlja2VyIE5PVElGWSBmaWxlUGlj
a2VyQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGRhdGFiYXNlUXVvdGFE
aWFsb2cgUkVBRCBkYXRhYmFzZVF1b3RhRGlhbG9nIFdSSVRFIHNldERhdGFiYXNlUXVvdGFEaWFs
b2cgTk9USUZZIGRhdGFiYXNlUXVvdGFEaWFsb2dDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVdl
YlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFM
KQotICAgIFFfUFJPUEVSVFkoUVdlYlZpZXdwb3J0SW5mbyogdmlld3BvcnRJbmZvIFJFQUQgdmll
d3BvcnRJbmZvIENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdlYktpdFRlc3QqIHRl
c3QgUkVBRCB0ZXN0IENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJPUEVSVFkoUVFtbExpc3RQcm9w
ZXJ0eTxRUXVpY2tVcmxTY2hlbWVEZWxlZ2F0ZT4gdXJsU2NoZW1lRGVsZWdhdGVzIFJFQUQgc2No
ZW1lRGVsZWdhdGVzKQogICAgIFFfUFJPUEVSVFkoUVN0cmluZyB1c2VyQWdlbnQgUkVBRCB1c2Vy
QWdlbnQgV1JJVEUgc2V0VXNlckFnZW50IE5PVElGWSB1c2VyQWdlbnRDaGFuZ2VkKQogICAgIFFf
UFJPUEVSVFkoZG91YmxlIGRldmljZVBpeGVsUmF0aW8gUkVBRCBkZXZpY2VQaXhlbFJhdGlvIFdS
SVRFIHNldERldmljZVBpeGVsUmF0aW8gTk9USUZZIGRldmljZVBpeGVsUmF0aW9DaGFuZ2VkKQpA
QCAtMzAzLDcgKzMwMyw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZGV2aWNlUGl4ZWxSYXRpbygp
IGNvbnN0OwogICAgIHZvaWQgc2V0RGV2aWNlUGl4ZWxSYXRpbyhkb3VibGUpOwogCi0gICAgUVdl
YlZpZXdwb3J0SW5mbyogdmlld3BvcnRJbmZvKCk7CisgICAgUVdlYktpdFRlc3QqIHRlc3QoKTsK
IAogICAgIFFXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSBjb25zdDsKICAgICBRV2ViTmF2
aWdhdGlvbkhpc3RvcnkqIG5hdmlnYXRpb25IaXN0b3J5KCkgY29uc3Q7CkBAIC0zNjAsNyArMzYw
LDcgQEAgcHJpdmF0ZToKICAgICBRUXVpY2tXZWJWaWV3KiBxX3B0cjsKICAgICBRUXVpY2tXZWJW
aWV3UHJpdmF0ZSogZF9wdHI7CiAgICAgUU9iamVjdCogc2NoZW1lUGFyZW50OwotICAgIFFXZWJW
aWV3cG9ydEluZm8qIG1fdmlld3BvcnRJbmZvOworICAgIFFXZWJLaXRUZXN0KiBtX3Rlc3Q7CiAK
ICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4
IGQzYmVjYTQ0YTZmYjU5YTI3MzZkZWEwYTZlYmU2N2NhMzVmYTY4OGEuLmViZDA2ZTNlYTQ3Njc0
MzYyMWEyNmNhMDQ0NjY2ZDhhYmY0ODhjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xh
c3MgV2ViUGFnZVByb3h5OwogfQogCiBjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7Ci1jbGFz
cyBRV2ViVmlld3BvcnRJbmZvOworY2xhc3MgUVdlYktpdFRlc3Q7CiAKIFFUX0JFR0lOX05BTUVT
UEFDRQogY2xhc3MgUVFtbENvbXBvbmVudDsKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgUVF1aWNr
V2ViVmlld1ByaXZhdGUgewogICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJWaWV3RXhwZXJpbWVu
dGFsOwogICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJQYWdlOwogICAgIGZyaWVuZCBjbGFzcyBR
V2ViUHJlZmVyZW5jZXNQcml2YXRlOwotICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlld3BvcnRJbmZv
OworICAgIGZyaWVuZCBjbGFzcyBRV2ViS2l0VGVzdDsKIAogcHVibGljOgogICAgIHN0YXRpYyBR
UXVpY2tXZWJWaWV3UHJpdmF0ZSogZ2V0KFFRdWlja1dlYlZpZXcqIHEpIHsgcmV0dXJuIHEtPmRf
cHRyLmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2Via2l0dGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJr
aXR0ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTBkYWE0Yzk1YWRiMWI5NzNhMzMxODc2YzMwOWZjNDhh
MjdkNGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2Via2l0dGVzdC5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmtpdHRlc3RfcC5oIgorCisjaW5jbHVk
ZSAiUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlRXZl
bnRIYW5kbGVyLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCisjaW5jbHVkZSAicXF1
aWNrd2Vidmlld19wX3AuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworUVdlYktpdFRl
c3Q6OlFXZWJLaXRUZXN0KFFRdWlja1dlYlZpZXdQcml2YXRlKiB3ZWJWaWV3UHJpdmF0ZSwgUU9i
amVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBtX3dlYlZpZXdQcml2
YXRlKHdlYlZpZXdQcml2YXRlKQoreworfQorCitRV2ViS2l0VGVzdDo6flFXZWJLaXRUZXN0KCkK
K3sKK30KKworYm9vbCBRV2ViS2l0VGVzdDo6dG91Y2hEb3VibGVUYXAoUU9iamVjdCogaXRlbSwg
cXJlYWwgeCwgcXJlYWwgeSwgaW50IGRlbGF5KQoreworICAgIGlmICghcW9iamVjdF9jYXN0PFFR
dWlja1dlYlZpZXcqPihpdGVtKSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugb25seSBzdXBwb3J0
IHRoZSBhY3R1YWwgd2ViIHZpZXcgZm9yIG5vdy4KKyAgICAgICAgLy8gUVRlc3Q6OnFXYXJuKCJU
b3VjaCBldmVudCBcIkRvdWJsZVRhcFwiIG5vdCBhY2NlcHRlZCBieSByZWNlaXZpbmcgaXRlbSIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGRlbGF5ID09IC0xKQor
ICAgICAgICBkZWxheSA9IDA7CisKKyAgICAvLyBpZiAoZGVsYXkgPiAwKQorICAgIC8vICAgICBR
VGVzdDo6cVdhaXQoZGVsYXkpOworCisgICAgUVBvaW50RiBsb2NhbFBvcyh4LCB5KTsKKworICAg
IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50IHBvaW50OworICAgIHBvaW50LnNldExhc3RQb3MobG9j
YWxQb3MpOworICAgIFFSZWN0RiB0b3VjaFJlY3QoMCwgMCwgNDAsIDQwKTsKKyAgICB0b3VjaFJl
Y3QubW92ZUNlbnRlcihsb2NhbFBvcyk7CisgICAgcG9pbnQuc2V0UmVjdCh0b3VjaFJlY3QpOwor
CisgICAgbV93ZWJWaWV3UHJpdmF0ZS0+cGFnZVZpZXctPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVE
b3VibGVUYXBFdmVudChwb2ludCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUVNpemUgUVdl
YktpdFRlc3Q6OmNvbnRlbnRzU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFTaXplKG1fd2Vi
Vmlld1ByaXZhdGUtPnBhZ2VWaWV3LT5jb250ZW50c1NpemUoKS50b1NpemUoKSk7Cit9CisKK1FW
YXJpYW50IFFXZWJLaXRUZXN0Ojpjb250ZW50c1NjYWxlKCkgY29uc3QKK3sKKyAgICBpZiAoUXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1By
aXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKSkKKyAgICAgICAgcmV0dXJuIGludGVy
YWN0aW9uRW5naW5lLT5jdXJyZW50Q1NTU2NhbGUoKTsKKworICAgIHJldHVybiBtX3dlYlZpZXdQ
cml2YXRlLT5hdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsKK30KKworUVZhcmlhbnQgUVdlYktpdFRl
c3Q6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlZpZXdQcml2
YXRlLT5hdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87Cit9CisKK1FWYXJpYW50IFFXZWJLaXRU
ZXN0Ojppbml0aWFsU2NhbGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRl
LT5hdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsKK30KKworUVZhcmlhbnQgUVdlYktpdFRlc3Q6Om1p
bmltdW1TY2FsZSgpIGNvbnN0Cit7CisgICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0
aW9uRW5naW5lKCkpCisgICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+bV9taW5pbXVt
U2NhbGU7CisKKyAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5taW5pbXVt
U2NhbGU7Cit9CisKK1FWYXJpYW50IFFXZWJLaXRUZXN0OjptYXhpbXVtU2NhbGUoKSBjb25zdAor
eworICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5l
ID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQorICAgICAg
ICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPm1fbWF4aW11bVNjYWxlOworCisgICAgcmV0dXJu
IG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0ZXMubWF4aW11bVNjYWxlOworfQorCitRVmFyaWFu
dCBRV2ViS2l0VGVzdDo6aXNTY2FsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhbV93ZWJW
aWV3UHJpdmF0ZS0+YXR0cmlidXRlcy51c2VyU2NhbGFibGU7Cit9CisKK1FWYXJpYW50IFFXZWJL
aXRUZXN0OjpsYXlvdXRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVNpemVGKG1fd2ViVmll
d1ByaXZhdGUtPmF0dHJpYnV0ZXMubGF5b3V0U2l6ZS53aWR0aCgpLCBtX3dlYlZpZXdQcml2YXRl
LT5hdHRyaWJ1dGVzLmxheW91dFNpemUuaGVpZ2h0KCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Via2l0dGVzdF9wLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0ZXN0X3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2M3MTgwYzE4
MTliNzdlZDIxNWE0NmFhNTViZDA2MjZkMDZmNWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Via2l0dGVzdF9wLmgKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYmtpdHRlc3RfcF9oCisjZGVmaW5lIHF3
ZWJraXR0ZXN0X3BfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCisjaW5jbHVkZSA8
UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVkZSA8UXRDb3JlL1FQb2ludGVyPgorI2luY2x1ZGUgPFF0
Q29yZS9RU2l6ZT4KKyNpbmNsdWRlIDxRdENvcmUvUVZhcmlhbnQ+CisjaW5jbHVkZSA8UXRRbWwv
UXRRbWw+CisjaW5jbHVkZSA8UXRRdWljay9xcXVpY2tpdGVtLmg+CisKK2NsYXNzIFFRdWlja1dl
YlZpZXdQcml2YXRlOworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViS2l0VGVzdCA6IHB1Ymxp
YyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorCisgICAgUV9QUk9QRVJUWShRU2l6ZSBjb250ZW50
c1NpemUgUkVBRCBjb250ZW50c1NpemUgTk9USUZZIGNvbnRlbnRzU2l6ZUNoYW5nZWQpCisKKyAg
ICBRX1BST1BFUlRZKFFWYXJpYW50IGNvbnRlbnRzU2NhbGUgUkVBRCBjb250ZW50c1NjYWxlIE5P
VElGWSBjb250ZW50c1NjYWxlQ2hhbmdlZCkKKworICAgIFFfUFJPUEVSVFkoUVZhcmlhbnQgZGV2
aWNlUGl4ZWxSYXRpbyBSRUFEIGRldmljZVBpeGVsUmF0aW8gTk9USUZZIHZpZXdwb3J0Q2hhbmdl
ZCkKKyAgICBRX1BST1BFUlRZKFFWYXJpYW50IGluaXRpYWxTY2FsZSBSRUFEIGluaXRpYWxTY2Fs
ZSBOT1RJRlkgdmlld3BvcnRDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoUVZhcmlhbnQgaXNTY2Fs
YWJsZSBSRUFEIGlzU2NhbGFibGUgTk9USUZZIHZpZXdwb3J0Q2hhbmdlZCkKKyAgICBRX1BST1BF
UlRZKFFWYXJpYW50IG1heGltdW1TY2FsZSBSRUFEIG1heGltdW1TY2FsZSBOT1RJRlkgdmlld3Bv
cnRDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoUVZhcmlhbnQgbWluaW11bVNjYWxlIFJFQUQgbWlu
aW11bVNjYWxlIE5PVElGWSB2aWV3cG9ydENoYW5nZWQpCisgICAgUV9QUk9QRVJUWShRVmFyaWFu
dCBsYXlvdXRTaXplIFJFQUQgbGF5b3V0U2l6ZSBOT1RJRlkgdmlld3BvcnRDaGFuZ2VkKQorCitz
aWduYWxzOgorICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZCgpOworICAgIHZvaWQgY29udGVu
dHNTY2FsZUNoYW5nZWQoKTsKKyAgICB2b2lkIGNvbnRlbnRzU2NhbGVDb21taXR0ZWQoKTsKKyAg
ICB2b2lkIHZpZXdwb3J0Q2hhbmdlZCgpOworCitwdWJsaWMgc2xvdHM6CisgICAgYm9vbCB0b3Vj
aERvdWJsZVRhcChRT2JqZWN0KiBpdGVtLCBxcmVhbCB4LCBxcmVhbCB5LCBpbnQgZGVsYXkgPSAt
MSk7CisKK3B1YmxpYzoKKyAgICBRV2ViS2l0VGVzdChRUXVpY2tXZWJWaWV3UHJpdmF0ZSogd2Vi
dmlld1ByaXZhdGUsIFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIHZpcnR1YWwgflFXZWJLaXRU
ZXN0KCk7CisKKyAgICBRU2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsKKyAgICBRVmFyaWFudCBj
b250ZW50c1NjYWxlKCkgY29uc3Q7CisKKyAgICBRVmFyaWFudCBkZXZpY2VQaXhlbFJhdGlvKCkg
Y29uc3Q7CisgICAgUVZhcmlhbnQgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CisgICAgUVZhcmlhbnQg
aXNTY2FsYWJsZSgpIGNvbnN0OworICAgIFFWYXJpYW50IGxheW91dFNpemUoKSBjb25zdDsKKyAg
ICBRVmFyaWFudCBtYXhpbXVtU2NhbGUoKSBjb25zdDsKKyAgICBRVmFyaWFudCBtaW5pbXVtU2Nh
bGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogbV93ZWJW
aWV3UHJpdmF0ZTsKK307CisKKyNlbmRpZiAvLyBxd2Via2l0dGVzdF9wCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWExNjczMmY1ZDBjYjdjMGYzYmI0YWU5M2I3MWZkODEx
Mzc1NzBhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgiCi0jaW5j
bHVkZSAicXdlYnZpZXdwb3J0aW5mb19wLmgiCi0KLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3Au
aCIKLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCi1RV2ViVmlld3BvcnRJbmZvOjpRV2ViVmlld3BvcnRJbmZvKFFRdWlja1dlYlZpZXdQ
cml2YXRlKiB3ZWJWaWV3UHJpdmF0ZSwgUU9iamVjdCogcGFyZW50KQotICAgIDogUU9iamVjdChw
YXJlbnQpCi0gICAgLCBtX3dlYlZpZXdQcml2YXRlKHdlYlZpZXdQcml2YXRlKQotewotfQotCi1R
V2ViVmlld3BvcnRJbmZvOjp+UVdlYlZpZXdwb3J0SW5mbygpCi17Ci19Ci0KLVFTaXplIFFXZWJW
aWV3cG9ydEluZm86OmNvbnRlbnRzU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFFTaXplKG1f
d2ViVmlld1ByaXZhdGUtPnBhZ2VWaWV3LT5jb250ZW50c1NpemUoKS50b1NpemUoKSk7Ci19Ci0K
LVFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmN1cnJlbnRTY2FsZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dl
YlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCi0gICAgICAgIHJldHVy
biBpbnRlcmFjdGlvbkVuZ2luZS0+Y3VycmVudENTU1NjYWxlKCk7Ci0KLSAgICByZXR1cm4gbV93
ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5pbml0aWFsU2NhbGU7Ci19Ci0KLVFWYXJpYW50IFFX
ZWJWaWV3cG9ydEluZm86OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAotewotICAgIHJldHVybiBt
X3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87Ci19Ci0KLVFWYXJp
YW50IFFXZWJWaWV3cG9ydEluZm86OmluaXRpYWxTY2FsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0ZXMuaW5pdGlhbFNjYWxlOwotfQotCi1RVmFyaWFu
dCBRV2ViVmlld3BvcnRJbmZvOjptaW5pbXVtU2NhbGUoKSBjb25zdAotewotICAgIGlmIChRdFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJp
dmF0ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQotICAgICAgICByZXR1cm4gaW50ZXJh
Y3Rpb25FbmdpbmUtPm1fbWluaW11bVNjYWxlOwotCi0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZh
dGUtPmF0dHJpYnV0ZXMubWluaW11bVNjYWxlOwotfQotCi1RVmFyaWFudCBRV2ViVmlld3BvcnRJ
bmZvOjptYXhpbXVtU2NhbGUoKSBjb25zdAotewotICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZSgpKQotICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPm1f
bWF4aW11bVNjYWxlOwotCi0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUtPmF0dHJpYnV0ZXMu
bWF4aW11bVNjYWxlOwotfQotCi1RVmFyaWFudCBRV2ViVmlld3BvcnRJbmZvOjppc1NjYWxhYmxl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gISFtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVzLnVz
ZXJTY2FsYWJsZTsKLX0KLQotUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6bGF5b3V0U2l6ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFFTaXplRihtX3dlYlZpZXdQcml2YXRlLT5hdHRyaWJ1dGVz
LmxheW91dFNpemUud2lkdGgoKSwgbV93ZWJWaWV3UHJpdmF0ZS0+YXR0cmlidXRlcy5sYXlvdXRT
aXplLmhlaWdodCgpKTsKLX0KLQotdm9pZCBRV2ViVmlld3BvcnRJbmZvOjpkaWRVcGRhdGVDb250
ZW50c1NpemUoKQotewotICAgIGVtaXQgY29udGVudHNTaXplVXBkYXRlZCgpOwotfQotCi12b2lk
IFFXZWJWaWV3cG9ydEluZm86OmRpZFVwZGF0ZUN1cnJlbnRTY2FsZSgpCi17Ci0gICAgZW1pdCBj
dXJyZW50U2NhbGVVcGRhdGVkKCk7Ci19Ci0KLXZvaWQgUVdlYlZpZXdwb3J0SW5mbzo6ZGlkVXBk
YXRlVmlld3BvcnRDb25zdHJhaW50cygpCi17Ci0gICAgZW1pdCB2aWV3cG9ydENvbnN0cmFpbnRz
VXBkYXRlZCgpOwotICAgIGVtaXQgY3VycmVudFNjYWxlVXBkYXRlZCgpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvX3AuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mb19wLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMDYwYmJlNjZiMTI2N2VhMWFiY2IyYTUxNzdi
NWQ2ZmY0ZTNlY2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvX3AuaAor
KysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVm
IHF3ZWJ2aWV3cG9ydGluZm9fcF9oCi0jZGVmaW5lIHF3ZWJ2aWV3cG9ydGluZm9fcF9oCi0KLSNp
bmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCi0KLSNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KLSNp
bmNsdWRlIDxRdENvcmUvUVBvaW50ZXI+Ci0jaW5jbHVkZSA8UXRDb3JlL1FTaXplPgotI2luY2x1
ZGUgPFF0Q29yZS9RVmFyaWFudD4KLSNpbmNsdWRlIDxRdFFtbC9RdFFtbD4KLQotY2xhc3MgUVF1
aWNrV2ViVmlld1ByaXZhdGU7Ci0KLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJWaWV3cG9ydElu
Zm8gOiBwdWJsaWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLSAgICBRX1BST1BFUlRZKFFTaXpl
IGNvbnRlbnRzU2l6ZSBSRUFEIGNvbnRlbnRzU2l6ZSBOT1RJRlkgY29udGVudHNTaXplVXBkYXRl
ZCkKLSAgICBRX1BST1BFUlRZKFFWYXJpYW50IGN1cnJlbnRTY2FsZSBSRUFEIGN1cnJlbnRTY2Fs
ZSBOT1RJRlkgY3VycmVudFNjYWxlVXBkYXRlZCkKLSAgICBRX1BST1BFUlRZKFFWYXJpYW50IGRl
dmljZVBpeGVsUmF0aW8gUkVBRCBkZXZpY2VQaXhlbFJhdGlvIE5PVElGWSB2aWV3cG9ydENvbnN0
cmFpbnRzVXBkYXRlZCkKLSAgICBRX1BST1BFUlRZKFFWYXJpYW50IGluaXRpYWxTY2FsZSBSRUFE
IGluaXRpYWxTY2FsZSBOT1RJRlkgdmlld3BvcnRDb25zdHJhaW50c1VwZGF0ZWQpCi0gICAgUV9Q
Uk9QRVJUWShRVmFyaWFudCBpc1NjYWxhYmxlIFJFQUQgaXNTY2FsYWJsZSBOT1RJRlkgdmlld3Bv
cnRDb25zdHJhaW50c1VwZGF0ZWQpCi0gICAgUV9QUk9QRVJUWShRVmFyaWFudCBtYXhpbXVtU2Nh
bGUgUkVBRCBtYXhpbXVtU2NhbGUgTk9USUZZIHZpZXdwb3J0Q29uc3RyYWludHNVcGRhdGVkKQot
ICAgIFFfUFJPUEVSVFkoUVZhcmlhbnQgbWluaW11bVNjYWxlIFJFQUQgbWluaW11bVNjYWxlIE5P
VElGWSB2aWV3cG9ydENvbnN0cmFpbnRzVXBkYXRlZCkKLSAgICBRX1BST1BFUlRZKFFWYXJpYW50
IGxheW91dFNpemUgUkVBRCBsYXlvdXRTaXplIE5PVElGWSB2aWV3cG9ydENvbnN0cmFpbnRzVXBk
YXRlZCkKLQotc2lnbmFsczoKLSAgICB2b2lkIGNvbnRlbnRzU2l6ZVVwZGF0ZWQoKTsKLSAgICB2
b2lkIGN1cnJlbnRTY2FsZVVwZGF0ZWQoKTsKLSAgICB2b2lkIHZpZXdwb3J0Q29uc3RyYWludHNV
cGRhdGVkKCk7Ci0KLXB1YmxpYzoKLSAgICBRV2ViVmlld3BvcnRJbmZvKFFRdWlja1dlYlZpZXdQ
cml2YXRlKiB3ZWJ2aWV3UHJpdmF0ZSwgUU9iamVjdCogcGFyZW50ID0gMCk7Ci0gICAgdmlydHVh
bCB+UVdlYlZpZXdwb3J0SW5mbygpOwotCi0gICAgUVNpemUgY29udGVudHNTaXplKCkgY29uc3Q7
Ci0gICAgUVZhcmlhbnQgY3VycmVudFNjYWxlKCkgY29uc3Q7Ci0gICAgUVZhcmlhbnQgZGV2aWNl
UGl4ZWxSYXRpbygpIGNvbnN0OwotICAgIFFWYXJpYW50IGluaXRpYWxTY2FsZSgpIGNvbnN0Owot
ICAgIFFWYXJpYW50IGlzU2NhbGFibGUoKSBjb25zdDsKLSAgICBRVmFyaWFudCBsYXlvdXRTaXpl
KCkgY29uc3Q7Ci0gICAgUVZhcmlhbnQgbWF4aW11bVNjYWxlKCkgY29uc3Q7Ci0gICAgUVZhcmlh
bnQgbWluaW11bVNjYWxlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRpZFVwZGF0ZUNvbnRlbnRzU2l6
ZSgpOwotICAgIHZvaWQgZGlkVXBkYXRlQ3VycmVudFNjYWxlKCk7Ci0gICAgdm9pZCBkaWRVcGRh
dGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7Ci0KLXByaXZhdGU6Ci0gICAgUVF1aWNrV2ViVmlld1By
aXZhdGUqIG1fd2ViVmlld1ByaXZhdGU7Ci19OwotCi0jZW5kaWYgLy8gcXdlYnZpZXdwb3J0aW5m
b19wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL1dlYlZpZXcvdHN0X2RvdWJsZVRhcFRvWm9vbS5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2RvdWJsZVRhcFRvWm9v
bS5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTA0ZjYwZmViMTE3YzZmZDNlYzBkOThhMzk2ZDI3ODNmNGQzYjRi
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZG91YmxlVGFwVG9ab29tLnFtbApAQCAtMCwwICsxLDEw
NiBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0V2Vi
S2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAxLjAKK2ltcG9ydCBUZXN0IDEu
MAoraW1wb3J0ICIuLi9jb21tb24iCisKK0l0ZW0geworICAgIFRlc3RXZWJWaWV3IHsKKyAgICAg
ICAgaWQ6IHdlYlZpZXcKKyAgICAgICAgd2lkdGg6IDQ4MAorICAgICAgICBoZWlnaHQ6IDcyMAor
CisgICAgICAgIHByb3BlcnR5IHZhcmlhbnQgcmVzdWx0CisKKyAgICAgICAgZXhwZXJpbWVudGFs
LnRlc3Qub25Db250ZW50c1NjYWxlQ29tbWl0dGVkOiBzY2FsZUNoYW5nZWQoKQorCisgICAgICAg
IHByb3BlcnR5IHZhcmlhbnQgY29udGVudDogImRhdGE6dGV4dC9odG1sLCIgKworICAgICAgICAg
ICAgIjxoZWFkPiIgKworICAgICAgICAgICAgIiAgICA8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29u
dGVudD0nd2lkdGg9ZGV2aWNlLXdpZHRoJz4iICsKKyAgICAgICAgICAgICI8L2hlYWQ+IiArCisg
ICAgICAgICAgICAiPGJvZHk+IiArCisgICAgICAgICAgICAiICAgIDxkaXYgaWQ9J3RhcmdldCcg
IiArCisgICAgICAgICAgICAiICAgICAgICAgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0
OjIwOyB0b3A6MjA7IHdpZHRoOjIwMDsgaGVpZ2h0OjIwMDsnPiIgKworICAgICAgICAgICAgIiAg
ICA8L2Rpdj4iICsKKyAgICAgICAgICAgICI8L2JvZHk+IgorCisgICAgICAgIHNpZ25hbCByZXN1
bHRSZWNlaXZlZAorICAgICAgICBzaWduYWwgc2NhbGVDaGFuZ2VkCisgICAgfQorCisgICAgU2ln
bmFsU3B5IHsKKyAgICAgICAgaWQ6IHJlc3VsdFNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcK
KyAgICAgICAgc2lnbmFsTmFtZTogInJlc3VsdFJlY2VpdmVkIgorICAgIH0KKworICAgIFNpZ25h
bFNweSB7CisgICAgICAgIGlkOiBzY2FsZVNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAg
ICAgICAgc2lnbmFsTmFtZTogInNjYWxlQ2hhbmdlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7
CisgICAgICAgIG5hbWU6ICJEb3VibGVUYXBUb1pvb20iCisKKyAgICAgICAgcHJvcGVydHkgdmFy
aWFudCB0ZXN0OiB3ZWJWaWV3LmV4cGVyaW1lbnRhbC50ZXN0CisKKyAgICAgICAgLy8gRGVsYXll
ZCB3aW5kb3dTaG93biB0byB3b3JrYXJvdW5kIHByb2JsZW1zIHdpdGggUXQ1IGluIGRlYnVnIG1v
ZGUuCisgICAgICAgIHdoZW46IGZhbHNlCisgICAgICAgIFRpbWVyIHsKKyAgICAgICAgICAgIHJ1
bm5pbmc6IHBhcmVudC53aW5kb3dTaG93bgorICAgICAgICAgICAgcmVwZWF0OiBmYWxzZQorICAg
ICAgICAgICAgaW50ZXJ2YWw6IDEKKyAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiBwYXJlbnQud2hl
biA9IHRydWUKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CisgICAgICAg
ICAgICByZXN1bHRTcHkuY2xlYXIoKQorICAgICAgICAgICAgc2NhbGVTcHkuY2xlYXIoKQorICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRTaXplKCkgeworICAgICAgICAgICAg
cmVzdWx0U3B5LmNsZWFyKCk7CisgICAgICAgICAgICB2YXIgcmVzdWx0OworCisgICAgICAgICAg
ICAgd2ViVmlldy5leHBlcmltZW50YWwuZXZhbHVhdGVKYXZhU2NyaXB0KAorICAgICAgICAgICAg
ICAgICJ3aW5kb3cuaW5uZXJXaWR0aCArICd4JyArIHdpbmRvdy5pbm5lckhlaWdodCIsCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oc2l6ZSkgeyB3ZWJWaWV3LnJlc3VsdFJlY2VpdmVkKCk7IHJl
c3VsdCA9IHNpemUgfSk7CisgICAgICAgICAgICByZXN1bHRTcHkud2FpdCgpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVsZW1lbnRS
ZWN0KGlkKSB7CisgICAgICAgICAgICByZXN1bHRTcHkuY2xlYXIoKTsKKyAgICAgICAgICAgIHZh
ciByZXN1bHQ7CisKKyAgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5ldmFsdWF0ZUph
dmFTY3JpcHQoCisgICAgICAgICAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsg
aWQgKyAiJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IiwKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbihyZWN0KSB7IHdlYlZpZXcucmVzdWx0UmVjZWl2ZWQoKTsgcmVzdWx0ID0gcmVjdCB9KTsK
KyAgICAgICAgICAgIHJlc3VsdFNweS53YWl0KCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG91YmxlVGFwQXRQb2ludCh4LCB5KSB7
CisgICAgICAgICAgICBzY2FsZVNweS5jbGVhcigpCisgICAgICAgICAgICB0ZXN0LnRvdWNoRG91
YmxlVGFwKHdlYlZpZXcsIHgsIHkpCisgICAgICAgICAgICBzY2FsZVNweS53YWl0KCkKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfYmFzaWMoKSB7CisgICAgICAgICAgICB3ZWJW
aWV3LnVybCA9IHdlYlZpZXcuY29udGVudAorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2Fp
dEZvckxvYWRTdWNjZWVkZWQoKSkKKworICAgICAgICAgICAgY29tcGFyZSgiNDgweDcyMCIsIGRv
Y3VtZW50U2l6ZSgpKQorCisgICAgICAgICAgICBjb21wYXJlKDEuMCwgdGVzdC5jb250ZW50c1Nj
YWxlKQorCisgICAgICAgICAgICB2YXIgcmVjdCA9IGVsZW1lbnRSZWN0KCJ0YXJnZXQiKTsKKyAg
ICAgICAgICAgIHZhciBuZXdTY2FsZSA9IHdlYlZpZXcud2lkdGggLyAocmVjdC53aWR0aCArIDIg
KiAxMCkgLy8gaW5mbGF0ZWQgYnkgMTBweAorICAgICAgICAgICAgZG91YmxlVGFwQXRQb2ludChy
ZWN0LmxlZnQgKyByZWN0LmhlaWdodCAvIDIsIHJlY3QudG9wICsgcmVjdC53aWR0aCAvIDIpCisK
KyAgICAgICAgICAgIGNvbXBhcmUobmV3U2NhbGUsIHRlc3QuY29udGVudHNTY2FsZSkKKyAgICAg
ICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAKaW5kZXggOTQ5YTU5MThjYTE2MjI3
M2IxNzg5MTdhZTEwYzc3MGMxN2Q2OWFhNC4uYjhjODVlZjRiYjFmYWJhZjA4OTU5ZTc3NTkwZDgy
YThmMWI5N2Q1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAKQEAgLTE5Miw2ICsxOTIsMTMgQEAg
Ym9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmFuaW1hdGVJdGVtUmVjdFZpc2libGUo
Y29uc3QgUVJlY3RGJiBpdGVtUmVjdCkKICAgICBpZiAoaXRlbVJlY3QgPT0gY3VycmVudEl0ZW1S
ZWN0VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IEludmVz
dGlnYXRlIHdoeSB0aGF0IGFuaW1hdGlvbiBkb2Vzbid0IHJ1biB3aGVuIHdlIGFyZSB1bmZvY3Vz
ZWQuCisgICAgaWYgKCFtX3ZpZXdwb3J0LT5pc1Zpc2libGUoKSB8fCAhbV92aWV3cG9ydC0+aGFz
Rm9jdXMoKSkgeworICAgICAgICAvLyBBcHBseSB0aGUgZW5kIHJlc3VsdCBpbW1lZGlhdGVseSB3
aGVuIHdlIGFyZSBub24tdmlzaWJsZS4KKyAgICAgICAgc2V0SXRlbVJlY3RWaXNpYmxlKGl0ZW1S
ZWN0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgbV9zY2FsZUFuaW1hdGlv
bi0+c2V0RHVyYXRpb24oa1NjYWxlQW5pbWF0aW9uRHVyYXRpb25NaWxsaXMpOwogICAgIG1fc2Nh
bGVBbmltYXRpb24tPnNldEVhc2luZ0N1cnZlKFFFYXNpbmdDdXJ2ZTo6T3V0Q3ViaWMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lLmgKaW5kZXggOGE3MjBmMzRiOTcyNTMyYjRhZjQ3MmNhMmUyZmJlZTZiNTA2
MjAwMi4uODc2YWI2OTAxODJmMTA4ZTNkMTA3NTU1MjJlOGRlYTE0MDc0NGRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBRUXVpY2tXZWJWaWV3OwogY2xhc3Mg
UVdoZWVsRXZlbnQ7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLWNsYXNzIFFXZWJWaWV3cG9ydEluZm87
CitjbGFzcyBRV2ViS2l0VGVzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTExNiw3ICsx
MTYsNyBAQCBwcml2YXRlIFFfU0xPVFM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFZp
ZXdwb3J0VXBkYXRlRGVmZXJyZXI7Ci0gICAgZnJpZW5kIGNsYXNzIDo6UVdlYlZpZXdwb3J0SW5m
bzsKKyAgICBmcmllbmQgY2xhc3MgOjpRV2ViS2l0VGVzdDsKIAogICAgIFFRdWlja1dlYlZpZXcq
IGNvbnN0IG1fdmlld3BvcnQ7CiAgICAgUVF1aWNrV2ViUGFnZSogY29uc3QgbV9jb250ZW50Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMzYTVj
Mzk3MzFkMjg1Zjg3M2YxZTQyMzY2YzU5YzMyM2Y4YzU2NjQuLjkzMTc5YzA4NmQ4ZTcyNzU0YmQ5
MjBkMGQwNjlmZWJmNDZlMjgyMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNS0xNSAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBBZGQg
aW5mcmEgZm9yIHRlc3RpbmcgZG91YmxlLXRhcCB0byB6b29tIGZ1bmN0aW9uYWxpdHkgZXRjCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQ3NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJWaWV3
cG9ydEluZm8gY2xhc3Mgd2FzIHJlbmFtZWQgdG8gUVdlYktpdFRlc3QgaW4gcHJlcGFyYXRpb24K
KyAgICAgICAgb2YgYmVjb21pbmcgYSBzZXBhcmF0ZSBtb2R1bGUuIEFkYXB0IHRoZSB1c2UgQVBJ
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9WaWV3cG9ydEluZm9JdGVtLnFtbDoKKwogMjAxMi0w
NS0xNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIElu
dHJvZHVjZSBFTkFCTEVfQ1NTX1ZBUklBQkxFUyBjb21waWxlIGZsYWcuCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKaW5kZXggNTUxM2I5YmExNGU5NjVhN2U1YzQz
ODA3NmE2NzUzMjkwNTNhNDJmNS4uOTZkNTNkMzA5OTI1MzIwNDUyOTYxMjUwZTMxYzU1NTdiMzgx
NTE3OCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cu
cW1sCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApAQCAt
MzU2LDYgKzM1Niw2IEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICBib3R0b206IHBhcmVudC5i
b3R0b20KICAgICAgICAgfQogICAgICAgICB2aXNpYmxlOiBmYWxzZQotICAgICAgICB2aWV3cG9y
dEluZm8gOiB3ZWJWaWV3LmV4cGVyaW1lbnRhbC52aWV3cG9ydEluZm8KKyAgICAgICAgdGVzdCA6
IHdlYlZpZXcuZXhwZXJpbWVudGFsLnRlc3QKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9xdC9xbWwvVmlld3BvcnRJbmZvSXRlbS5xbWwgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9xbWwvVmlld3BvcnRJbmZvSXRlbS5xbWwKaW5kZXggNzdmNzM0Y2FkNDZjYjBlMTVmMzE1
MzU0ZDM1MWU5YjUwY2I2MThlMS4uODhhYzAxMjc1MjkzMWE5MzY3ODQ3MDY0NWU0ZDBjYjJmNTRm
NThmNyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1ZpZXdwb3J0SW5mb0l0
ZW0ucW1sCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9WaWV3cG9ydEluZm9JdGVtLnFt
bApAQCAtMiw3ICsyLDcgQEAgaW1wb3J0IFF0UXVpY2sgMi4wCiBpbXBvcnQgUXRXZWJLaXQgMy4w
CiAKIFJlY3RhbmdsZSB7Ci0gICAgcHJvcGVydHkgdmFyIHZpZXdwb3J0SW5mbworICAgIHByb3Bl
cnR5IHZhciB0ZXN0CiAKICAgICBjb2xvcjogImJsYWNrIgogICAgIG9wYWNpdHk6IDAuOApAQCAt
MjUsMjggKzI1LDI4IEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICBpZDogY3VycmVudFNjYWxl
TGFiZWwKICAgICAgICAgICAgIGFuY2hvcnMudG9wOiB2aWV3cG9ydEluZm9MYWJlbC5ib3R0b20K
ICAgICAgICAgICAgIGFuY2hvcnMudG9wTWFyZ2luOiAzMAotICAgICAgICAgICAgdGV4dDogIkN1
cnJlbnQgc2NhbGU6ICIgKyBwYXJzZUZsb2F0KHZpZXdwb3J0SW5mby5jdXJyZW50U2NhbGUudG9G
aXhlZCg0KSkKKyAgICAgICAgICAgIHRleHQ6ICJDdXJyZW50IHNjYWxlOiAiICsgcGFyc2VGbG9h
dCh0ZXN0LmNvbnRlbnRzU2NhbGUudG9GaXhlZCg0KSkKICAgICAgICAgICAgIGZvbnQuZmFtaWx5
OiBwYXJlbnQuZm9udEZhbWlseQogICAgICAgICAgICAgY29sb3I6IHBhcmVudC5mb250Q29sb3IK
ICAgICAgICAgfQogICAgICAgICBUZXh0IHsKICAgICAgICAgICAgIGlkOiBpbml0aWFsU2NhbGVM
YWJlbAogICAgICAgICAgICAgYW5jaG9ycy50b3A6IGN1cnJlbnRTY2FsZUxhYmVsLmJvdHRvbQot
ICAgICAgICAgICAgdGV4dDogIkluaXRpYWwgc2NhbGU6ICIgKyBwYXJzZUZsb2F0KHZpZXdwb3J0
SW5mby5pbml0aWFsU2NhbGUudG9GaXhlZCg0KSkKKyAgICAgICAgICAgIHRleHQ6ICJJbml0aWFs
IHNjYWxlOiAiICsgcGFyc2VGbG9hdCh0ZXN0LmluaXRpYWxTY2FsZS50b0ZpeGVkKDQpKQogICAg
ICAgICAgICAgZm9udC5mYW1pbHk6IHBhcmVudC5mb250RmFtaWx5CiAgICAgICAgICAgICBjb2xv
cjogcGFyZW50LmZvbnRDb2xvcgogICAgICAgICB9CiAgICAgICAgIFRleHQgewogICAgICAgICAg
ICAgaWQ6IG1pbmltdW1TY2FsZUxhYmVsCiAgICAgICAgICAgICBhbmNob3JzLnRvcDogaW5pdGlh
bFNjYWxlTGFiZWwuYm90dG9tCi0gICAgICAgICAgICB0ZXh0OiAiTWluaW11bSBzY2FsZTogIiAr
IHBhcnNlRmxvYXQodmlld3BvcnRJbmZvLm1pbmltdW1TY2FsZS50b0ZpeGVkKDQpKQorICAgICAg
ICAgICAgdGV4dDogIk1pbmltdW0gc2NhbGU6ICIgKyBwYXJzZUZsb2F0KHRlc3QubWluaW11bVNj
YWxlLnRvRml4ZWQoNCkpCiAgICAgICAgICAgICBmb250LmZhbWlseTogcGFyZW50LmZvbnRGYW1p
bHkKICAgICAgICAgICAgIGNvbG9yOiBwYXJlbnQuZm9udENvbG9yCiAgICAgICAgIH0KICAgICAg
ICAgVGV4dCB7CiAgICAgICAgICAgICBpZDogbWF4aW11bVNjYWxlTGFiZWwKICAgICAgICAgICAg
IGFuY2hvcnMudG9wOiBtaW5pbXVtU2NhbGVMYWJlbC5ib3R0b20KLSAgICAgICAgICAgIHRleHQ6
ICJNYXhpbXVtIHNjYWxlOiAiICsgcGFyc2VGbG9hdCh2aWV3cG9ydEluZm8ubWF4aW11bVNjYWxl
LnRvRml4ZWQoNCkpCisgICAgICAgICAgICB0ZXh0OiAiTWF4aW11bSBzY2FsZTogIiArIHBhcnNl
RmxvYXQodGVzdC5tYXhpbXVtU2NhbGUudG9GaXhlZCg0KSkKICAgICAgICAgICAgIGZvbnQuZmFt
aWx5OiBwYXJlbnQuZm9udEZhbWlseQogICAgICAgICAgICAgY29sb3I6IHBhcmVudC5mb250Q29s
b3IKICAgICAgICAgfQpAQCAtNTQsMjEgKzU0LDIxIEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAg
ICBpZDogZGV2aWNlUGl4ZWxSYXRpb0xhYmVsCiAgICAgICAgICAgICBhbmNob3JzLnRvcDogbWF4
aW11bVNjYWxlTGFiZWwuYm90dG9tCiAgICAgICAgICAgICBhbmNob3JzLnRvcE1hcmdpbjogMzAK
LSAgICAgICAgICAgIHRleHQ6ICJEZXZpY2UgcGl4ZWwgcmF0aW86ICIgKyBwYXJzZUZsb2F0KHZp
ZXdwb3J0SW5mby5kZXZpY2VQaXhlbFJhdGlvLnRvRml4ZWQoNCkpCisgICAgICAgICAgICB0ZXh0
OiAiRGV2aWNlIHBpeGVsIHJhdGlvOiAiICsgcGFyc2VGbG9hdCh0ZXN0LmRldmljZVBpeGVsUmF0
aW8udG9GaXhlZCg0KSkKICAgICAgICAgICAgIGZvbnQuZmFtaWx5OiBwYXJlbnQuZm9udEZhbWls
eQogICAgICAgICAgICAgY29sb3I6IHBhcmVudC5mb250Q29sb3IKICAgICAgICAgfQogICAgICAg
ICBUZXh0IHsKICAgICAgICAgICAgIGlkOiBjb250ZW50c1NpemVMYWJlbAogICAgICAgICAgICAg
YW5jaG9ycy50b3A6IGRldmljZVBpeGVsUmF0aW9MYWJlbC5ib3R0b20KLSAgICAgICAgICAgIHRl
eHQ6ICJDb250ZW50cyBzaXplOiAiICsgdmlld3BvcnRJbmZvLmNvbnRlbnRzU2l6ZS53aWR0aCAr
ICJ4IiArIHZpZXdwb3J0SW5mby5jb250ZW50c1NpemUuaGVpZ2h0CisgICAgICAgICAgICB0ZXh0
OiAiQ29udGVudHMgc2l6ZTogIiArIHRlc3QuY29udGVudHNTaXplLndpZHRoICsgIngiICsgdGVz
dC5jb250ZW50c1NpemUuaGVpZ2h0CiAgICAgICAgICAgICBmb250LmZhbWlseTogcGFyZW50LmZv
bnRGYW1pbHkKICAgICAgICAgICAgIGNvbG9yOiBwYXJlbnQuZm9udENvbG9yCiAgICAgICAgIH0K
ICAgICAgICAgVGV4dCB7CiAgICAgICAgICAgICBpZDogbGF5b3V0U2l6ZUxhYmVsCiAgICAgICAg
ICAgICBhbmNob3JzLnRvcDogY29udGVudHNTaXplTGFiZWwuYm90dG9tCi0gICAgICAgICAgICB0
ZXh0OiAiVmlld3BvcnQgbGF5b3V0IHNpemU6ICIgKyB2aWV3cG9ydEluZm8ubGF5b3V0U2l6ZS53
aWR0aCArICJ4IiArIHZpZXdwb3J0SW5mby5sYXlvdXRTaXplLmhlaWdodAorICAgICAgICAgICAg
dGV4dDogIlZpZXdwb3J0IGxheW91dCBzaXplOiAiICsgdGVzdC5sYXlvdXRTaXplLndpZHRoICsg
IngiICsgdGVzdC5sYXlvdXRTaXplLmhlaWdodAogICAgICAgICAgICAgZm9udC5mYW1pbHk6IHBh
cmVudC5mb250RmFtaWx5CiAgICAgICAgICAgICBjb2xvcjogcGFyZW50LmZvbnRDb2xvcgogICAg
ICAgICB9CkBAIC03Niw3ICs3Niw3IEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICBpZDogc2Nh
bGFibGVMYWJlbAogICAgICAgICAgICAgYW5jaG9ycy50b3A6IGxheW91dFNpemVMYWJlbC5ib3R0
b20KICAgICAgICAgICAgIGFuY2hvcnMudG9wTWFyZ2luOiAzMAotICAgICAgICAgICAgdGV4dDog
IlZpZXcgIiArICh2aWV3cG9ydEluZm8uaXNTY2FsYWJsZSA/ICJpcyAiIDogImlzIG5vdCAiICkg
KyAic2NhbGFibGUuIgorICAgICAgICAgICAgdGV4dDogIlZpZXcgIiArICh0ZXN0LmlzU2NhbGFi
bGUgPyAiaXMgIiA6ICJpcyBub3QgIiApICsgInNjYWxhYmxlLiIKICAgICAgICAgICAgIGZvbnQu
ZmFtaWx5OiBwYXJlbnQuZm9udEZhbWlseQogICAgICAgICAgICAgY29sb3I6IHBhcmVudC5mb250
Q29sb3IKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="148161"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>