<?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>41243</bug_id>
          
          <creation_ts>2010-06-25 19:19:30 -0700</creation_ts>
          <short_desc>[chromium] Add support for WebGL to the accelerated compositor</short_desc>
          <delta_ts>2010-06-29 10:12:52 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>0</everconfirmed>
          <reporter name="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243304</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-06-25 19:19:30 -0700</bug_when>
    <thetext>Currently Canvas3D (WebGL) isn&apos;t supported in chromium when doing accelerated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243403</commentid>
    <comment_count>1</comment_count>
      <attachid>59841</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-06-26 10:59:23 -0700</bug_when>
    <thetext>Created attachment 59841
Proposed patch

This code requires:
http://codereview.chromium.org/2864021/show
to be landed in the chromium repository first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243411</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-26 11:50:04 -0700</bug_when>
    <thetext>Attachment 59841 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3297828</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243718</commentid>
    <comment_count>3</comment_count>
      <attachid>59841</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-28 08:53:51 -0700</bug_when>
    <thetext>Comment on attachment 59841
Proposed patch

WebKit/chromium/public/WebGraphicsContext3D.h:116
 +      virtual unsigned int getPlatformTextureId() = 0;
nit: &quot;unsigned int&quot; -&gt; &quot;unsigned&quot; in webkit style

WebKit/chromium/src/GraphicsContext3D.cpp:363
 +      if (!webContext-&gt;initialize(webAttributes, webView)) {
instead of initializing a WebGraphicsContext3D with a WebView, we
should instead ask the WebViewClient to create a WebGraphicsContext3D
for us.  things that you request from a WebKitClient should not be
WebView or WebFrame dependent.

looks fine otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243942</commentid>
    <comment_count>4</comment_count>
      <attachid>59951</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-06-28 15:19:33 -0700</bug_when>
    <thetext>Created attachment 59951
Proposed patch. Fixed linux compile issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243950</commentid>
    <comment_count>5</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-06-28 15:25:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 59841 [details])
&gt; WebKit/chromium/public/WebGraphicsContext3D.h:116
&gt;  +      virtual unsigned int getPlatformTextureId() = 0;
&gt; nit: &quot;unsigned int&quot; -&gt; &quot;unsigned&quot; in webkit style

Done.

