<?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>52175</bug_id>
          
          <creation_ts>2011-01-10 15:54:17 -0800</creation_ts>
          <short_desc>Use a pull model for view state changes</short_desc>
          <delta_ts>2011-01-10 16:47:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332016</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-10 15:54:17 -0800</bug_when>
    <thetext>Use a pull model for view state changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332020</commentid>
    <comment_count>1</comment_count>
      <attachid>78465</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-10 15:58:39 -0800</bug_when>
    <thetext>Created attachment 78465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332024</commentid>
    <comment_count>2</comment_count>
      <attachid>78465</attachid>
    <who name="">mitz</who>
    <bug_when>2011-01-10 16:04:40 -0800</bug_when>
    <thetext>Comment on attachment 78465
Patch

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

&gt; WebKit2/UIProcess/WebPageProxy.h:176
&gt; +    enum ViewStateFlags {
&gt; +        IsViewWindowActive = 1 &lt;&lt; 0,
&gt; +        IsViewFocused = 1 &lt;&lt; 1,
&gt; +        IsViewVisible = 1 &lt;&lt; 2,
&gt; +        IsViewInWindow = 1 &lt;&lt; 3
&gt; +    };

It’s not good that the value names read like questions.

&gt; WebKit2/UIProcess/WebPageProxy.h:177
&gt; +    void viewStateDidChange(unsigned flags);

It would be better to have a typedef for this instead of using unsigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332039</commentid>
    <comment_count>3</comment_count>
      <attachid>78465</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-01-10 16:40:34 -0800</bug_when>
    <thetext>Comment on attachment 78465
Patch

r=me, though please consider making the changes mitz advised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332044</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-10 16:47:23 -0800</bug_when>
    <thetext>Committed r75452: &lt;http://trac.webkit.org/changeset/75452&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78465</attachid>
            <date>2011-01-10 15:58:39 -0800</date>
            <delta_ts>2011-01-10 16:40:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52175-20110110155837.patch</filename>
            <type>text/plain</type>
            <size>27850</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTQ0NCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzEgQEAKKzIwMTEtMDEtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgYSBwdWxsIG1vZGVsIGZvciB2aWV3IHN0YXRlIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMTc1CisKKyAgICAgICAgSW5zdGVh