&gt; 
&gt; WebKit/chromium/src/GraphicsContext3D.cpp:363
&gt;  +      if (!webContext-&gt;initialize(webAttributes, webView)) {
&gt; instead of initializing a WebGraphicsContext3D with a WebView, we
&gt; should instead ask the WebViewClient to create a WebGraphicsContext3D
&gt; for us.  things that you request from a WebKitClient should not be
&gt; WebView or WebFrame dependent.

If it&apos;s ok, I&apos;d like to make this change in a separate CL. I&apos;ve filed a bug for it:
https://bugs.webkit.org/show_bug.cgi?id=41315

&gt; 
&gt; looks fine otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243987</commentid>
    <comment_count>6</comment_count>
      <attachid>59951</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-28 17:16:26 -0700</bug_when>
    <thetext>Comment on attachment 59951
Proposed patch. Fixed linux compile issue.

Looks good. Very exciting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244347</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-29 10:12:52 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/62130</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59841</attachid>
            <date>2010-06-26 10:59:23 -0700</date>
            <delta_ts>2010-06-28 15:19:33 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webGLLayers_41243.txt</filename>
            <type>text/plain</type>
            <size>21153</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTkzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDYtMjUgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSG9va2luZyB1cCBXZWJHTCBsYXllcnMgdG8gdGhlIGdwdS1jb21w
b3NpdG9yLiBJbXBsZW1lbnQgbWlzc2luZworICAgICAgICBtZXRob2RzIHRvIHNldCB0aGUgY29u
dGVudHMgb2YgYSBHcmFwaGljc0xheWVyIHdpdGggYSBwbGF0Zm9ybSBzcGVjaWZpYyBXZWJHTAor
ICAgICAgICBMYXllciwgYW5kIHRvIHVwZGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIFdlYkdMIExh
eWVyIHdoZW4gbmVlZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDEyNDMKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHNUb1dlYkdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW06OnJlbW92ZUFsbFN1YmxheWVycyk6CisgICAgICAgICAgTm8gbmVlZCB0byBjYWxsIHNl
dE5lZWRzQ29tbWl0KCkgZnJvbSBoZXJlIGFzIHRoZSBwcmV2aW91cyBjYWxsIHRvCisgICAgICAg
ICAgbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCkgd2lsbCBoYXZlIHRoYXQgZWZmZWN0IChh
bmQgd2Ugb25seSBuZWVkCisgICAgICAgICAgdG8gbm90aWZ5IHRoZSBvd25lciBpZiB0aGVyZSB3
ZXJlIGFjdHVhbGx5IGFueSBzdWJsYXllcnMgcmVtb3ZlZCkuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dCk6CisKIDIwMTAtMDYtMjUgIERlYW4g
SmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgJKHJldmlzaW9uIDYxOTIxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzYsOSArNDM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdDsKICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0
Zm9ybVRleHR1cmUoKSBjb25zdDsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0g
ICAgICAgIC8vIEZJWE1FOiBTdHViYmVkIG91dCBmb3Igbm93LiBNdXN0IGJlIGltcGxlbWVudGVk
IHRvIGdldCBXZWJHTCB3b3JraW5nIHdpdGgKLSAgICAgICAgLy8gYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcuCi0gICAgICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisgICAgICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
ICNlbmRpZgogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpOwpAQCAtNDU1LDcgKzQ1Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2b2lkIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
Q0hST01JVU0pCiAgICAgICAgIC8vIFdpdGggbXVsdGlzYW1wbGluZyBvbiwgYmxpdCBmcm9tIG11
bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgICAgICB2b2lkIHByZXBhcmVUZXh0dXJl
KCk7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDYxOTIx
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zMzMsNiArMzM0LDM1IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1QKICAgICAgICAgdXBkYXRlU3VibGF5
ZXJMaXN0KCk7CiB9CiAKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQordm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzVG9XZWJHTChQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KQoreworICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CisgICAgaWYgKHBsYXRmb3Jt
TGF5ZXIpIHsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgfHwgbV9jb250ZW50
c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9yV2ViR0wpIHsKKyAgICAgICAgICAgIFdl
YkdMTGF5ZXJDaHJvbWl1bSogd2ViR0xMYXllciA9IHN0YXRpY19jYXN0PFdlYkdMTGF5ZXJDaHJv
bWl1bSo+KHBsYXRmb3JtTGF5ZXIpOworICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKHdl
YkdMTGF5ZXIpOworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gd2ViR0xMYXllcjsKKyAg
ICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yV2ViR0w7
CisgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IHBsYXRmb3JtTGF5ZXItPnNldE93bmVyKHRoaXMpOworICAgICAgICBwbGF0Zm9ybUxheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAgICAgICAgICAgY2hpbGRy
ZW5DaGFuZ2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gVGhlIG9sZCBjb250ZW50cyBsYXll
ciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZVN1YmxheWVyTGlzdC4KKyAgICAgICAgICAgIG1f
Y29udGVudHNMYXllciA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2hpbGRyZW5D
aGFuZ2VkKQorICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKK30KKyNlbmRpZgorCiB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb1ZpZGVvKFBsYXRmb3JtTGF5ZXIq
IHZpZGVvTGF5ZXIpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5oCShyZXZpc2lvbiA2MTkyMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYg
Kzg2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvVmlkZW8oUGxhdGZvcm1MYXll
ciopOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvV2ViR0woUGxhdGZvcm1MYXllciop
OwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAkocmV2aXNpb24gNjE5MjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNyAr
Mjk2LDYgQEAgdm9pZCBMYXllckNocm9taXVtOjpyZW1vdmVBbGxTdWJsYXllcnMoKQogICAgICAg
ICBBU1NFUlQobGF5ZXItPnN1cGVybGF5ZXIoKSk7CiAgICAgICAgIGxheWVyLT5yZW1vdmVGcm9t
U3VwZXJsYXllcigpOwogICAgIH0KLSAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIExh
eWVyQ2hyb21pdW06OnNldFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4mIHN1YmxheWVycykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA2MTkyMSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzIsNiArMTcyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFNoYWRlclBy
b2dyYW1JZCh1bnNpZ25lZCBzaGFkZXJQcm9ncmFtSWQpIHsgbV9zaGFkZXJQcm9ncmFtSWQgPSBz
aGFkZXJQcm9ncmFtSWQ7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNoYWRlclByb2dyYW1JZCgp
IHsgcmV0dXJuIG1fc2hhZGVyUHJvZ3JhbUlkOyB9CiAKKyAgICB2b2lkIHNldE93bmVyKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpIHsgbV9vd25lciA9IG93bmVyOyB9CisKIHByb3RlY3Rl
ZDoKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIG1fb3duZXI7CiAgICAgTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDYxOTIxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsMTEg
KzYyMyw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXIoTGEKICAgICAg
ICAgICAgIGxheWVyLT51cGRhdGVUZXh0dXJlQ29udGVudHModGV4dHVyZUlkKTsKICAgICAgICAg
fQogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBXZWJHTCBsYXll
cnMgc3RvcCBjaGFuZ2luZyB0aGUgY3VycmVudAotICAgICAgICAvLyBjb250ZXh0LgotICAgICAg
ICBpZiAobGF5ZXItPm93bnNUZXh0dXJlKCkpCi0gICAgICAgICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLQogICAgICAgICBpZiAobGF5ZXItPmRvdWJsZVNpZGVkKCkpCiAgICAgICAgICAgICBn
bERpc2FibGUoR0xfQ1VMTF9GQUNFKTsKICAgICAgICAgZWxzZQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmNwcAkocmV2aXNpb24gNjE5MjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwx
OCBAQAogCiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVuc2lnbmVkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6bV9zaGFkZXJQcm9ncmFtSWQg
PSAwOwogCitQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVt
OjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bShvd25lcikpOworfQorCiBXZWJHTExheWVyQ2hy
b21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQog
ICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fY29udGV4dCgwKQpAQCAtNTMsMTIg
KzYxLDMzIEBAIHVuc2lnbmVkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dGV4dHVyZUlkKCkKIAogdm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVDb250ZW50cyh1bnNpZ25lZCB0ZXh0
dXJlSWQpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIEFTU0VSVCh0ZXh0dXJlSWQg
PT0gbV90ZXh0dXJlSWQpOworICAgIEFTU0VSVChtX2NvbnRleHQpOworICAgIGlmIChtX3RleHR1
cmVDaGFuZ2VkKSB7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0
dXJlSWQpOworICAgICAgICAvLyBTZXQgdGhlIG1pbi1tYWcgZmlsdGVycyB0byBsaW5lYXIgYW5k
IHdyYXAgbW9kZXMgdG8gR0xfQ0xBTVBfVE9fRURHRQorICAgICAgICAvLyB0byBnZXQgYXJvdW5k
IE5QT1QgdGV4dHVyZSBsaW1pdGF0aW9ucyBvZiBHTEVTLgorICAgICAgICBnbFRleFBhcmFtZXRl
cmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAg
ICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgICAgICBtX3RleHR1cmVDaGFuZ2VkID0gZmFsc2U7CisgICAgfQorICAgIC8vIFVwZGF0ZSB0
aGUgY29udGVudHMgb2YgdGhlIHRleHR1cmUgdXNlZCBieSB0aGUgY29tcG9zaXRvci4KKyAgICBp
ZiAobV9jb250ZW50c0RpcnR5KSB7CisgICAgICAgIG1fY29udGV4dC0+cHJlcGFyZVRleHR1cmUo
KTsKKyAgICAgICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CisgICAgfQogfQogCiB2b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgbV9jb250ZXh0ID0gY29uc3Rf
Y2FzdDxHcmFwaGljc0NvbnRleHQzRCo+KGNvbnRleHQpOworCisgICAgdW5zaWduZWQgaW50IHRl
eHR1cmVJZCA9IG1fY29udGV4dC0+cGxhdGZvcm1UZXh0dXJlKCk7CisgICAgaWYgKHRleHR1cmVJ
ZCAhPSBtX3RleHR1cmVJZCkKKyAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9IHRydWU7CisgICAg
bV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CiB9CiAKIH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gNjE5MzMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDYtMjUgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSG9va2luZyB1cCBHcmFwaGljc0NvbnRleHQzRCB0byB0aGUgZ3B1
IGNvbXBvc2l0b3IuCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgaXMgbm93IGlu
aXRpYWxpemVkIHdpdGggYSBwb2ludGVyIHRvIHRoZSBIb3N0V2luZG93CisgICAgICAgIHRoYXQg
Y29ycmVzcG9uZHMgdG8gdGhlIFdlYlZpZXcgY29udGFpbmluZyB0aGUgY29udGV4dC4gVGhlIGlu
aXRpYWxpemVyCisgICAgICAgIGZvcmNlcyBhIFdlYkdMRVMyQ29udGV4dCB0byBiZSBjcmVhdGVk
IGZvciB0aGUgV2ViVmlldyAoaWYgb25lIGRvZXNuJ3QgYWxyZWFkeQorICAgICAgICBleGlzdCkg
YW5kIHVzZXMgdGhlIHZpZXcncyBHTCBjb250ZXh0IGFzIGEgcGFyZW50IHRvIHRoZSBHTCBjb250
ZXh0IGNyZWF0ZWQKKyAgICAgICAgZm9yIFdlYkdMLiBUaGlzIGFsbG93cyB0aGUgY29tcG9zaXRv
ciB0byByZWFkIHRoZSB0ZXh0dXJlIGFzc29jaWF0ZWQgd2l0aCAKKyAgICAgICAgV2ViR0wncyBm
cmFtZSBidWZmZXIuIFdlIGFsc28gcGx1bWIgdGhvdWdoIEdyYXBoaWNzQ29udGV4dDNEJ3MgcHJl
cGFyZVRleHR1cmUKKyAgICAgICAgYW5kIHBsYXRmb3JtTGF5ZXIgbWV0aG9kcyB3aGljaCBhcmUg
cmVxdWlyZWQgYnkgdGhlIGNvbXBvc2l0b3IgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjQzCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAg
ICAgTWFkZSBnbGVzMkNvbnRleHQoKSBhIHZpcnR1YWwgbWV0aG9kIG9uIFdlYlZpZXcgaW5zdGVh
ZCBvZiBXZWJWaWV3SW1wbAorICAgICAgICAgICAgdG8gYWxsb3cgYWNjZXNzIHRvIGl0IGZyb20g
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aW5pdGlhbGl6ZSgpLgorICAgICAgICAqIHNyYy9H
cmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnByZXBhcmVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHNy
Yy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldFBsYXRmb3JtVGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAqIHNyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMDYtMjUgIFZp
Y3RvciBXYW5nICA8dmljdG9yd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gRmlzaGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaAkocmV2aXNpb24gNjE5MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUeXBlZGVmIGZvciBzZXJ2ZXItc2lkZSBvYmplY3RzIGxp
a2UgT3BlbkdMIHRleHR1cmVzIGFuZCBwcm9ncmFtIG9iamVjdHMuCiB0eXBlZGVmIHVuc2lnbmVk
IGludCBXZWJHTElkOwogCitjbGFzcyBXZWJWaWV3OworCiAvLyBUaGlzIGludGVyZmFjZSBhYnN0
cmFjdHMgdGhlIG9wZXJhdGlvbnMgcGVyZm9ybWVkIGJ5IHRoZQogLy8gR3JhcGhpY3NDb250ZXh0
M0QgaW4gb3JkZXIgdG8gaW1wbGVtZW50IFdlYkdMLiBOZWFybHkgYWxsIG9mIHRoZQogLy8gbWV0
aG9kcyBleHBvc2VkIG9uIHRoaXMgaW50ZXJmYWNlIG1hcCBkaXJlY3RseSB0byBlbnRyeSBwb2lu
dHMgaW4KQEAgLTgxLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW5pdGlhbGl6ZXMgdGhl
IGdyYXBoaWNzIGNvbnRleHQ7IHNob3VsZCBiZSB0aGUgZmlyc3Qgb3BlcmF0aW9uIHBlcmZvcm1l
ZAogICAgIC8vIG9uIG5ld2x5LWNvbnN0cnVjdGVkIGluc3RhbmNlcy4gUmV0dXJucyB0cnVlIG9u
IHN1Y2Nlc3MuCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoQXR0cmlidXRlcykgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKEF0dHJpYnV0ZXMsIFdlYlZpZXcqKSA9IDA7CiAK
ICAgICAvLyBNYWtlcyB0aGUgT3BlbkdMIGNvbnRleHQgY3VycmVudCBvbiB0aGUgY3VycmVudCB0
aHJlYWQuIFJldHVybnMgdHJ1ZSBvbgogICAgIC8vIHN1Y2Nlc3MuCkBAIC0xMDgsNiArMTEwLDE1
IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KICAgICB2aXJ0dWFs
IGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBi
dWZmZXJTaXplKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgdGV4dHVyZSB3
aGljaCBpcyB1c2VkIGZvciBzdG9yaW5nIHRoZSBjb250ZW50cyBvZgorICAgIC8vIHRoZSBmcmFt
ZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LiBUaGlzIHRleHR1cmUgaXMgYWNj
ZXNzaWJsZQorICAgIC8vIGJ5IHRoZSBncHUtYmFzZWQgcGFnZSBjb21wb3NpdG9yLgorICAgIHZp
cnR1YWwgdW5zaWduZWQgaW50IGdldFBsYXRmb3JtVGV4dHVyZUlkKCkgPSAwOworCisgICAgLy8g
Q29waWVzIHRoZSBjb250ZW50cyBvZiB0aGUgb2ZmLXNjcmVlbiByZW5kZXIgdGFyZ2V0IHVzZWQg
YnkgdGhlIFdlYkdMCisgICAgLy8gY29udGV4dCB0byB0aGUgY29ycmVzcG9uZGluZyB0ZXh0dXJl
IHVzZWQgYnkgdGhlIGNvbXBvc2l0b3IuCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUZXh0dXJl
KCkgPSAwOworCiAgICAgLy8gU3ludGhlc2l6ZXMgYW4gT3BlbkdMIGVycm9yIHdoaWNoIHdpbGwg
YmUgcmV0dXJuZWQgZnJvbSBhCiAgICAgLy8gbGF0ZXIgY2FsbCB0byBnZXRFcnJvci4gVGhpcyBp
cyB1c2VkIHRvIGVtdWxhdGUgT3BlbkdMIEVTCiAgICAgLy8gMi4wIGJlaGF2aW9yIG9uIHRoZSBk
ZXNrdG9wIGFuZCB0byBlbmZvcmNlIGFkZGl0aW9uYWwgZXJyb3IKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oCShyZXZpc2lvbiA2MTkyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFdlYkRldlRv
b2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkZyYW1lOwogY2xh
c3MgV2ViRnJhbWVDbGllbnQ7CitjbGFzcyBXZWJHTEVTMkNvbnRleHQ7CiBjbGFzcyBXZWJOb2Rl
OwogY2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTdHJpbmc7CkBAIC0yOTMsNiArMjk0LDEy
IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHdpbGxFbnRlck1vZGFsTG9v
cCgpOwogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgZGlkRXhpdE1vZGFsTG9vcCgpOwogCisg
ICAgLy8gR1BVIGFjY2VsZXJhdGlvbiBzdXBwb3J0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBSZXR1cm5zIHRoZSBHTEVTMkNvbnRleHQgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgV2ViVmlldy4gT25lIHdpbGwgYmUKKyAgICAvLyBjcmVhdGVkIGlm
IGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KKyAgICB2aXJ0dWFsIFdlYkdMRVMyQ29udGV4dCog
Z2xlczJDb250ZXh0KCkgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlZpZXcoKSB7fQogfTsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lv
biA2MTkyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCisj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCkBAIC01MCwxMCArNTIsMTIgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2luY2x1
ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRlICJX
ZWJHTExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKICNpbmNsdWRlICJXZWJLaXRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1w
bC5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpA
QCAtOTcsNyArMTAxLDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwo
KTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCi0gICAgYm9vbCBpbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKTsKKyAgICBib29sIGluaXRp
YWxpemUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpOwogCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEKCkgY29uc3Q7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdDsKQEAgLTExMSw2ICsxMTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5Q
YWludChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpOwogICAgIHZvaWQgZW5kUGFpbnQo
KTsKIAorICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKKworICAgIFdlYkdMTGF5ZXJDaHJvbWl1
bSogcGxhdGZvcm1MYXllcigpIGNvbnN0OworCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3Q7CiAKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5Nyw2ICszMDUsOSBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IG1f
aW1wbDsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVmUHRyPFdlYkdM
TGF5ZXJDaHJvbWl1bT4gbV9jb21wb3NpdGluZ0xheWVyOworI2VuZGlmCiAjaWYgUExBVEZPUk0o
U0tJQSkKICAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgQ2FudmFzJ3MgYmFj
a2luZyBzdG9yZSBkb24ndAogICAgIC8vIG1hdGNoIHRob3NlIHRoYXQgd2Ugd2VyZSBnaXZlbiBp
biB0aGUgbW9zdCByZWNlbnQgY2FsbCB0bwpAQCAtMzI5LDcgKzM0MCw4IEBAIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnQKICNlbmRpZgogfQogCi1ib29sIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnMpCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemUoR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJpYnV0ZXM7CiAgICAg
d2ViQXR0cmlidXRlcy5hbHBoYSA9IGF0dHJzLmFscGhhOwpAQCAtMzQwLDI0ICszNTIsNDggQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppbml0aWFsaQogICAgIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqIHdlYkNvbnRleHQgPSBXZWJLaXQ6OndlYktpdENsaWVudCgpLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQzRCgpOwogICAgIGlmICghd2ViQ29udGV4dCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghd2ViQ29udGV4dC0+aW5pdGlhbGl6ZSh3ZWJBdHRyaWJ1
dGVzKSkgeworCisgICAgQ2hyb21lKiBjaHJvbWUgPSBzdGF0aWNfY2FzdDxDaHJvbWUqPihob3N0
V2luZG93KTsKKyAgICBXZWJLaXQ6OkNocm9tZUNsaWVudEltcGwqIGNocm9tZUNsaWVudEltcGwg
PSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudEltcGwqPihjaHJvbWUtPmNsaWVudCgp
KTsKKworICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXcgPSBjaHJvbWVDbGllbnRJbXBs
LT53ZWJWaWV3KCk7CisKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIXdlYkNvbnRleHQtPmluaXRpYWxpemUod2ViQXR0cmlidXRlcywgd2ViVmlldykp
IHsKICAgICAgICAgZGVsZXRlIHdlYkNvbnRleHQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgbV9pbXBsLnNldCh3ZWJDb250ZXh0KTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBtX2NvbXBvc2l0aW5nTGF5ZXIgPSBXZWJHTExheWVyQ2hyb21pdW06
OmNyZWF0ZSgwKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCiBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2ltcGwuZ2V0
KCk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGxh
dGZvcm1UZXh0dXJlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9pbXBs
LT5nZXRQbGF0Zm9ybVRleHR1cmVJZCgpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnByZXBhcmVUZXh0dXJlKCkKK3sKKyAgICBtX2ltcGwtPnByZXBhcmVUZXh0dXJlKCk7
Cit9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitXZWJHTExheWVyQ2hyb21p
dW0qIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NvbXBvc2l0aW5nTGF5ZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpiZWdpblBhaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+
Y2FudmFzKCk7CkBAIC0xMDY2LDcgKzExMDIsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBo
aWNzQ29udGV4dDNEKCkKIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCogaW50
ZXJuYWwgPSBuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwotICAgIGlmICghaW50ZXJu
YWwtPmluaXRpYWxpemUoYXR0cnMpKSB7CisgICAgaWYgKCFpbnRlcm5hbC0+aW5pdGlhbGl6ZShh
dHRycywgaG9zdFdpbmRvdykpIHsKICAgICAgICAgZGVsZXRlIGludGVybmFsOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkBAIC0xMDg1LDYgKzExMjEsMjAgQEAgUGxhdGZvcm0zRE9iamVjdCBH
cmFwaGljc0NvbnRleHQzRDo6cGxhdAogICAgIHJldHVybiBtX2ludGVybmFsLT5wbGF0Zm9ybVRl
eHR1cmUoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQor
eworICAgIHJldHVybiBtX2ludGVybmFsLT5wcmVwYXJlVGV4dHVyZSgpOworfQorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0
M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogd2Vi
R0xMYXllciA9IG1faW50ZXJuYWwtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB3ZWJHTExheWVyLT5z
ZXRDb250ZXh0KHRoaXMpOworICAgIHJldHVybiB3ZWJHTExheWVyOworfQorI2VuZGlmCisKIERF
TEVHQVRFX1RPX0lOVEVSTkFMKG1ha2VDb250ZXh0Q3VycmVudCkKIERFTEVHQVRFX1RPX0lOVEVS
TkFMXzFSKHNpemVJbkJ5dGVzLCBpbnQsIGludCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzIocmVz
aGFwZSwgaW50LCBpbnQpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29u
dGV4dDNERGVmYXVsdEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDYxOTIxKQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNERGVm
YXVsdEltcGw6On5XZWJHcmEKICAgICB9CiB9CiAKLWJvb2wgV2ViR3JhcGhpY3NDb250ZXh0M0RE
ZWZhdWx0SW1wbDo6aW5pdGlhbGl6ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRyaWJ1dGVzKQorYm9vbCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjppbml0aWFs
aXplKFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYlZpZXcq
IHdlYlZpZXcpCiB7CiAjaWYgT1MoV0lORE9XUykKICAgICBXTkRDTEFTUyB3YzsKQEAgLTQ2OSw2
ICs0NjksMTcgQEAgYm9vbCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjppcwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordW5zaWduZWQgaW50IFdlYkdyYXBoaWNzQ29udGV4dDNERGVm
YXVsdEltcGw6OmdldFBsYXRmb3JtVGV4dHVyZUlkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpwcmVwYXJlVGV4dHVyZSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKIHN0YXRpYyBpbnQgY3JlYXRlVGV4dHVyZU9iamVjdChHTGVudW0gdGFyZ2V0KQogewogICAg
IEdMdWludCB0ZXh0dXJlID0gMDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhp
Y3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCShyZXZpc2lvbiA2MTkyMSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAgIC8vIFdlYkdyYXBoaWNzQ29udGV4dDNEIG1ldGhvZHMKLSAgICB2aXJ0dWFsIGJv
b2wgaW5pdGlhbGl6ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVz
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJWaWV3Kik7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogCiAgICAgdmlydHVhbCBpbnQgd2lkdGgoKTsKQEAgLTgxLDYgKzgxLDkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHJlYWRCYWNrRnJhbWVidWZmZXIodW5zaWdu
ZWQgY2hhciogcGl4ZWxzLCBzaXplX3QgYnVmZmVyU2l6ZSk7CiAKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGludCBnZXRQbGF0Zm9ybVRleHR1cmVJZCgpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VGV4dHVyZSgpOworCiAgICAgdmlydHVhbCB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVuc2lnbmVk
IGxvbmcgZXJyb3IpOwogCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUodW5zaWduZWQg
bG9uZyB0ZXh0dXJlKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9u
IDYxOTIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTgsNiArMTk4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgcnVuQXRTdGFydCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFVzZXJTdHlsZVNo
ZWV0KGNvbnN0IFdlYlN0cmluZyYgc291cmNlQ29kZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUFsbFVzZXJDb250ZW50KCk7CisgICAgdmlydHVhbCBXZWJHTEVTMkNvbnRleHQqIGdsZXMyQ29u
dGV4dCgpOwogCiAgICAgLy8gV2ViVmlld0ltcGwKIApAQCAtMzM2LDEwICszMzcsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OlNjcm9sbERp
cmVjdGlvbiogc2Nyb2xsRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSogc2Nyb2xsR3JhbnVsYXJpdHkpOwogCi0g
ICAgLy8gUmV0dXJucyB0aGUgR0xFUzJDb250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZp
ZXcuIE9uZSB3aWxsIGJlIGNyZWF0ZWQKLSAgICAvLyBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhp
c3QuCi0gICAgV2ViR0xFUzJDb250ZXh0KiBnbGVzMkNvbnRleHQoKTsKLQogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2FsbCBv
dXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZpZXdJ
bXBsPjsK
</data>
<flag name="review"
          id="46954"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59951</attachid>
            <date>2010-06-28 15:19:33 -0700</date>
            <delta_ts>2010-06-29 10:03:06 -0700</delta_ts>
            <desc>Proposed patch. Fixed linux compile issue.</desc>
            <filename>webGLLayers_41243_1.txt</filename>
            <type>text/plain</type>
            <size>21189</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTkzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDYtMjUgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSG9va2luZyB1cCBXZWJHTCBsYXllcnMgdG8gdGhlIGdwdS1jb21w
b3NpdG9yLiBJbXBsZW1lbnQgbWlzc2luZworICAgICAgICBtZXRob2RzIHRvIHNldCB0aGUgY29u
dGVudHMgb2YgYSBHcmFwaGljc0xheWVyIHdpdGggYSBwbGF0Zm9ybSBzcGVjaWZpYyBXZWJHTAor
ICAgICAgICBMYXllciwgYW5kIHRvIHVwZGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIFdlYkdMIExh
eWVyIHdoZW4gbmVlZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDEyNDMKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHNUb1dlYkdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW06OnJlbW92ZUFsbFN1YmxheWVycyk6CisgICAgICAgICAgTm8gbmVlZCB0byBjYWxsIHNl
dE5lZWRzQ29tbWl0KCkgZnJvbSBoZXJlIGFzIHRoZSBwcmV2aW91cyBjYWxsIHRvCisgICAgICAg
ICAgbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCkgd2lsbCBoYXZlIHRoYXQgZWZmZWN0IChh
bmQgd2Ugb25seSBuZWVkCisgICAgICAgICAgdG8gbm90aWZ5IHRoZSBvd25lciBpZiB0aGVyZSB3
ZXJlIGFjdHVhbGx5IGFueSBzdWJsYXllcnMgcmVtb3ZlZCkuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dCk6CisKIDIwMTAtMDYtMjUgIERlYW4g
SmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgJKHJldmlzaW9uIDYxOTIxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzYsOSArNDM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdDsKICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0
Zm9ybVRleHR1cmUoKSBjb25zdDsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0g
ICAgICAgIC8vIEZJWE1FOiBTdHViYmVkIG91dCBmb3Igbm93LiBNdXN0IGJlIGltcGxlbWVudGVk
IHRvIGdldCBXZWJHTCB3b3JraW5nIHdpdGgKLSAgICAgICAgLy8gYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcuCi0gICAgICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisgICAgICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
ICNlbmRpZgogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpOwpAQCAtNDU1LDcgKzQ1Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2b2lkIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
Q0hST01JVU0pCiAgICAgICAgIC8vIFdpdGggbXVsdGlzYW1wbGluZyBvbiwgYmxpdCBmcm9tIG11
bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgICAgICB2b2lkIHByZXBhcmVUZXh0dXJl
KCk7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDYxOTIx
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zMzMsNiArMzM0LDM1IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1QKICAgICAgICAgdXBkYXRlU3VibGF5
ZXJMaXN0KCk7CiB9CiAKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQordm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzVG9XZWJHTChQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KQoreworICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CisgICAgaWYgKHBsYXRmb3Jt
TGF5ZXIpIHsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgfHwgbV9jb250ZW50
c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9yV2ViR0wpIHsKKyAgICAgICAgICAgIFdl
YkdMTGF5ZXJDaHJvbWl1bSogd2ViR0xMYXllciA9IHN0YXRpY19jYXN0PFdlYkdMTGF5ZXJDaHJv
bWl1bSo+KHBsYXRmb3JtTGF5ZXIpOworICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKHdl
YkdMTGF5ZXIpOworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gd2ViR0xMYXllcjsKKyAg
ICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yV2ViR0w7
CisgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IHBsYXRmb3JtTGF5ZXItPnNldE93bmVyKHRoaXMpOworICAgICAgICBwbGF0Zm9ybUxheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAgICAgICAgICAgY2hpbGRy
ZW5DaGFuZ2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gVGhlIG9sZCBjb250ZW50cyBsYXll
ciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZVN1YmxheWVyTGlzdC4KKyAgICAgICAgICAgIG1f
Y29udGVudHNMYXllciA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2hpbGRyZW5D
aGFuZ2VkKQorICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKK30KKyNlbmRpZgorCiB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb1ZpZGVvKFBsYXRmb3JtTGF5ZXIq
IHZpZGVvTGF5ZXIpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5oCShyZXZpc2lvbiA2MTkyMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYg
Kzg2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvVmlkZW8oUGxhdGZvcm1MYXll
ciopOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvV2ViR0woUGxhdGZvcm1MYXllciop
OwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAkocmV2aXNpb24gNjE5MjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNyAr
Mjk2LDYgQEAgdm9pZCBMYXllckNocm9taXVtOjpyZW1vdmVBbGxTdWJsYXllcnMoKQogICAgICAg
ICBBU1NFUlQobGF5ZXItPnN1cGVybGF5ZXIoKSk7CiAgICAgICAgIGxheWVyLT5yZW1vdmVGcm9t
U3VwZXJsYXllcigpOwogICAgIH0KLSAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIExh
eWVyQ2hyb21pdW06OnNldFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4mIHN1YmxheWVycykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA2MTkyMSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzIsNiArMTcyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFNoYWRlclBy
b2dyYW1JZCh1bnNpZ25lZCBzaGFkZXJQcm9ncmFtSWQpIHsgbV9zaGFkZXJQcm9ncmFtSWQgPSBz
aGFkZXJQcm9ncmFtSWQ7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNoYWRlclByb2dyYW1JZCgp
IHsgcmV0dXJuIG1fc2hhZGVyUHJvZ3JhbUlkOyB9CiAKKyAgICB2b2lkIHNldE93bmVyKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpIHsgbV9vd25lciA9IG93bmVyOyB9CisKIHByb3RlY3Rl
ZDoKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIG1fb3duZXI7CiAgICAgTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDYxOTIxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsMTEg
KzYyMyw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXIoTGEKICAgICAg
ICAgICAgIGxheWVyLT51cGRhdGVUZXh0dXJlQ29udGVudHModGV4dHVyZUlkKTsKICAgICAgICAg
fQogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBXZWJHTCBsYXll
cnMgc3RvcCBjaGFuZ2luZyB0aGUgY3VycmVudAotICAgICAgICAvLyBjb250ZXh0LgotICAgICAg
ICBpZiAobGF5ZXItPm93bnNUZXh0dXJlKCkpCi0gICAgICAgICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLQogICAgICAgICBpZiAobGF5ZXItPmRvdWJsZVNpZGVkKCkpCiAgICAgICAgICAgICBn
bERpc2FibGUoR0xfQ1VMTF9GQUNFKTsKICAgICAgICAgZWxzZQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmNwcAkocmV2aXNpb24gNjE5MjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwx
OCBAQAogCiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVuc2lnbmVkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6bV9zaGFkZXJQcm9ncmFtSWQg
PSAwOwogCitQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVt
OjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bShvd25lcikpOworfQorCiBXZWJHTExheWVyQ2hy
b21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQog
ICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fY29udGV4dCgwKQpAQCAtNTMsMTIg
KzYxLDMzIEBAIHVuc2lnbmVkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dGV4dHVyZUlkKCkKIAogdm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVDb250ZW50cyh1bnNpZ25lZCB0ZXh0
dXJlSWQpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIEFTU0VSVCh0ZXh0dXJlSWQg
PT0gbV90ZXh0dXJlSWQpOworICAgIEFTU0VSVChtX2NvbnRleHQpOworICAgIGlmIChtX3RleHR1
cmVDaGFuZ2VkKSB7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0
dXJlSWQpOworICAgICAgICAvLyBTZXQgdGhlIG1pbi1tYWcgZmlsdGVycyB0byBsaW5lYXIgYW5k
IHdyYXAgbW9kZXMgdG8gR0xfQ0xBTVBfVE9fRURHRQorICAgICAgICAvLyB0byBnZXQgYXJvdW5k
IE5QT1QgdGV4dHVyZSBsaW1pdGF0aW9ucyBvZiBHTEVTLgorICAgICAgICBnbFRleFBhcmFtZXRl
cmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAg
ICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgICAgICBtX3RleHR1cmVDaGFuZ2VkID0gZmFsc2U7CisgICAgfQorICAgIC8vIFVwZGF0ZSB0
aGUgY29udGVudHMgb2YgdGhlIHRleHR1cmUgdXNlZCBieSB0aGUgY29tcG9zaXRvci4KKyAgICBp
ZiAobV9jb250ZW50c0RpcnR5KSB7CisgICAgICAgIG1fY29udGV4dC0+cHJlcGFyZVRleHR1cmUo
KTsKKyAgICAgICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CisgICAgfQogfQogCiB2b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgbV9jb250ZXh0ID0gY29uc3Rf
Y2FzdDxHcmFwaGljc0NvbnRleHQzRCo+KGNvbnRleHQpOworCisgICAgdW5zaWduZWQgaW50IHRl
eHR1cmVJZCA9IG1fY29udGV4dC0+cGxhdGZvcm1UZXh0dXJlKCk7CisgICAgaWYgKHRleHR1cmVJ
ZCAhPSBtX3RleHR1cmVJZCkKKyAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9IHRydWU7CisgICAg
bV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CiB9CiAKIH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gNjE5MzMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDYtMjUgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSG9va2luZyB1cCBHcmFwaGljc0NvbnRleHQzRCB0byB0aGUgZ3B1
IGNvbXBvc2l0b3IuCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgaXMgbm93IGlu
aXRpYWxpemVkIHdpdGggYSBwb2ludGVyIHRvIHRoZSBIb3N0V2luZG93CisgICAgICAgIHRoYXQg
Y29ycmVzcG9uZHMgdG8gdGhlIFdlYlZpZXcgY29udGFpbmluZyB0aGUgY29udGV4dC4gVGhlIGlu
aXRpYWxpemVyCisgICAgICAgIGZvcmNlcyBhIFdlYkdMRVMyQ29udGV4dCB0byBiZSBjcmVhdGVk
IGZvciB0aGUgV2ViVmlldyAoaWYgb25lIGRvZXNuJ3QgYWxyZWFkeQorICAgICAgICBleGlzdCkg
YW5kIHVzZXMgdGhlIHZpZXcncyBHTCBjb250ZXh0IGFzIGEgcGFyZW50IHRvIHRoZSBHTCBjb250
ZXh0IGNyZWF0ZWQKKyAgICAgICAgZm9yIFdlYkdMLiBUaGlzIGFsbG93cyB0aGUgY29tcG9zaXRv
ciB0byByZWFkIHRoZSB0ZXh0dXJlIGFzc29jaWF0ZWQgd2l0aCAKKyAgICAgICAgV2ViR0wncyBm
cmFtZSBidWZmZXIuIFdlIGFsc28gcGx1bWIgdGhvdWdoIEdyYXBoaWNzQ29udGV4dDNEJ3MgcHJl
cGFyZVRleHR1cmUKKyAgICAgICAgYW5kIHBsYXRmb3JtTGF5ZXIgbWV0aG9kcyB3aGljaCBhcmUg
cmVxdWlyZWQgYnkgdGhlIGNvbXBvc2l0b3IgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjQzCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAg
ICAgTWFkZSBnbGVzMkNvbnRleHQoKSBhIHZpcnR1YWwgbWV0aG9kIG9uIFdlYlZpZXcgaW5zdGVh
ZCBvZiBXZWJWaWV3SW1wbAorICAgICAgICAgICAgdG8gYWxsb3cgYWNjZXNzIHRvIGl0IGZyb20g
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aW5pdGlhbGl6ZSgpLgorICAgICAgICAqIHNyYy9H
cmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnByZXBhcmVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHNy
Yy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldFBsYXRmb3JtVGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAqIHNyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMDYtMjUgIFZp
Y3RvciBXYW5nICA8dmljdG9yd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gRmlzaGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaAkocmV2aXNpb24gNjE5MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUeXBlZGVmIGZvciBzZXJ2ZXItc2lkZSBvYmplY3RzIGxp
a2UgT3BlbkdMIHRleHR1cmVzIGFuZCBwcm9ncmFtIG9iamVjdHMuCiB0eXBlZGVmIHVuc2lnbmVk
IGludCBXZWJHTElkOwogCitjbGFzcyBXZWJWaWV3OworCiAvLyBUaGlzIGludGVyZmFjZSBhYnN0
cmFjdHMgdGhlIG9wZXJhdGlvbnMgcGVyZm9ybWVkIGJ5IHRoZQogLy8gR3JhcGhpY3NDb250ZXh0
M0QgaW4gb3JkZXIgdG8gaW1wbGVtZW50IFdlYkdMLiBOZWFybHkgYWxsIG9mIHRoZQogLy8gbWV0
aG9kcyBleHBvc2VkIG9uIHRoaXMgaW50ZXJmYWNlIG1hcCBkaXJlY3RseSB0byBlbnRyeSBwb2lu
dHMgaW4KQEAgLTgxLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW5pdGlhbGl6ZXMgdGhl
IGdyYXBoaWNzIGNvbnRleHQ7IHNob3VsZCBiZSB0aGUgZmlyc3Qgb3BlcmF0aW9uIHBlcmZvcm1l
ZAogICAgIC8vIG9uIG5ld2x5LWNvbnN0cnVjdGVkIGluc3RhbmNlcy4gUmV0dXJucyB0cnVlIG9u
IHN1Y2Nlc3MuCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoQXR0cmlidXRlcykgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKEF0dHJpYnV0ZXMsIFdlYlZpZXcqKSA9IDA7CiAK
ICAgICAvLyBNYWtlcyB0aGUgT3BlbkdMIGNvbnRleHQgY3VycmVudCBvbiB0aGUgY3VycmVudCB0
aHJlYWQuIFJldHVybnMgdHJ1ZSBvbgogICAgIC8vIHN1Y2Nlc3MuCkBAIC0xMDgsNiArMTEwLDE1
IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KICAgICB2aXJ0dWFs
IGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBi
dWZmZXJTaXplKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgdGV4dHVyZSB3
aGljaCBpcyB1c2VkIGZvciBzdG9yaW5nIHRoZSBjb250ZW50cyBvZgorICAgIC8vIHRoZSBmcmFt
ZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LiBUaGlzIHRleHR1cmUgaXMgYWNj
ZXNzaWJsZQorICAgIC8vIGJ5IHRoZSBncHUtYmFzZWQgcGFnZSBjb21wb3NpdG9yLgorICAgIHZp
cnR1YWwgdW5zaWduZWQgZ2V0UGxhdGZvcm1UZXh0dXJlSWQoKSA9IDA7CisKKyAgICAvLyBDb3Bp
ZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBvZmYtc2NyZWVuIHJlbmRlciB0YXJnZXQgdXNlZCBieSB0
aGUgV2ViR0wKKyAgICAvLyBjb250ZXh0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHRleHR1cmUgdXNl
ZCBieSB0aGUgY29tcG9zaXRvci4KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRleHR1cmUoKSA9
IDA7CisKICAgICAvLyBTeW50aGVzaXplcyBhbiBPcGVuR0wgZXJyb3Igd2hpY2ggd2lsbCBiZSBy
ZXR1cm5lZCBmcm9tIGEKICAgICAvLyBsYXRlciBjYWxsIHRvIGdldEVycm9yLiBUaGlzIGlzIHVz
ZWQgdG8gZW11bGF0ZSBPcGVuR0wgRVMKICAgICAvLyAyLjAgYmVoYXZpb3Igb24gdGhlIGRlc2t0
b3AgYW5kIHRvIGVuZm9yY2UgYWRkaXRpb25hbCBlcnJvcgpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmgJKHJldmlzaW9uIDYxOTIxKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgV2ViRGV2VG9vbHNB
Z2VudENsaWVudDsKIGNsYXNzIFdlYkRyYWdEYXRhOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJGcmFtZUNsaWVudDsKK2NsYXNzIFdlYkdMRVMyQ29udGV4dDsKIGNsYXNzIFdlYk5vZGU7CiBj
bGFzcyBXZWJTZXR0aW5nczsKIGNsYXNzIFdlYlN0cmluZzsKQEAgLTI5Myw2ICsyOTQsMTIgQEAg
cHVibGljOgogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgd2lsbEVudGVyTW9kYWxMb29wKCk7
CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBkaWRFeGl0TW9kYWxMb29wKCk7CiAKKyAgICAv
LyBHUFUgYWNjZWxlcmF0aW9uIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFJldHVybnMgdGhlIEdMRVMyQ29udGV4dCBhc3NvY2lh
dGVkIHdpdGggdGhpcyBXZWJWaWV3LiBPbmUgd2lsbCBiZQorICAgIC8vIGNyZWF0ZWQgaWYgaXQg
ZG9lc24ndCBhbHJlYWR5IGV4aXN0LgorICAgIHZpcnR1YWwgV2ViR0xFUzJDb250ZXh0KiBnbGVz
MkNvbnRleHQoKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlldygpIHt9CiB9OwpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDYx
OTIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNs
dWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
QEAgLTUwLDEwICs1MiwxMiBAQAogI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCiAjaW5jbHVkZSAi
V2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVWludDhBcnJheS5oIgorI2luY2x1ZGUgIldlYkdM
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSAiV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oIgogI2luY2x1ZGUgIldlYktp
dC5oIgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgi
CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC05
Nyw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwog
ICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CiAKLSAgICBib29sIGluaXRpYWxpemUo
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpOworICAgIGJvb2wgaW5pdGlhbGl6
ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdyk7CiAKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QoKSBjb25zdDsKICAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgp
IGNvbnN0OwpAQCAtMTExLDYgKzExNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpblBhaW50
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCk7CiAgICAgdm9pZCBlbmRQYWludCgpOwog
CisgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogcGxhdGZvcm1MYXllcigpIGNvbnN0Owor
I2VuZGlmCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3Q7CiAKICAgICAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTI5Nyw2ICszMDYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgT3du
UHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IG1faW1wbDsKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gbV9jb21w
b3NpdGluZ0xheWVyOworI2VuZGlmCiAjaWYgUExBVEZPUk0oU0tJQSkKICAgICAvLyBJZiB0aGUg
d2lkdGggYW5kIGhlaWdodCBvZiB0aGUgQ2FudmFzJ3MgYmFja2luZyBzdG9yZSBkb24ndAogICAg
IC8vIG1hdGNoIHRob3NlIHRoYXQgd2Ugd2VyZSBnaXZlbiBpbiB0aGUgbW9zdCByZWNlbnQgY2Fs
bCB0bwpAQCAtMzI5LDcgKzM0MSw4IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFw
aGljc0NvbnQKICNlbmRpZgogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omlu
aXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitib29sIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJpYnV0ZXM7CiAgICAgd2ViQXR0cmlidXRlcy5hbHBoYSA9
IGF0dHJzLmFscGhhOwpAQCAtMzQwLDI0ICszNTMsNDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjppbml0aWFsaQogICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIHdl
YkNvbnRleHQgPSBXZWJLaXQ6OndlYktpdENsaWVudCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQz
RCgpOwogICAgIGlmICghd2ViQ29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghd2ViQ29udGV4dC0+aW5pdGlhbGl6ZSh3ZWJBdHRyaWJ1dGVzKSkgeworCisgICAgQ2hyb21l
KiBjaHJvbWUgPSBzdGF0aWNfY2FzdDxDaHJvbWUqPihob3N0V2luZG93KTsKKyAgICBXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGwqIGNocm9tZUNsaWVudEltcGwgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGwqPihjaHJvbWUtPmNsaWVudCgpKTsKKworICAgIFdlYktpdDo6V2Vi
Vmlld0ltcGwqIHdlYlZpZXcgPSBjaHJvbWVDbGllbnRJbXBsLT53ZWJWaWV3KCk7CisKKyAgICBp
ZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXdlYkNvbnRleHQt
PmluaXRpYWxpemUod2ViQXR0cmlidXRlcywgd2ViVmlldykpIHsKICAgICAgICAgZGVsZXRlIHdl
YkNvbnRleHQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV9pbXBsLnNldCh3
ZWJDb250ZXh0KTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBtX2Nv
bXBvc2l0aW5nTGF5ZXIgPSBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyNlbmRpZgog
ICAgIHJldHVybiB0cnVlOwogfQogCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdAogewot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2ltcGwuZ2V0KCk7CiB9CiAKIFBsYXRmb3JtM0RP
YmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9pbXBsLT5nZXRQbGF0Zm9ybVRleHR1cmVJ
ZCgpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnByZXBhcmVUZXh0dXJl
KCkKK3sKKyAgICBtX2ltcGwtPnByZXBhcmVUZXh0dXJlKCk7Cit9CisKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCitXZWJHTExheWVyQ2hyb21pdW0qIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbXBvc2l0
aW5nTGF5ZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpiZWdpblBhaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsKICAgICBI
VE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CkBAIC0xMDY2LDcg
KzExMDMsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKIFBhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7
CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCogaW50ZXJuYWwgPSBuZXcgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbCgpOwotICAgIGlmICghaW50ZXJuYWwtPmluaXRpYWxpemUoYXR0cnMp
KSB7CisgICAgaWYgKCFpbnRlcm5hbC0+aW5pdGlhbGl6ZShhdHRycywgaG9zdFdpbmRvdykpIHsK
ICAgICAgICAgZGVsZXRlIGludGVybmFsOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0x
MDg1LDYgKzExMjIsMjAgQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6cGxh
dAogICAgIHJldHVybiBtX2ludGVybmFsLT5wbGF0Zm9ybVRleHR1cmUoKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQoreworICAgIHJldHVybiBtX2ludGVy
bmFsLT5wcmVwYXJlVGV4dHVyZSgpOworfQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBj
b25zdAoreworICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogd2ViR0xMYXllciA9IG1faW50ZXJuYWwt
PnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB3ZWJHTExheWVyLT5zZXRDb250ZXh0KHRoaXMpOworICAg
IHJldHVybiB3ZWJHTExheWVyOworfQorI2VuZGlmCisKIERFTEVHQVRFX1RPX0lOVEVSTkFMKG1h
a2VDb250ZXh0Q3VycmVudCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzFSKHNpemVJbkJ5dGVzLCBp
bnQsIGludCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzIocmVzaGFwZSwgaW50LCBpbnQpCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0RE
ZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDYxOTIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0
LDcgKzE5NCw3IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6On5XZWJHcmEKICAg
ICB9CiB9CiAKLWJvb2wgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6aW5pdGlhbGl6
ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorYm9vbCBXZWJH
cmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjppbml0aWFsaXplKFdlYkdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAjaWYgT1Mo
V0lORE9XUykKICAgICBXTkRDTEFTUyB3YzsKQEAgLTQ2OSw2ICs0NjksMTcgQEAgYm9vbCBXZWJH
cmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjppcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
dW5zaWduZWQgaW50IFdlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldFBsYXRmb3Jt
VGV4dHVyZUlkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsOjpwcmVwYXJlVGV4dHVy
ZSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHN0YXRpYyBpbnQgY3JlYXRl
VGV4dHVyZU9iamVjdChHTGVudW0gdGFyZ2V0KQogewogICAgIEdMdWludCB0ZXh0dXJlID0gMDsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0
M0REZWZhdWx0SW1wbC5oCShyZXZpc2lvbiA2MTkyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIFdlYkdyYXBo
aWNzQ29udGV4dDNEIG1ldGhvZHMKLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShXZWJHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aW5pdGlhbGl6ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBX
ZWJWaWV3Kik7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAg
dmlydHVhbCBpbnQgd2lkdGgoKTsKQEAgLTgxLDYgKzgxLDkgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIHJlYWRCYWNrRnJhbWVidWZmZXIodW5zaWduZWQgY2hhciogcGl4ZWxzLCBzaXpl
X3QgYnVmZmVyU2l6ZSk7CiAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRQbGF0Zm9ybVRl
eHR1cmVJZCgpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOworCiAgICAgdmly
dHVhbCB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpOwogCiAgICAg
dmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlKTsKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDYxOTIxKQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcnVuQXRTdGFy
dCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFdlYlN0cmluZyYg
c291cmNlQ29kZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7Cisg
ICAgdmlydHVhbCBXZWJHTEVTMkNvbnRleHQqIGdsZXMyQ29udGV4dCgpOwogCiAgICAgLy8gV2Vi
Vmlld0ltcGwKIApAQCAtMzM2LDEwICszMzcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiogc2Nyb2xsRGlyZWN0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpTY3JvbGxH
cmFudWxhcml0eSogc2Nyb2xsR3JhbnVsYXJpdHkpOwogCi0gICAgLy8gUmV0dXJucyB0aGUgR0xF
UzJDb250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZpZXcuIE9uZSB3aWxsIGJlIGNyZWF0
ZWQKLSAgICAvLyBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCi0gICAgV2ViR0xFUzJDb250
ZXh0KiBnbGVzMkNvbnRleHQoKTsKLQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViVmll
dzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2FsbCBvdXIgY29uc3RydWN0b3IKICAgICBm
cmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZpZXdJbXBsPjsK
</data>
<flag name="review"
          id="47132"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="47133"
          type_id="3"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>