ZCBvZiBoYXZpbmcgdGhlIFdLVmlldyBjYWxsIHNldEZvY3VzZWQsIHNldEFjdGl2ZSBldGMgb24g
dGhlIFdlYlBhZ2VQcm94eSwgdGhlCisgICAgICAgIFdLVmlldyBub3cgc2ltcGx5IGluZm9ybXMg
dGhlIFdlYlBhZ2VQcm94eSB3aGF0IGhhcyBjaGFuZ2VkLCB1c2luZyB0aGUgV2ViUGFnZVByb3h5
Ojp2aWV3U3RhdGVEaWRDaGFuZ2UKKyAgICAgICAgZnVuY3Rpb24uIFRoZSBXZWJQYWdlUHJveHkg
Y2FuIHRoZW4gZmV0Y2ggdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIHVzaW5nIG5ld2x5IGFkZGVk
IFBhZ2VDbGllbnQgZnVuY3Rpb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnZpZXdTaXplKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld1dpbmRvd0FjdGl2ZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdGb2N1c2VkKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6aXNWaWV3SW5XaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpw
YWdlR3JvdXBSZWY6XSk6CisgICAgICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0p
OgorICAgICAgICAoLVtXS1ZpZXcgcmVzaWduRmlyc3RSZXNwb25kZXJdKToKKyAgICAgICAgKC1b
V0tWaWV3IHZpZXdEaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKC1bV0tWaWV3IF93aW5kb3dE
aWRCZWNvbWVLZXk6XSk6CisgICAgICAgICgtW1dLVmlldyBfd2luZG93RGlkUmVzaWduS2V5Ol0p
OgorICAgICAgICAoLVtXS1ZpZXcgdmlld0RpZEhpZGVdKToKKyAgICAgICAgKC1bV0tWaWV3IHZp
ZXdEaWRVbmhpZGVdKToKKyAgICAgICAgKC1bV0tWaWV3IF9pc0ZvY3VzZWRdKToKKyAgICAgICAg
KC1bV0tWaWV3IF9kaWRSZWxhdW5jaFByb2Nlc3NdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBo
aWNzd2t2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dLVmlldzo6Zm9jdXNJbkV2ZW50KToK
KyAgICAgICAgKFFHcmFwaGljc1dLVmlldzo6Zm9jdXNPdXRFdmVudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQ
YWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6dmlld1NpemUpOgorICAgICAg
ICAoUVdLUGFnZVByaXZhdGU6OmlzVmlld1dpbmRvd0FjdGl2ZSk6CisgICAgICAgIChRV0tQYWdl
UHJpdmF0ZTo6aXNWaWV3Rm9jdXNlZCk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6aXNWaWV3
VmlzaWJsZSk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6aXNWaWV3SW5XaW5kb3cpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6b25TZXRGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6b25LaWxsRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Om9uU2hvd1dp
bmRvd0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dXBkYXRlQWN0aXZlU3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp2aWV3U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXc6OmlzVmlld1dpbmRvd0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1ZpZXdWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNWaWV3SW5XaW5kb3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpkaWRSZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpzZXRJc0luV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcu
aDoKKwogMjAxMS0wMS0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRG9uJ3QgcGFzcyBhIHJlZmVyZW5jZSB0eXBlIHRvIHZhX3N0YXJ0CkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCShyZXZpc2lvbiA3NTQyMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMjEgQEAgY2xhc3MgUGFnZUNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCisgICAgLy8gUmV0
dXJuIHRoZSBzaXplIG9mIHRoZSB2aWV3IHRoZSBwYWdlIGlzIGFzc29jaWF0ZWQgd2l0aC4KKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSA9IDA7CisKKyAgICAvLyBSZXR1
cm4gd2hldGhlciB0aGUgdmlldydzIGNvbnRhaW5pbmcgd2luZG93IGlzIGFjdGl2ZS4KKyAgICB2
aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgPSAwOworCisgICAgLy8gUmV0dXJuIHdo
ZXRoZXIgdGhlIHZpZXcgaXMgZm9jdXNlZC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNl
ZCgpID0gMDsKKworICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIHZpc2libGUuCisg
ICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKSA9IDA7CisKKyAgICAvLyBSZXR1cm4gd2hl
dGhlciB0aGUgdmlldyBpcyBpbiBhIHdpbmRvdy4KKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3SW5X
aW5kb3coKSA9IDA7CisgICAgCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgPSAwOwogCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gNzU0MjIpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDE0ICsyNDIsMTQgQEAg
dm9pZCBXZWJDb250ZXh0Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvYwogICAgIG1fcHJvY2VzcyA9
IDA7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShXZWJQYWdl
R3JvdXAqIHBhZ2VHcm91cCkKK1dlYlBhZ2VQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKICAg
ICBlbnN1cmVXZWJQcm9jZXNzKCk7CiAKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcGFn
ZUdyb3VwID0gbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpOwogCi0gICAgcmV0dXJuIG1fcHJvY2Vz
cy0+Y3JlYXRlV2ViUGFnZSh0aGlzLCBwYWdlR3JvdXApOworICAgIHJldHVybiBtX3Byb2Nlc3Mt
PmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgdGhpcywgcGFnZUdyb3VwKTsKIH0KIAogdm9pZCBX
ZWJDb250ZXh0OjpyZWxhdW5jaFByb2Nlc3NJZk5lY2Vzc2FyeSgpCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oCShyZXZpc2lvbiA3NTQyMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSopOwogICAgIHZvaWQgcHJv
Y2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopOwogCi0gICAgV2ViUGFnZVByb3h5KiBjcmVh
dGVXZWJQYWdlKFdlYlBhZ2VHcm91cCogPSAwKTsKKyAgICBXZWJQYWdlUHJveHkqIGNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCosIFdlYlBhZ2VHcm91cCopOwogCiAgICAgdm9pZCByZWxhdW5jaFBy
b2Nlc3NJZk5lY2Vzc2FyeSgpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDc1NDIyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsMTkgKzg1LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3Rh
dGljIFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyIHdlYlBhZ2VQcm94eUNvdW50ZXIoIldlYlBh
Z2VQcm94eSIpOwogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJv
eHk6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwg
dWludDY0X3QgcGFnZUlEKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6
Y3JlYXRlKFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBh
Z2VHcm91cCogcGFnZUdyb3VwLCB1aW50NjRfdCBwYWdlSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJQYWdlUHJveHkoY29udGV4dCwgcGFnZUdyb3VwLCBwYWdlSUQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBjb250ZXh0LCBwYWdl
R3JvdXAsIHBhZ2VJRCkpOwogfQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShXZWJDb250
ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgdWludDY0X3QgcGFnZUlEKQot
ICAgIDogbV9wYWdlQ2xpZW50KDApCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50KiBwYWdlQ2xpZW50LCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VH
cm91cCwgdWludDY0X3QgcGFnZUlEKQorICAgIDogbV9wYWdlQ2xpZW50KHBhZ2VDbGllbnQpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkKICAg
ICAsIG1fbWFpbkZyYW1lKDApCiAgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgp
KQogICAgICwgbV9lc3RpbWF0ZWRQcm9ncmVzcygwKQotICAgICwgbV9pc0luV2luZG93KGZhbHNl
KQorICAgICwgbV9pc0luV2luZG93KG1fcGFnZUNsaWVudC0+aXNWaWV3SW5XaW5kb3coKSkKKyAg
ICAsIG1faXNWaXNpYmxlKG1fcGFnZUNsaWVudC0+aXNWaWV3VmlzaWJsZSgpKQogICAgICwgbV9i
YWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUodGhpcykpCiAgICAgLCBt
X3RleHRab29tRmFjdG9yKDEpCiAgICAgLCBtX3BhZ2Vab29tRmFjdG9yKDEpCkBAIC0xNTgsMTEg
KzE1OSw2IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojppc1ZhbGlkKCkKICAgICByZXR1cm4gbV9pc1Zh
bGlkOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUNsaWVudChQYWdlQ2xpZW50KiBw
YWdlQ2xpZW50KQotewotICAgIG1fcGFnZUNsaWVudCA9IHBhZ2VDbGllbnQ7Ci19Ci0KIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXREcmF3aW5nQXJlYShQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+
IGRyYXdpbmdBcmVhKQogewogICAgIGlmIChkcmF3aW5nQXJlYSA9PSBtX2RyYXdpbmdBcmVhKQpA
QCAtNDQ1LDExICs0NDEsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdzVHJhbnNwYXJl
bnRCYQogICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERyYXdz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKSwgbV9wYWdl
SUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9jdXNlZChib29sIGlzRm9jdXNlZCkK
K3ZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UodW5zaWduZWQgZmxhZ3MpCiB7
CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvY3VzZWQoaXNGb2N1c2VkKSwgbV9wYWdlSUQpOwor
CisgICAgaWYgKGZsYWdzICYgSXNWaWV3Rm9jdXNlZCkKKyAgICAgICAgcHJvY2VzcygpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb2N1c2VkKG1fcGFnZUNsaWVudC0+aXNWaWV3Rm9jdXNl
ZCgpKSwgbV9wYWdlSUQpOworCisgICAgaWYgKGZsYWdzICYgSXNWaWV3V2luZG93QWN0aXZlKQor
ICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2ZShtX3Bh
Z2VDbGllbnQtPmlzVmlld1dpbmRvd0FjdGl2ZSgpKSwgbV9wYWdlSUQpOworCisgICAgaWYgKGZs
YWdzICYgSXNWaWV3VmlzaWJsZSkgeworICAgICAgICBib29sIGlzVmlzaWJsZSA9IG1fcGFnZUNs
aWVudC0+aXNWaWV3VmlzaWJsZSgpOworICAgICAgICBpZiAoaXNWaXNpYmxlICE9IG1faXNWaXNp
YmxlKSB7CisgICAgICAgICAgICBtX2lzVmlzaWJsZSA9IGlzVmlzaWJsZTsKKyAgICAgICAgICAg
IG1fZHJhd2luZ0FyZWEtPnNldFBhZ2VJc1Zpc2libGUoaXNWaXNpYmxlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChmbGFncyAmIElzVmlld0luV2luZG93KSB7CisgICAgICAgIGJvb2wg
aXNJbldpbmRvdyA9IG1fcGFnZUNsaWVudC0+aXNWaWV3SW5XaW5kb3coKTsKKyAgICAgICAgaWYg
KG1faXNJbldpbmRvdyAhPSBpc0luV2luZG93KSB7CisgICAgICAgICAgICBtX2lzSW5XaW5kb3cg
PSBpc0luV2luZG93OworICAgICAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRJc0luV2luZG93KGlzSW5XaW5kb3cpLCBtX3BhZ2VJRCk7CisgICAgICAgIH0KKyAg
ICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJk
KQpAQCAtNDU5LDEzICs0NzYsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3Vz
KGJvb2wgCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFs
Rm9jdXMoZm9yd2FyZCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldEFj
dGl2ZShib29sIGFjdGl2ZSkKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZlKGFjdGl2
ZSksIG1fcGFnZUlEKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd1Jlc2l6ZXJT
aXplKGNvbnN0IEludFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQogewogICAgIGlmICghaXNWYWxp
ZCgpKQpAQCAtNDg4LDE3ICs0OTgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRD
b21tYW5kKGNvCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRl
RWRpdENvbW1hbmQoY29tbWFuZE5hbWUpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCi12b2lkIFdlYlBh
Z2VQcm94eTo6c2V0SXNJbldpbmRvdyhib29sIGlzSW5XaW5kb3cpCi17Ci0gICAgaWYgKG1faXNJ
bldpbmRvdyA9PSBpc0luV2luZG93KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9pc0lu
V2luZG93ID0gaXNJbldpbmRvdzsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNJbldpbmRvdyhp
c0luV2luZG93KSwgbV9wYWdlSUQpOwotfQotCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZVdpbmRvd0lzVmlzaWJsZShib29sIHdpbmRvd0lzVmlzaWJsZSkKIHsK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3NTQyMikKKysrIFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOCArMTA2
LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcAogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUGFnZTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqLCBXZWJQYWdlR3JvdXAq
LCB1aW50NjRfdCBwYWdlSUQpOwotCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5
PiBjcmVhdGUoUGFnZUNsaWVudCosIFdlYkNvbnRleHQqLCBXZWJQYWdlR3JvdXAqLCB1aW50NjRf
dCBwYWdlSUQpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94eSgpOwogCiAgICAgdWludDY0X3Qg
cGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KQEAgLTEyNSw3ICsxMjQsNiBAQCBw
dWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yUHJveHkqIGluc3BlY3RvcigpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHNldFBhZ2VDbGllbnQoUGFnZUNsaWVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNv
bnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50Kik7CiAgICAgdm9p
ZCBpbml0aWFsaXplRmluZENsaWVudChjb25zdCBXS1BhZ2VGaW5kQ2xpZW50Kik7CiAgICAgdm9p
ZCBpbml0aWFsaXplRm9ybUNsaWVudChjb25zdCBXS1BhZ2VGb3JtQ2xpZW50Kik7CkBAIC0xNjcs
MTIgKzE2NSwxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkcmF3c1RyYW5zcGFyZW50QmFja2dyb3Vu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7IH0KICAgICB2
b2lkIHNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wpOwogCi0gICAgdm9pZCBzZXRG
b2N1c2VkKGJvb2wpOwogICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wpOwotICAgIHZvaWQg
c2V0QWN0aXZlKGJvb2wpOwotICAgIHZvaWQgc2V0SXNJbldpbmRvdyhib29sKTsKICAgICB2b2lk
IHNldFdpbmRvd1Jlc2l6ZXJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAorICAgIGVu
dW0gVmlld1N0YXRlRmxhZ3MgeworICAgICAgICBJc1ZpZXdXaW5kb3dBY3RpdmUgPSAxIDw8IDAs
CisgICAgICAgIElzVmlld0ZvY3VzZWQgPSAxIDw8IDEsCisgICAgICAgIElzVmlld1Zpc2libGUg
PSAxIDw8IDIsCisgICAgICAgIElzVmlld0luV2luZG93ID0gMSA8PCAzCisgICAgfTsKKyAgICB2
b2lkIHZpZXdTdGF0ZURpZENoYW5nZSh1bnNpZ25lZCBmbGFncyk7CisKICAgICB2b2lkIGV4ZWN1
dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKTsKICAgICB2b2lkIHZhbGlk
YXRlTWVudUl0ZW0oY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7CiAKQEAgLTMxOCw3ICszMjEs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlUHJveHkoV2ViQ29u
dGV4dCosIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQqLCBXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKiwgdWludDY0X3QgcGFnZUlE
KTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQog
CkBAIC01MjAsNiArNTIzLDkgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIHRoZSB3ZWIgcGFn
ZSBpcyBjb250YWluZWQgaW4gYSB0b3AtbGV2ZWwgd2luZG93LgogICAgIGJvb2wgbV9pc0luV2lu
ZG93OwogCisgICAgLy8gV2hldGhlciB0aGUgcGFnZSBpcyB2aXNpYmxlOyBpZiB0aGUgYmFja2lu
ZyB2aWV3IGlzIHZpc2libGUgYW5kIGluc2VydGVkIGludG8gYSB3aW5kb3cuCisgICAgYm9vbCBt
X2lzVmlzaWJsZTsKKwogICAgIGJvb2wgbV9jYW5Hb0JhY2s7CiAgICAgYm9vbCBtX2NhbkdvRm9y
d2FyZDsKICAgICBSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gNzU0MjIp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDQsMTIgKzE0NCwxMiBAQCBXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZSh1CiAgICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKS5nZXQoKTsKIH0KIAotV2Vi
UGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoV2ViQ29udGV4dCogY29u
dGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXApCitXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQ
cm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBXZWJDb250ZXh0KiBj
b250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKICAgICBBU1NFUlQoY29udGV4dC0+
cHJvY2VzcygpID09IHRoaXMpOwogCiAgICAgdW5zaWduZWQgcGFnZUlEID0gZ2VuZXJhdGVQYWdl
SUQoKTsKLSAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5Ojpj
cmVhdGUoY29udGV4dCwgcGFnZUdyb3VwLCBwYWdlSUQpOworICAgIFJlZlB0cjxXZWJQYWdlUHJv
eHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50LCBjb250ZXh0LCBw
YWdlR3JvdXAsIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UpOwog
ICAgIHJldHVybiB3ZWJQYWdlLmdldCgpOwogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgJKHJldmlzaW9uIDc1NDIyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFBs
YXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKTsgfQogCiAgICAgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV2ViUGFnZVByb3h5
KiBjcmVhdGVXZWJQYWdlKFdlYkNvbnRleHQqLCBXZWJQYWdlR3JvdXAqKTsKKyAgICBXZWJQYWdl
UHJveHkqIGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCosIFdlYkNvbnRleHQqLCBXZWJQYWdlR3Jv
dXAqKTsKICAgICB2b2lkIGFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkqLCB1aW50NjRf
dCBwYWdlSUQpOwogICAgIHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lv
biA3NTQyMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQ
YWdlQ2xpZW50SW1wbChXS1ZpZXcqKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2
aWV3U2l6ZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNp
YmxlKCk7CisgICAgdmlydHVhbCBib29sIGlzVmlld0luV2luZG93KCk7CisgICAgCiAgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5j
aFByb2Nlc3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKGJvb2wgZGlyZWN0aW9uKTsK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2
aXNpb24gNzU0MjIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBs
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDM3IEBAIFBhZ2VDbGllbnRJbXBsOjp+
UGFnZUNsaWVudEltcGwoKQogewogfQogCitJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6
ZSgpCit7CisgICAgcmV0dXJuIEludFNpemUoW21fd2tWaWV3IGJvdW5kc10uc2l6ZSk7Cit9CisK
K2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCit7CisgICAgcmV0dXJu
IFtbbV93a1ZpZXcgd2luZG93XSBpc0tleVdpbmRvd107Cit9CisKK2Jvb2wgUGFnZUNsaWVudElt
cGw6OmlzVmlld0ZvY3VzZWQoKQoreworICAgIHJldHVybiBbbV93a1ZpZXcgX2lzRm9jdXNlZF07
Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGUoKQoreworICAgIGlmICgh
W21fd2tWaWV3IHdpbmRvd10pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChbbV93
a1ZpZXcgaXNIaWRkZW5Pckhhc0hpZGRlbkFuY2VzdG9yXSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0lu
V2luZG93KCkKK3sKKyAgICByZXR1cm4gW21fd2tWaWV3IHdpbmRvd107Cit9CisKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgW21fd2tWaWV3IF9wcm9jZXNz
RGlkQ3Jhc2hdOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9u
IDc1NDIyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEyMCw2ICsxMjAsOSBAQCBAaW50ZXJmYWNlIFdLVmlld0RhdGEgOiBOU09iamVj
dCB7CiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBfdW5kZXJsaW5lczsKICAgICB1
bnNpZ25lZCBfc2VsZWN0aW9uU3RhcnQ7CiAgICAgdW5zaWduZWQgX3NlbGVjdGlvbkVuZDsKKwor
ICAgIGJvb2wgX2luQmVjb21lRmlyc3RSZXNwb25kZXI7CisgICAgYm9vbCBfaW5SZXNpZ25GaXJz
dFJlc3BvbmRlcjsKIH0KIEBlbmQKIApAQCAtMTYyLDExICsxNjUsOSBAQCAtIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4CiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxs
b2NdIGluaXRdOwogCiAgICAgX2RhdGEtPl9wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZShzZWxmKTsKLSAgICBfZGF0YS0+X3BhZ2UgPSB0b0ltcGwoY29udGV4dFJlZiktPmNyZWF0
ZVdlYlBhZ2UodG9JbXBsKHBhZ2VHcm91cFJlZikpOwotICAgIF9kYXRhLT5fcGFnZS0+c2V0UGFn
ZUNsaWVudChfZGF0YS0+X3BhZ2VDbGllbnQuZ2V0KCkpOworICAgIF9kYXRhLT5fcGFnZSA9IHRv
SW1wbChjb250ZXh0UmVmKS0+Y3JlYXRlV2ViUGFnZShfZGF0YS0+X3BhZ2VDbGllbnQuZ2V0KCks
IHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldERyYXdpbmdBcmVh
KENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUoc2VsZiwgX2RhdGEtPl9wYWdl
LmdldCgpKSk7CiAgICAgX2RhdGEtPl9wYWdlLT5pbml0aWFsaXplV2ViUGFnZShJbnRTaXplKGZy
YW1lLnNpemUpKTsKLSAgICBfZGF0YS0+X3BhZ2UtPnNldElzSW5XaW5kb3coW3NlbGYgd2luZG93
XSk7CiAKICAgICBXZWJDb250ZXh0OjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKIApAQCAt
MjI0LDcgKzIyNSw5IEBAIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXIKIHsKICAgICBOU1Nl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBbW3NlbGYgd2luZG93XSBrZXlWaWV3U2VsZWN0
aW9uRGlyZWN0aW9uXTsKIAotICAgIF9kYXRhLT5fcGFnZS0+c2V0Rm9jdXNlZCh0cnVlKTsKKyAg
ICBfZGF0YS0+X2luQmVjb21lRmlyc3RSZXNwb25kZXIgPSB0cnVlOworICAgIF9kYXRhLT5fcGFn
ZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6SXNWaWV3Rm9jdXNlZCk7CisgICAg
X2RhdGEtPl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gZmFsc2U7CiAKICAgICBpZiAoZGlyZWN0
aW9uICE9IE5TRGlyZWN0U2VsZWN0aW9uKQogICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRp
YWxGb2N1cyhkaXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0KTsKQEAgLTIzNCw3ICsyMzcsMTAg
QEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlcgogCiAtIChCT09MKXJlc2lnbkZpcnN0UmVz
cG9uZGVyCiB7Ci0gICAgX2RhdGEtPl9wYWdlLT5zZXRGb2N1c2VkKGZhbHNlKTsKKyAgICBfZGF0
YS0+X2luUmVzaWduRmlyc3RSZXNwb25kZXIgPSB0cnVlOworICAgIF9kYXRhLT5fcGFnZS0+dmll
d1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6SXNWaWV3Rm9jdXNlZCk7CisgICAgX2RhdGEt
Pl9pblJlc2lnbkZpcnN0UmVzcG9uZGVyID0gZmFsc2U7CisKICAgICByZXR1cm4gWUVTOwogfQog
CkBAIC05NjEsMTEgKzk2Nyw2IEBAIC0gKE5TUmVjdClmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZTooTlMKICAgICByZXR1cm4gcmVzdWx0UmVjdDsKIH0KIAotLSAodm9pZClfdXBkYXRlQWN0aXZl
U3RhdGUKLXsKLSAgICBfZGF0YS0+X3BhZ2UtPnNldEFjdGl2ZShbW3NlbGYgd2luZG93XSBpc0tl
eVdpbmRvd10pOwotfQotCiAtICh2b2lkKV91cGRhdGVXaW5kb3dWaXNpYmlsaXR5CiB7CiAgICAg
X2RhdGEtPl9wYWdlLT51cGRhdGVXaW5kb3dJc1Zpc2libGUoIVtbc2VsZiB3aW5kb3ddIGlzTWlu
aWF0dXJpemVkXSk7CkBAIC0xMDQ1LDI0ICsxMDQ2LDYgQEAgLSAodm9pZClyZW1vdmVXaW5kb3dP
YnNlcnZlcnMKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92
ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1dpbmRvd0RpZFJlc2l6ZU5vdGlmaWNhdGlvbiBvYmplY3Q6
d2luZG93XTsKIH0KIAotc3RhdGljIGJvb2wgaXNWaWV3VmlzaWJsZShOU1ZpZXcgKnZpZXcpCi17
Ci0gICAgaWYgKCFbdmlldyB3aW5kb3ddKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0g
ICAgaWYgKFt2aWV3IGlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3Rvcl0pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLSAodm9pZClfdXBkYXRlVmlz
aWJpbGl0eQotewotICAgIF9kYXRhLT5fcGFnZS0+c2V0SXNJbldpbmRvdyhbc2VsZiB3aW5kb3dd
KTsKLSAgICBpZiAoRHJhd2luZ0FyZWFQcm94eSogYXJlYSA9IF9kYXRhLT5fcGFnZS0+ZHJhd2lu
Z0FyZWEoKSkKLSAgICAgICAgYXJlYS0+c2V0UGFnZUlzVmlzaWJsZShpc1ZpZXdWaXNpYmxlKHNl
bGYpKTsKLX0KLQogLSAodm9pZCl2aWV3V2lsbE1vdmVUb1dpbmRvdzooTlNXaW5kb3cgKil3aW5k
b3cKIHsKICAgICBpZiAod2luZG93ICE9IFtzZWxmIHdpbmRvd10pIHsKQEAgLTEwNzcsMTMgKzEw
NjAsMTMgQEAgLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93CiAgICAgLy8gdXBkYXRlIHRoZSBh
Y3RpdmUgc3RhdGUgZmlyc3QgYW5kIHRoZW4gbWFrZSBpdCB2aXNpYmxlLiBJZiB0aGUgdmlldyBp
cyBhYm91dCB0byBiZSBoaWRkZW4sIHdlIGhpZGUgaXQgZmlyc3QgYW5kIHRoZW4KICAgICAvLyB1
cGRhdGUgdGhlIGFjdGl2ZSBzdGF0ZS4KICAgICBpZiAoW3NlbGYgd2luZG93XSkgewotICAgICAg
ICBbc2VsZiBfdXBkYXRlQWN0aXZlU3RhdGVdOwotICAgICAgICBbc2VsZiBfdXBkYXRlVmlzaWJp
bGl0eV07CisgICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQ
cm94eTo6SXNWaWV3V2luZG93QWN0aXZlKTsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpJc1ZpZXdWaXNpYmxlIHwgV2ViUGFnZVByb3h5OjpJ
c1ZpZXdJbldpbmRvdyk7CiAgICAgICAgIFtzZWxmIF91cGRhdGVXaW5kb3dWaXNpYmlsaXR5XTsK
ICAgICAgICAgW3NlbGYgX3VwZGF0ZVdpbmRvd0FuZFZpZXdGcmFtZXNdOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIFtzZWxmIF91cGRhdGVWaXNpYmlsaXR5XTsKLSAgICAgICAgW3NlbGYgX3VwZGF0
ZUFjdGl2ZVN0YXRlXTsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uo
V2ViUGFnZVByb3h5OjpJc1ZpZXdWaXNpYmxlKTsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpJc1ZpZXdXaW5kb3dBY3RpdmUgfCBXZWJQYWdl
UHJveHk6OklzVmlld0luV2luZG93KTsKICAgICB9CiAKIH0KQEAgLTEwOTIsMTQgKzEwNzUsMTQg
QEAgLSAodm9pZClfd2luZG93RGlkQmVjb21lS2V5OihOU05vdGlmaWNhdAogewogICAgIE5TV2lu
ZG93ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07CiAgICAgaWYgKGtleVdpbmRv
dyA9PSBbc2VsZiB3aW5kb3ddIHx8IGtleVdpbmRvdyA9PSBbW3NlbGYgd2luZG93XSBhdHRhY2hl
ZFNoZWV0XSkKLSAgICAgICAgW3NlbGYgX3VwZGF0ZUFjdGl2ZVN0YXRlXTsKKyAgICAgICAgX2Rh
dGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpJc1ZpZXdXaW5kb3dB
Y3RpdmUpOwogfQogCiAtICh2b2lkKV93aW5kb3dEaWRSZXNpZ25LZXk6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCiB7CiAgICAgTlNXaW5kb3cgKmZvcm1lcktleVdpbmRvdyA9IFtub3Rp
ZmljYXRpb24gb2JqZWN0XTsKICAgICBpZiAoZm9ybWVyS2V5V2luZG93ID09IFtzZWxmIHdpbmRv
d10gfHwgZm9ybWVyS2V5V2luZG93ID09IFtbc2VsZiB3aW5kb3ddIGF0dGFjaGVkU2hlZXRdKQot
ICAgICAgICBbc2VsZiBfdXBkYXRlQWN0aXZlU3RhdGVdOworICAgICAgICBfZGF0YS0+X3BhZ2Ut
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OklzVmlld1dpbmRvd0FjdGl2ZSk7CiB9
CiAKIC0gKHZvaWQpX3dpbmRvd0RpZE1pbmlhdHVyaXplOihOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbgpAQCAtMTEzNiwxMiArMTExOSwxMiBAQCAtIChCT09MKWlzT3BhcXVlCiAKIC0gKHZv
aWQpdmlld0RpZEhpZGUKIHsKLSAgICBbc2VsZiBfdXBkYXRlVmlzaWJpbGl0eV07CisgICAgX2Rh
dGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpJc1ZpZXdWaXNpYmxl
KTsKIH0KIAogLSAodm9pZCl2aWV3RGlkVW5oaWRlCiB7Ci0gICAgW3NlbGYgX3VwZGF0ZVZpc2li
aWxpdHldOworICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94
eTo6SXNWaWV3VmlzaWJsZSk7CiB9CiAKIC0gKHZvaWQpX3NldEFjY2Vzc2liaWxpdHlDaGlsZFRv
a2VuOihOU0RhdGEgKilkYXRhCkBAIC0xMjE2LDYgKzExOTksMTUgQEAgLSAoQk9PTCljYW5Qcmlu
dEhlYWRlcnNBbmRGb290ZXJzCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1ZpZXcgKEludGVybmFsKQog
CistIChCT09MKV9pc0ZvY3VzZWQKK3sKKyAgICBpZiAoX2RhdGEtPl9pbkJlY29tZUZpcnN0UmVz
cG9uZGVyKQorICAgICAgICByZXR1cm4gWUVTOworICAgIGlmIChfZGF0YS0+X2luUmVzaWduRmly
c3RSZXNwb25kZXIpCisgICAgICAgIHJldHVybiBOTzsKKyAgICByZXR1cm4gW1tzZWxmIHdpbmRv
d10gZmlyc3RSZXNwb25kZXJdID09IHNlbGY7Cit9CisKIC0gKHZvaWQpX3Byb2Nlc3NEaWRDcmFz
aAogewogICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheTpZRVNdOwpAQCAtMTIyNCw5ICsxMjE2LDYg
QEAgLSAodm9pZClfcHJvY2Vzc0RpZENyYXNoCiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MK
IHsKICAgICBfZGF0YS0+X3BhZ2UtPnJlaW5pdGlhbGl6ZVdlYlBhZ2UoSW50U2l6ZShbc2VsZiBi
b3VuZHNdLnNpemUpKTsKLQotICAgIF9kYXRhLT5fcGFnZS0+c2V0QWN0aXZlKFtbc2VsZiB3aW5k
b3ddIGlzS2V5V2luZG93XSk7Ci0gICAgX2RhdGEtPl9wYWdlLT5zZXRGb2N1c2VkKFtbc2VsZiB3
aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSA9PSBzZWxmKTsKICAgICAKICAgICBbc2VsZiBzZXROZWVk
c0Rpc3BsYXk6WUVTXTsKIH0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
d0ludGVybmFsLmgJKHJldmlzaW9uIDc1NDIyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogfQogCiBAaW50ZXJmYWNlIFdLVmlldyAoSW50ZXJuYWwpCistIChCT09M
KV9pc0ZvY3VzZWQ7CiAtICh2b2lkKV9wcm9jZXNzRGlkQ3Jhc2g7CiAtICh2b2lkKV9kaWRSZWxh
dW5jaFByb2Nlc3M7CiAtICh2b2lkKV90YWtlRm9jdXM6KEJPT0wpZGlyZWN0aW9uOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAJKHJldmlzaW9u
IDc1NDIyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyOCwxNCArMzI4LDEyIEBAIHZvaWQgUUdyYXBoaWNzV0tWaWV3
Ojp0b3VjaEV2ZW50KFFUb3VjaEUKIAogdm9pZCBRR3JhcGhpY3NXS1ZpZXc6OmZvY3VzSW5FdmVu
dChRRm9jdXNFdmVudCopCiB7Ci0gICAgcGFnZSgpLT5kLT5wYWdlLT5zZXRBY3RpdmUodHJ1ZSk7
Ci0gICAgcGFnZSgpLT5kLT5wYWdlLT5zZXRGb2N1c2VkKHRydWUpOworICAgIHBhZ2UoKS0+ZC0+
cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6SXNWaWV3Rm9jdXNlZCB8IFdl
YlBhZ2VQcm94eTo6SXNWaWV3V2luZG93QWN0aXZlKTsKIH0KIAogdm9pZCBRR3JhcGhpY3NXS1Zp
ZXc6OmZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqKQogewotICAgIHBhZ2UoKS0+ZC0+cGFnZS0+
c2V0Rm9jdXNlZChmYWxzZSk7Ci0gICAgcGFnZSgpLT5kLT5wYWdlLT5zZXRBY3RpdmUoZmFsc2Up
OworICAgIHBhZ2UoKS0+ZC0+cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6
SXNWaWV3Rm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6SXNWaWV3V2luZG93QWN0aXZlKTsKIH0KIAog
dm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnNob3dDb250ZXh0TWVudShRTWVudSogbWVudSkKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDc1NDIyKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4
ICs4Niw3IEBAIFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZShRV0tQYWdlKiAKICAgICAs
IGNyZWF0ZU5ld1BhZ2VGbigwKQogewogICAgIG1lbXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0
aW9ucykpOwotICAgIHBhZ2UgPSBjb250ZXh0LT5kLT5jb250ZXh0LT5jcmVhdGVXZWJQYWdlKDAp
OwotICAgIHBhZ2UtPnNldFBhZ2VDbGllbnQodGhpcyk7CisgICAgcGFnZSA9IGNvbnRleHQtPmQt
PmNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgMCk7CiAgICAgaGlzdG9yeSA9IFFXS0hpc3Rv
cnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKTsKIH0KIApA
QCAtMTIxLDYgKzEyMCwzNiBAQCB2b2lkIFFXS1BhZ2VQcml2YXRlOjp0YWtlRm9jdXMoYm9vbCBk
aXJlCiAgICAgZW1pdCBxLT5mb2N1c05leHRQcmV2Q2hpbGQoZGlyZWN0aW9uKTsKIH0KIAorV2Vi
Q29yZTo6SW50U2l6ZSBRV0tQYWdlUHJpdmF0ZTo6dmlld1NpemUoKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFdlYkNvcmU6OkludFNpemUoKTsKK30KKworYm9vbCBR
V0tQYWdlUHJpdmF0ZTo6aXNWaWV3V2luZG93QWN0aXZlKCkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFFXS1BhZ2VQcml2YXRlOjppc1Zp
ZXdGb2N1c2VkKCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFFXS1BhZ2VQcml2YXRlOjppc1ZpZXdWaXNpYmxlKCkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFFXS1BhZ2VQcml2
YXRlOjppc1ZpZXdJbldpbmRvdygpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBRV0tQYWdlUHJpdmF0ZTo6cGFnZURpZFJlcXVlc3RTY3Jv
bGwoY29uc3QgSW50U2l6ZSYgZGVsdGEpCiB7CiAgICAgZW1pdCBxLT5zY3JvbGxSZXF1ZXN0ZWQo
ZGVsdGEud2lkdGgoKSwgZGVsdGEuaGVpZ2h0KCkpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlX3AuaAkocmV2aXNpb24gNzU0MjIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluaXQoY29uc3QgUVNpemUmIHZpZXdwb3J0U2l6ZSwgV1RGOjpQYXNzT3duUHRy
PFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4pOwogCiAgICAgLy8gUGFnZUNsaWVudAorICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1Zp
ZXdXaW5kb3dBY3RpdmUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpOworICAg
IHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCk7CisgICAgdmlydHVhbCBib29sIGlzVmlld0lu
V2luZG93KCk7CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdm9pZCBw
YWdlRGlkRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgeyB9CiAgICAgdm9pZCBwYWdlRGlk
TGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgeyB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCShyZXZpc2lvbiA3NTQyMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDE0ICsyMjcsMTUgQEAgV2ViVmlldzo6V2Vi
VmlldyhSRUNUIHJlY3QsIFdlYkNvbnRleHQqIAogICAgICwgbV93ZWJDb3JlQ3Vyc29yKDApCiAg
ICAgLCBtX292ZXJyaWRlQ3Vyc29yKDApCiAgICAgLCBtX3RyYWNraW5nTW91c2VMZWF2ZShmYWxz
ZSkKKyAgICAsIG1faXNJbldpbmRvdyhmYWxzZSkKKyAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQog
ICAgICwgbV93YXNBY3RpdmF0ZWRCeU1vdXNlRXZlbnQoZmFsc2UpCiAgICAgLCBtX2lzQmVpbmdE
ZXN0cm95ZWQoZmFsc2UpCiAgICAgLCBtX2luSU1FQ29tcG9zaXRpb24oMCkKIHsKICAgICByZWdp
c3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwogCi0gICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRl
V2ViUGFnZShwYWdlR3JvdXApOwotICAgIG1fcGFnZS0+c2V0UGFnZUNsaWVudCh0aGlzKTsKKyAg
ICBtX3BhZ2UgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCk7CiAgICAg
bV9wYWdlLT5zZXREcmF3aW5nQXJlYShDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6Y3Jl
YXRlKHRoaXMsIG1fcGFnZS5nZXQoKSkpOwogCiAgICAgbV93aW5kb3cgPSA6OkNyZWF0ZVdpbmRv
d0V4KDAsIGtXZWJLaXQyV2ViVmlld1dpbmRvd0NsYXNzTmFtZSwgMCwgV1NfQ0hJTEQgfCBXU19D
TElQU0lCTElOR1MgfCBXU19DTElQQ0hJTERSRU4sCkBAIC00MzcsMTYgKzQzOCwxNCBAQCBMUkVT
VUxUIFdlYlZpZXc6Om9uV2luZG93UG9zaXRpb25DaGFuZ2VkCiAKIExSRVNVTFQgV2ViVmlldzo6
b25TZXRGb2N1c0V2ZW50KEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYg
aGFuZGxlZCkKIHsKLSAgICBtX3BhZ2UtPnNldEZvY3VzZWQodHJ1ZSk7Ci0KKyAgICBtX3BhZ2Ut
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OklzVmlld0ZvY3VzZWQpOwogICAgIGhh
bmRsZWQgPSB0cnVlOwogICAgIHJldHVybiAwOwogfQogCiBMUkVTVUxUIFdlYlZpZXc6Om9uS2ls
bEZvY3VzRXZlbnQoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0gbFBhcmFtLCBib29sJiBoYW5k
bGVkKQogewotICAgIG1fcGFnZS0+c2V0Rm9jdXNlZChmYWxzZSk7Ci0KKyAgICBtX3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OklzVmlld0ZvY3VzZWQpOwogICAgIGhhbmRs
ZWQgPSB0cnVlOwogICAgIHJldHVybiAwOwogfQpAQCAtNDY5LDEwICs0NjgsOCBAQCBMUkVTVUxU
IFdlYlZpZXc6Om9uU2hvd1dpbmRvd0V2ZW50KEhXTkQgCiAgICAgLy8gbFBhcmFtIGlzIDAgd2hl
biB0aGUgbWVzc2FnZSBpcyBzZW50IGJlY2F1c2Ugb2YgYSBTaG93V2luZG93IGNhbGwuCiAgICAg
Ly8gRklYTUU6IElzIFdNX1NIT1dXSU5ET1cgc2VudCB3aGVuIFNob3dXaW5kb3cgaXMgY2FsbGVk
IG9uIGFuIGFuY2VzdG9yIG9mIG91ciB3aW5kb3c/CiAgICAgaWYgKCFsUGFyYW0pIHsKLSAgICAg
ICAgYm9vbCBpc1Zpc2libGUgPSB3UGFyYW07Ci0KLSAgICAgICAgLy8gTm90aWZ5IHRoZSBkcmF3
aW5nIGFyZWEgdGhhdCB0aGUgdmlzaWJpbGl0eSBjaGFuZ2VkLgotICAgICAgICBtX3BhZ2UtPmRy
YXdpbmdBcmVhKCktPnNldFBhZ2VJc1Zpc2libGUoaXNWaXNpYmxlKTsKKyAgICAgICAgbV9pc1Zp
c2libGUgPSB3UGFyYW07CisgICAgICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBh
Z2VQcm94eTo6SXNWaWV3VmlzaWJsZSk7CiAKICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAg
fQpAQCAtNDkxLDE1ICs0ODgsOSBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uU2V0Q3Vyc29yKEhXTkQg
aFduZCwgCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgV2ViVmlldzo6aXNBY3RpdmUoKQotewot
ICAgIEhXTkQgYWN0aXZlV2luZG93ID0gOjpHZXRBY3RpdmVXaW5kb3coKTsKLSAgICByZXR1cm4g
KGFjdGl2ZVdpbmRvdyAmJiBtX3RvcExldmVsUGFyZW50V2luZG93ID09IGZpbmRUb3BMZXZlbFBh
cmVudFdpbmRvdyhhY3RpdmVXaW5kb3cpKTsKLX0KLQogdm9pZCBXZWJWaWV3Ojp1cGRhdGVBY3Rp
dmVTdGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT5zZXRBY3RpdmUoaXNBY3RpdmUoKSk7CisgICAgbV9w
YWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpJc1ZpZXdXaW5kb3dBY3RpdmUp
OwogfQogCiB2b2lkIFdlYlZpZXc6OnVwZGF0ZUFjdGl2ZVN0YXRlU29vbigpCkBAIC01ODQsNiAr
NTc1LDM1IEBAIHZvaWQgV2ViVmlldzo6Y2xvc2UoKQogCiAvLyBQYWdlQ2xpZW50CiAKK1dlYkNv
cmU6OkludFNpemUgV2ViVmlldzo6dmlld1NpemUoKQoreworICAgIFJFQ1QgY2xpZW50UmVjdDsK
KyAgICBHZXRDbGllbnRSZWN0KG1fd2luZG93LCAmY2xpZW50UmVjdCk7CisKKyAgICByZXR1cm4g
SW50UmVjdChjbGllbnRSZWN0KS5zaXplKCk7Cit9CisKK2Jvb2wgV2ViVmlldzo6aXNWaWV3V2lu
ZG93QWN0aXZlKCkKK3sgICAgCisgICAgSFdORCBhY3RpdmVXaW5kb3cgPSA6OkdldEFjdGl2ZVdp
bmRvdygpOworICAgIHJldHVybiAoYWN0aXZlV2luZG93ICYmIG1fdG9wTGV2ZWxQYXJlbnRXaW5k
b3cgPT0gZmluZFRvcExldmVsUGFyZW50V2luZG93KGFjdGl2ZVdpbmRvdykpOworfQorCitib29s
IFdlYlZpZXc6OmlzVmlld0ZvY3VzZWQoKQoreworICAgIHJldHVybiA6OkdldEZvY3VzKCkgPT0g
bV93aW5kb3c7Cit9CisKK2Jvb2wgV2ViVmlldzo6aXNWaWV3VmlzaWJsZSgpCit7CisgICAgcmV0
dXJuIG1faXNWaXNpYmxlOworfQorCitib29sIFdlYlZpZXc6OmlzVmlld0luV2luZG93KCkKK3sK
KyAgICByZXR1cm4gbV9pc0luV2luZG93OworfQorCiB2b2lkIFdlYlZpZXc6OnByb2Nlc3NEaWRD
cmFzaCgpCiB7CiAgICAgdXBkYXRlTmF0aXZlQ3Vyc29yKCk7CkBAIC01OTcsOCArNjE3LDYgQEAg
dm9pZCBXZWJWaWV3OjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3BhZ2UtPnJlaW5pdGlhbGl6ZVdlYlBhZ2UoSW50UmVjdChjbGllbnRSZWN0KS5zaXplKCkp
OwotICAgIHVwZGF0ZUFjdGl2ZVN0YXRlKCk7Ci0gICAgbV9wYWdlLT5zZXRGb2N1c2VkKDo6R2V0
Rm9jdXMoKSA9PSBtX3dpbmRvdyk7CiAgICAgdXBkYXRlTmF0aXZlQ3Vyc29yKCk7CiAKICAgICA6
OkludmFsaWRhdGVSZWN0KG1fd2luZG93LCAwLCBUUlVFKTsKQEAgLTk5Miw3ICsxMDEwLDggQEAg
dm9pZCBXZWJWaWV3OjpzZXRDdXN0b21SZXByZXNlbnRhdGlvblpvbwogCiB2b2lkIFdlYlZpZXc6
OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogewotICAgIG1fcGFnZS0+c2V0SXNJbldp
bmRvdyhpc0luV2luZG93KTsKKyAgICBtX2lzSW5XaW5kb3cgPSBpc0luV2luZG93OworICAgIG1f
cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6SXNWaWV3SW5XaW5kb3cpOwog
fQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5oCShyZXZpc2lvbiA3NTQyMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDYgQEAgcHJpdmF0ZToKICAgICBMUkVT
VUxUIG9uSU1FUmVxdWVzdENoYXJQb3NpdGlvbihJTUVDSEFSUE9TSVRJT04qKTsKICAgICBMUkVT
VUxUIG9uSU1FUmVxdWVzdFJlY29udmVydFN0cmluZyhSRUNPTlZFUlRTVFJJTkcqKTsKIAotICAg
IGJvb2wgaXNBY3RpdmUoKTsKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVN0YXRlKCk7CiAgICAgdm9p
ZCB1cGRhdGVBY3RpdmVTdGF0ZVNvb24oKTsKIApAQCAtMTA1LDYgKzEwNCwxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlTmF0aXZlQ3Vyc29yKCk7CiAKICAgICAvLyBQYWdlQ2xpZW50Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCk7CisgICAgdmlydHVhbCBib29s
IGlzVmlld1dpbmRvd0FjdGl2ZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCk7
CisgICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNW
aWV3SW5XaW5kb3coKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOwogICAgIHZpcnR1YWwgdm9pZCB0YWtl
Rm9jdXMoYm9vbCBkaXJlY3Rpb24pOwpAQCAtMTQ2LDYgKzE1MCw4IEBAIHByaXZhdGU6CiAgICAg
SENVUlNPUiBtX3dlYkNvcmVDdXJzb3I7CiAgICAgSENVUlNPUiBtX292ZXJyaWRlQ3Vyc29yOwog
CisgICAgYm9vbCBtX2lzSW5XaW5kb3c7CisgICAgYm9vbCBtX2lzVmlzaWJsZTsKICAgICBib29s
IG1fd2FzQWN0aXZhdGVkQnlNb3VzZUV2ZW50OwogICAgIGJvb2wgbV90cmFja2luZ01vdXNlTGVh
dmU7CiAgICAgYm9vbCBtX2lzQmVpbmdEZXN0cm95ZWQ7Cg==
</data>
<flag name="review"
          id="69784"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>