<?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>89576</bug_id>
          
          <creation_ts>2012-06-20 09:06:45 -0700</creation_ts>
          <short_desc>Scrolling tree should be testable</short_desc>
          <delta_ts>2013-09-05 08:32:35 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>89216</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sami Kyöstilä">skyostil</reporter>
          <assigned_to name="Sami Kyöstilä">skyostil</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>653528</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-06-20 09:06:45 -0700</bug_when>
    <thetext>Scrolling tree should be testable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653536</commentid>
    <comment_count>1</comment_count>
      <attachid>148582</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-06-20 09:11:14 -0700</bug_when>
    <thetext>Created attachment 148582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653539</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 09:16:13 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653547</commentid>
    <comment_count>3</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-06-20 09:29:51 -0700</bug_when>
    <thetext>Here&apos;s my original patch from bug 89216. It has the problem that the output of scrollingTreeAsText() is very specific to Chromium&apos;s implementation of the scrolling tree.

Is there a way to make that output more portable, or should we use some entirely other mechanism to test ScrollingCoordinator?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653629</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-20 10:41:27 -0700</bug_when>
    <thetext>Simon&apos;s feedback on bug 89216 was that we should test using the ScrollingTree nodes, but I disagree.  The ScrollingTree notion as it exists is very mac-specific (or in particular CoreAnimation-specific) and is not something that can be supported by the chromium or Qt compositor, so I do not think it is appropriate to rely on for cross-platform tests.  If ScrollingTree was factored differently - perhaps if it was more of a data type rather than encapsulating a specific threading model - then maybe we could use it elsewhere, but today that&apos;s not an option.

An alternate approach to dumping a tree would be to dump a serialization of ScrollingCoordinator calls.  That part of the interface is shared everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654446</commentid>
    <comment_count>5</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-06-21 06:31:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; An alternate approach to dumping a tree would be to dump a serialization of ScrollingCoordinator calls.  That part of the interface is shared everywhere.

I like this idea, although it seems like these logs could grow large fairly quickly depending on the complexity of the page. For instance, even for a blank page the non-fast scrollable region is calculated 4 times.

Since we only really care about the end state in tests, I propose we start by dumping just the bits of information we need and work from there. I&apos;ll upload a patch that gives the following both with Chromium and the ScrollingTree implementations:

 - Whether non-main-thread scrolling is supported with the current page
   contents.
 - Whether there are registered wheel event handlers on the page.
 - The non-fast scrollable region of the page.
 - Number of fixed position layer containers and layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654457</commentid>
    <comment_count>6</comment_count>
      <attachid>148787</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-06-21 06:37:56 -0700</bug_when>
    <thetext>Created attachment 148787
Patch

- scrollingTreeAsText() now only returns basic high-level facts about the tree.
- Added test to verify current (buggy) behavior of fixed position containers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871558</commentid>
    <comment_count>7</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2013-04-09 02:27:39 -0700</bug_when>
    <thetext>The scrolling tree is already being tested by layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925047</commentid>
    <comment_count>8</comment_count>
      <attachid>148787</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-05 08:32:35 -0700</bug_when>
    <thetext>Comment on attachment 148787
Patch

The work on this bug has ceased, removing the r? flag on the patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148582</attachid>
            <date>2012-06-20 09:11:14 -0700</date>
            <delta_ts>2012-06-21 06:37:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89576-20120620171113.patch</filename>
            <type>text/plain</type>
            <size>17683</size>
            <attacher name="Sami Kyöstilä">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY3MDAzNzk2MTc0ZjEy
NWI4OGVmNGE0ZjEyMTNkNzJiZWY3MjExYy4uMjRjOTEwM2ZlNzMyY2RkZmNjOTlhNTA4NjVmZDJj
ODlkYWE2NzZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDEyLTA2LTIwICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFNjcm9sbGluZyB0
cmVlIHNob3VsZCBiZSB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSB0ZXN0aW5nIGZyYW1ld29yayBmb3IgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuIExheW91dAorICAgICAgICB0ZXN0cyBjYW4gY2FsbCB0ZXN0UnVu
bmVyLnNjcm9sbGluZ1RyZWVBc1RleHQoKSB0byByZXRyaWV2ZSBhIHRleHQKKyAgICAgICAgcmVw
cmVzZW50YXRpb24gb2YgdGhlIHNjcm9sbGluZyB0cmVlIG9mIHRoZSBjdXJyZW50IHBhZ2UuIFRo
aXMgZmVhdHVyZSBpcworICAgICAgICBjdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBmb3IgdGhl
IENocm9taXVtIHNjcm9sbGluZyBjb29yZGluYXRvciBiYWNrLWVuZC4KKworICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNjcm9sbGluZ1RyZWVBc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAoRnJhbWUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNjcm9sbGluZ1RyZWVBc1RleHQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjcm9sbGluZ1RyZWVBc1RleHQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9t
aXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGVJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpib29s
ZWFuQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmR1bXBMYXllclNjcm9sbGluZ1Byb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdUcmVlQXNUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6aGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckNocm9taXVtOjpub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisKKzIwMTIt
MDYtMjAgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
UmVuZGVyVmlldyBsYXllciBpcyBtYXJrZWQgYXMgZml4ZWQgcG9zaXRpb24gY29udGFpbmVyIGlu
IHRoZSBzY3JvbGxpbmcgdHJlZSBpZiBwYWdlIHNjYWxlICE9IDEKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjE2CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMTAyMWM1ZGI2NjdkMTQ1MjUyZDMwYzE2MDljZWE0OGFkMzQ1NzY3Yy4uNGY0
YzM4YzBkNTc3MDNiMTkzZTUyOTlhNmMwMWEzMTQ2MzA3NTNjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0yMCAgU2FtaSBLeW9zdGlsYSAgPHNr
eW9zdGlsQGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmcgdHJlZSBzaG91bGQgYmUg
dGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5NTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgc2Nyb2xsaW5nVHJlZUFzVGV4dCgpIGZvciB0ZXN0aW5nIHRoZSBzY3JvbGxpbmcgY29v
cmRpbmF0b3IuIEl0CisgICAgICAgIHJldHVybnMgYSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBjdXJyZW50IHNjcm9sbGluZyB0cmVlLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6
CisgICAgICAgIChXZWJGcmFtZSk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2Nyb2xsaW5nVHJlZUFzVGV4dCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdl
YkZyYW1lSW1wbCk6CisKIDIwMTItMDYtMTkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiByZW1vdmUgdW5u
ZWNlc3NhcnkgaW5kaXJlY3Rpb24gZnJvbSBtZXNzYWdlIGxvb3AgaW5zdHJ1bWVudGF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IDkxZDMxZTNiZmQxNDdhODkwZjc2YTczOTAwMGQzYjAwMjUz
NGY4YjQuLmJjYTQ3OGU4YjhmNGM1ZThiYWM3MWM5MWJlYTljM2YyNTA3OTE3M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCkBAIC05MDQsNiArOTA1LDE3IEBAIFN0cmluZyBGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0
KGJvb2wgc2hvd0RlYnVnSW5mbykgY29uc3QKICNlbmRpZgogfQogCitTdHJpbmcgRnJhbWU6OnNj
cm9sbGluZ1RyZWVBc1RleHQoKSBjb25zdAoreworICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgU2Nyb2xs
aW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKTsKKyAgICBpZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxpbmdU
cmVlQXNUZXh0KCk7Cit9CisKIHZvaWQgRnJhbWU6OnNldFBhZ2Vab29tRmFjdG9yKGZsb2F0IGZh
Y3RvcikKIHsKICAgICBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGZhY3RvciwgbV90ZXh0Wm9v
bUZhY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNzdhNzNkODA3MjU3MGIwZGIyOWQ3NDljYzkx
NzQxN2U2YjY5MTI4Ny4uZTZmMTExMzMwYzkwM2FiNjE5NGRhMTU0ODEzOTBiMWVjN2VjYTE0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaApAQCAtMTI0LDYgKzEyNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7
CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGJvb2wgc2hvd0RlYnVn
SW5mbyA9IGZhbHNlKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1RyZWVBc1RleHQo
KSBjb25zdDsKIAogICAgICAgICAvLyBVbmxpa2UgbW9zdCBhY2Nlc3NvcnMgaW4gdGhpcyBjbGFz
cywgZG9tV2luZG93KCkgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgRE9NV2luZG93IGlmIG1fZG9tV2lu
ZG93IGlzIG51bGwuCiAgICAgICAgIC8vIENhbGxlcnMgdGhhdCBkb24ndCBuZWVkIGEgbmV3IERP
TVdpbmRvdyB0byBiZSBjcmVhdGVkIHNob3VsZCB1c2UgZXhpc3RpbmdET01XaW5kb3coKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAppbmRleCA2ZDFmMmE2MGQwNTcyMzZhZDBiNjRkMzE3MDE0NGJmNGM0OTQzNGQ2Li5j
YjhmMzNiOGFlZmYwNzExZjBmYTlkNjJkOTU3YjcxYTFhMWU0MTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBA
IC00NjYsNiArNDY2LDEyIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNG
aXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCEKIH0KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxp
bmdUcmVlQXNUZXh0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KICNlbmRpZiAvLyAhRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggMzU2NDlhOTFmZmI4ZTQ2ODBi
ZGZkZjU1ODNiODg4YjczMjVkZWYwMS4uNWE0OGZiZDljYTBmZDIzMTU3MjA4ZGUxYjYyMThmMWEx
ZjdhMmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5oCkBAIC0xMjMsNiArMTIzLDEwIEBAIHB1YmxpYzoKICAgICAvLyBB
dHRhY2gvZGV0YWNoIGxheWVyIHBvc2l0aW9uIHRvIGFuY2VzdG9yIGZpeGVkIHBvc2l0aW9uIGNv
bnRhaW5lci4KICAgICB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhp
Y3NMYXllciosIGJvb2wpOwogCisgICAgLy8gUmV0dXJuIGEgdGV4dCByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgc2Nyb2xsaW5nIHRyZWUuIFVzZWQgdG8gdmVyaWZ5IHNjcm9sbGluZyBjb29yZGluYXRv
cgorICAgIC8vIGJlaGF2aW9yIGluIGxheW91dCB0ZXN0cy4KKyAgICBTdHJpbmcgc2Nyb2xsaW5n
VHJlZUFzVGV4dCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKaW5kZXggZjBhY2ZlMGNjM2Ix
NzFkMzMxMDQ3MDQ2NTAwMmUwZDJhNTdmZDA5Yy4uYjVlMDcxOTVlZjg3NTk5NmNhMWM2YWVhOTE3
NmJlY2JmZGRhMmMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXND
b250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5CiB2b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5
ZXIqLCBib29sKQogewogfQorCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGlu
Z1RyZWVBc1RleHQoKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KICNlbmRpZiAv
LyAhRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdD
b29yZGluYXRvckNocm9taXVtLmNwcAppbmRleCAwYzNiMGMzMjk0ZDgyOGZiMzUwN2EzNjVjNjdi
MjA1OTM5MzFiMDgxLi40NzA5MTc4YWE5NzdhOTBkZDhhOTZjOGJlOGRmZWY3YmUwZTA0YjUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxp
bmdDb29yZGluYXRvckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcApAQCAtMzAsMTEg
KzMwLDEzIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
Z2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJMYXllckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsYmFyVGhlbWUuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMDEsNCArMjAzLDk1IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5
ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsCiAgICAgICAgIHBsYXRmb3JtTGF5ZXItPnNldEZpeGVk
VG9Db250YWluZXJMYXllcihlbmFibGUpOwogfQogCitzdGF0aWMgdm9pZCB3cml0ZUluZGVudChU
ZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBpbnQgaW5kZW50KQoreworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgaW5kZW50OyArK2kpCisgICAgICAgIHRleHRTdHJlYW0gPDwgIiAgIjsKK30KKworc3Rh
dGljIGNvbnN0IGNoYXIqIGJvb2xlYW5Bc1RleHQoYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
dmFsdWUgPyAieWVzIiA6ICJubyI7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBMYXllclNjcm9sbGlu
Z1Byb3BlcnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgR3JhcGhpY3NMYXllciog
bGF5ZXIsIGludCBpbmRlbnQpCit7CisgICAgTGF5ZXJDaHJvbWl1bSogcGxhdGZvcm1MYXllciA9
IGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgaWYgKCFwbGF0Zm9ybUxheWVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICB3cml0ZUluZGVudCh0ZXh0U3RyZWFtLCBpbmRlbnQpOworICAgIHRl
eHRTdHJlYW0gPDwgInNjcm9sbGFibGU6ICIgPDwgYm9vbGVhbkFzVGV4dChwbGF0Zm9ybUxheWVy
LT5zY3JvbGxhYmxlKCkpIDw8ICJcbiI7CisKKyAgICBpZiAocGxhdGZvcm1MYXllci0+c2Nyb2xs
YWJsZSgpKSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRleHRTdHJlYW0sIGluZGVudCk7CisgICAg
ICAgIHRleHRTdHJlYW0gPDwgInNjcm9sbFBvc2l0aW9uOiAiIDw8IHBsYXRmb3JtTGF5ZXItPnNj
cm9sbFBvc2l0aW9uKCkueCgpIDw8ICIsICIgPDwgcGxhdGZvcm1MYXllci0+c2Nyb2xsUG9zaXRp
b24oKS55KCkgPDwgIlxuIjsKKworICAgICAgICB3cml0ZUluZGVudCh0ZXh0U3RyZWFtLCBpbmRl
bnQpOworICAgICAgICB0ZXh0U3RyZWFtIDw8ICJtYXhTY3JvbGxQb3NpdGlvbjogIiA8PCBwbGF0
Zm9ybUxheWVyLT5tYXhTY3JvbGxQb3NpdGlvbigpLndpZHRoKCkgPDwgIiwgIiA8PCBwbGF0Zm9y
bUxheWVyLT5tYXhTY3JvbGxQb3NpdGlvbigpLmhlaWdodCgpIDw8ICJcbiI7CisgICAgfQorCisg
ICAgd3JpdGVJbmRlbnQodGV4dFN0cmVhbSwgaW5kZW50KTsKKyAgICB0ZXh0U3RyZWFtIDw8ICJz
aG91bGRTY3JvbGxPbk1haW5UaHJlYWQ6ICIgPDwgYm9vbGVhbkFzVGV4dChwbGF0Zm9ybUxheWVy
LT5zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSkgPDwgIlxuIjsKKworICAgIHdyaXRlSW5kZW50
KHRleHRTdHJlYW0sIGluZGVudCk7CisgICAgdGV4dFN0cmVhbSA8PCAiaGF2ZVdoZWVsRXZlbnRI
YW5kbGVyczogIiA8PCBib29sZWFuQXNUZXh0KHBsYXRmb3JtTGF5ZXItPmhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMoKSkgPDwgIlxuIjsKKworICAgIGlmICghcGxhdGZvcm1MYXllci0+bm9uRmFzdFNj
cm9sbGFibGVSZWdpb24oKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgd3JpdGVJbmRlbnQodGV4dFN0
cmVhbSwgaW5kZW50KTsKKyAgICAgICAgdGV4dFN0cmVhbSA8PCAibm9uRmFzdFNjcm9sbGFibGVS
ZWdpb246ICI7CisgICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHBsYXRmb3JtTGF5ZXIt
Pm5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkucmVjdHMoKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHRleHRTdHJlYW0gPDwg
IlsiIDw8IHJlY3RzW2ldLngoKSA8PCAiLCAiIDw8IHJlY3RzW2ldLnkoKSA8PCAiLCAiIDw8IHJl
Y3RzW2ldLndpZHRoKCkgPDwgIiwgIiA8PCByZWN0c1tpXS5oZWlnaHQoKSA8PCAiXSAiOworICAg
ICAgICB0ZXh0U3RyZWFtIDw8ICJcbiI7CisgICAgfQorCisgICAgd3JpdGVJbmRlbnQodGV4dFN0
cmVhbSwgaW5kZW50KTsKKyAgICB0ZXh0U3RyZWFtIDw8ICJpc0NvbnRhaW5lckZvckZpeGVkUG9z
aXRpb25MYXllcnM6ICIgPDwgYm9vbGVhbkFzVGV4dChwbGF0Zm9ybUxheWVyLT5pc0NvbnRhaW5l
ckZvckZpeGVkUG9zaXRpb25MYXllcnMoKSkgPDwgIlxuIjsKKworICAgIHdyaXRlSW5kZW50KHRl
eHRTdHJlYW0sIGluZGVudCk7CisgICAgdGV4dFN0cmVhbSA8PCAiZml4ZWRUb0NvbnRhaW5lckxh
eWVyOiAiIDw8IGJvb2xlYW5Bc1RleHQocGxhdGZvcm1MYXllci0+Zml4ZWRUb0NvbnRhaW5lckxh
eWVyKCkpIDw8ICJcbiI7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBMYXllcihUZXh0U3RyZWFtJiB0
ZXh0U3RyZWFtLCBjb25zdCBHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGVudCkKK3sKKyAg
ICB3cml0ZUluZGVudCh0ZXh0U3RyZWFtLCBpbmRlbnQpOworICAgIHRleHRTdHJlYW0gPDwgIkdy
YXBoaWNzTGF5ZXJcbiI7CisgICAgZHVtcExheWVyU2Nyb2xsaW5nUHJvcGVydGllcyh0ZXh0U3Ry
ZWFtLCBsYXllciwgaW5kZW50ICsgMik7CisKKyAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigp
KSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRleHRTdHJlYW0sIGluZGVudCArIDIpOworICAgICAg
ICB0ZXh0U3RyZWFtIDw8ICJSZXBsaWNhOlxuIjsKKyAgICAgICAgZHVtcExheWVyKHRleHRTdHJl
YW0sIGxheWVyLT5yZXBsaWNhTGF5ZXIoKSwgaW5kZW50ICsgMyk7CisgICAgfQorCisgICAgaWYg
KGxheWVyLT5tYXNrTGF5ZXIoKSkgeworICAgICAgICB3cml0ZUluZGVudCh0ZXh0U3RyZWFtLCBp
bmRlbnQgKyAyKTsKKyAgICAgICAgdGV4dFN0cmVhbSA8PCAiTWFzazpcbiI7CisgICAgICAgIGR1
bXBMYXllcih0ZXh0U3RyZWFtLCBsYXllci0+bWFza0xheWVyKCksIGluZGVudCArIDMpOworICAg
IH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgp
OyArK2kpCisgICAgICAgIGR1bXBMYXllcih0ZXh0U3RyZWFtLCBsYXllci0+Y2hpbGRyZW4oKVtp
XSwgaW5kZW50ICsgMSk7Cit9CisKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xs
aW5nVHJlZUFzVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFn
ZS0+bWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlclZpZXcgfHwgIXJlbmRlclZpZXctPmNvbXBvc2l0b3IoKSB8fCAhcmVu
ZGVyVmlldy0+Y29tcG9zaXRvcigpLT5yb290R3JhcGhpY3NMYXllcigpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICBUZXh0U3RyZWFtIHRleHRTdHJlYW07CisgICAgZHVtcExheWVy
KHRleHRTdHJlYW0sIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS0+cm9vdEdyYXBoaWNzTGF5ZXIo
KSwgMCk7CisgICAgcmV0dXJuIHRleHRTdHJlYW0ucmVsZWFzZSgpOworI2Vsc2UKKyAgICByZXR1
cm4gU3RyaW5nKCk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDRhNWYx
YWU3M2EwM2IyOWFlMzkxY2U0Y2MwMmI2MzBiMmE5OTI2MzUuLmYwZTJkYWY2MGQzY2RmOTk4MWY4
ODQ1YTMyZTI4NDAzYzdiMzAyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE2Niw5ICsxNjYs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sKTsKICAgICBib29sIHNj
cm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0KICAgICB2b2lkIHNldFNo
b3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKTsKKyAgICBib29sIHNob3VsZFNjcm9sbE9uTWFp
blRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOyB9CiAg
ICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwotICAgIGNvbnN0IFJlZ2lv
biYgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSB7IHJldHVybiBtX25vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uOyB9CisgICAgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CiAgICAgdm9pZCBzZXROb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKKyAgICBjb25zdCBSZWdpb24mIG5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsg
fQogICAgIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKCkgeyBtX25vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCA9IHRydWU7IH0KICAgICB2b2lkIHNldExheWVyU2Ny
b2xsRGVsZWdhdGUoTGF5ZXJDaHJvbWl1bVNjcm9sbERlbGVnYXRlKiBsYXllclNjcm9sbERlbGVn
YXRlKSB7IG1fbGF5ZXJTY3JvbGxEZWxlZ2F0ZSA9IGxheWVyU2Nyb2xsRGVsZWdhdGU7IH0KICAg
ICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCmluZGV4IDVjZDdmNWYxZWRlMDJmOTg1MWQ0NTgzMDJjYWViMTU5MmMz
MmMwN2IuLjYyNzYyMWQxYjNiMmRiNTY1NDQxZTFlYWY0ZTQzYzA5MzhhM2IzODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaApAQCAtNjQ1LDYgKzY0NSwxMCBAQCBw
dWJsaWM6CiAgICAgLy8gdGV4dCBmb3JtLiBUaGlzIGlzIHVzZWQgb25seSBieSBsYXlvdXQgdGVz
dHMuCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGJvb2wgc2hvd0RlYnVn
SW5mbyA9IGZhbHNlKSBjb25zdCA9IDA7CiAKKyAgICAvLyBEdW1wcyB0aGUgc2Nyb2xsaW5nIHRy
ZWUsIHVzZWQgYnkgdGhlIHNjcm9sbGluZyBjb29yZGluYXRvciwgaW4KKyAgICAvLyB0ZXh0IGZv
cm0uIFRoaXMgaXMgdXNlZCBvbmx5IGJ5IGxheW91dCB0ZXN0cy4KKyAgICB2aXJ0dWFsIFdlYlN0
cmluZyBzY3JvbGxpbmdUcmVlQXNUZXh0KCkgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAg
fldlYkZyYW1lKCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAKaW5kZXggODhmZDlmNjFkZTY1NmJhYmE5OTZkOWU1YzNlNTJiOTM1ZWZlNDFjYS4u
NWJkNjBkMzVjYmNkZjg3ZWFjMjAwYmVlNmM5M2MxOWMwYzBiMzhkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0yMDMxLDYgKzIwMzEsMTMgQEAg
V2ViU3RyaW5nIFdlYkZyYW1lSW1wbDo6bGF5ZXJUcmVlQXNUZXh0KGJvb2wgc2hvd0RlYnVnSW5m
bykgY29uc3QKICAgICByZXR1cm4gV2ViU3RyaW5nKG1fZnJhbWUtPmxheWVyVHJlZUFzVGV4dChz
aG93RGVidWdJbmZvKSk7CiB9CiAKK1dlYlN0cmluZyBXZWJGcmFtZUltcGw6OnNjcm9sbGluZ1Ry
ZWVBc1RleHQoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIFdl
YlN0cmluZygpOworICAgIHJldHVybiBXZWJTdHJpbmcobV9mcmFtZS0+c2Nyb2xsaW5nVHJlZUFz
VGV4dCgpKTsKK30KKwogLy8gV2ViRnJhbWVJbXBsIHB1YmxpYyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUGFzc1JlZlB0cjxXZWJG
cmFtZUltcGw+IFdlYkZyYW1lSW1wbDo6Y3JlYXRlKFdlYkZyYW1lQ2xpZW50KiBjbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDM5OTM3NDcxYTEx
ODJlYzFjMGIxNTMyZWI4ZTI1MDAzMDM5ZTI2NTUuLjRhYTI5NWM0YzMzNDdjNTBmNTFkZDUzODhl
MGFiMGE5YTg5ODVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCkBAIC0yMzEsNiArMjMxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNlbGVj
dGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20sIGludCBsZW5ndGgpIGNvbnN0
OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGxheWVyVHJlZUFzVGV4dChib29sIHNob3dEZWJ1Z0lu
Zm8gPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgc2Nyb2xsaW5nVHJlZUFz
VGV4dCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnJhbWVJ
bXBsPiBjcmVhdGUoV2ViRnJhbWVDbGllbnQqIGNsaWVudCk7CiAgICAgdmlydHVhbCB+V2ViRnJh
bWVJbXBsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYTlhNmYyNzM2MWIwM2E1Yzc1OTkwNWE3MThmYmNjMGI0MzcxNTk2Yy4uMjUwY2Q1M2E1
ZTk1ZDRkYjJkMDI1NjRkZDY3OGJmYWNlNTUxMGFmOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTIwICBT
YW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGlu
ZyB0cmVlIHNob3VsZCBiZSB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBzY3JvbGxpbmdUcmVlQXNUZXh0KCkgZm9yIHRlc3Rpbmcg
dGhlIHNjcm9sbGluZyBjb29yZGluYXRvci4gSXQKKyAgICAgICAgcmV0dXJucyBhIHRleHQgcmVw
cmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2Nyb2xsaW5nIHRyZWUuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNjcm9sbGluZ1RyZWVBc1RleHQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcik6CisKIDIwMTItMDYtMTkgIFpvbHRhbiBIb3J2YXRoICA8em9s
dGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBNb2RpZnkgSFRUUFMgcG9ydCB0byA4NDQz
IGZvciBwZXJmb3JtYW5jZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDEyMDE5N2UyNTYzY2RhZmY4
NDFjODJlYjVkYWIzNGRiZWY4ZDIyZjMuLjUyYzNmZTY3OTg4N2ZjZWFhYzFjNDEzNDYwOGViYWU5
ZjJlMmI2NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5k
TWV0aG9kKCJyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOwogICAgIGJpbmRNZXRo
b2QoInJlcGFpbnRTd2VlcEhvcml6b250YWxseSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVw
YWludFN3ZWVwSG9yaXpvbnRhbGx5KTsKICAgICBiaW5kTWV0aG9kKCJyZXNldFBhZ2VWaXNpYmls
aXR5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpyZXNldFBhZ2VWaXNpYmlsaXR5KTsKKyAgICBi
aW5kTWV0aG9kKCJzY3JvbGxpbmdUcmVlQXNUZXh0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpz
Y3JvbGxpbmdUcmVlQXNUZXh0KTsKICAgICBiaW5kTWV0aG9kKCJzZXRBY2NlcHRzRWRpdGluZyIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWNjZXB0c0VkaXRpbmcpOwogICAgIGJpbmRNZXRo
b2QoInNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50IiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCk7CiAgICAgYmluZE1ldGhvZCgi
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpOwpAQCAtMTk5Myw2ICsxOTk0LDExIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxheWVyVHJlZUFzVGV4dChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3MsIENwcFZhcmlhCiAgICAgcmVzdWx0LT5zZXQobV9zaGVsbC0+d2ViVmlldygp
LT5tYWluRnJhbWUoKS0+bGF5ZXJUcmVlQXNUZXh0KG1fc2hvd0RlYnVnTGF5ZXJUcmVlKS51dGY4
KCkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzY3JvbGxpbmdUcmVlQXNUZXh0
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IHJlc3VsdC0+c2V0KG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCktPnNjcm9sbGluZ1Ry
ZWVBc1RleHQoKS51dGY4KCkpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpsb3Nl
Q29tcG9zaXRvckNvbnRleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50
KikKIHsKICAgICBpbnQgbnVtVGltZXM7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA1YTg3MjkzODg4N2EyYjIxMTYx
MGI4YzZjNjUxYmUxYjZlYTlhNTViLi44N2UwODQzNjU5OTk5YWE5ZjUxMTI1ZGRhYWU4OWFlNGNl
ZTE3NTYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKQEAgLTM3OSw2ICszNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydFNwZWVjaElucHV0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAog
ICAgIHZvaWQgbGF5ZXJUcmVlQXNUZXh0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3Bw
VmFyaWFudCogcmVzdWx0KTsKKyAgICB2b2lkIHNjcm9sbGluZ1RyZWVBc1RleHQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpOwogCiAgICAgdm9pZCBsb3Nl
Q29tcG9zaXRvckNvbnRleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50
KiByZXN1bHQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148787</attachid>
            <date>2012-06-21 06:37:56 -0700</date>
            <delta_ts>2013-09-05 08:32:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89576-20120621143755.patch</filename>
            <type>text/plain</type>
            <size>22358</size>
            <attacher name="Sami Kyöstilä">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI1NWI4M2YzYzc2MmVk
NjBiNDc3NjU5NmZlYjU0OGViNDI3ODlkMC4uMWI4ZmJkOWJhYjQ3YTc5ZjBjMjdhZjg5ZTBjOTE0
MTE3ODViMjliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA2LTIwICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZyB0
cmVlIHNob3VsZCBiZSB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSB0ZXN0aW5nIGZyYW1ld29yayBmb3IgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuIExheW91dAorICAgICAgICB0ZXN0cyBjYW4gY2FsbCB0ZXN0UnVu
bmVyLnNjcm9sbGluZ1RyZWVBc1RleHQoKSB0byByZXRyaWV2ZSBhIHRleHQKKyAgICAgICAgcmVw
cmVzZW50YXRpb24gb2YgdGhlIHNjcm9sbGluZyB0cmVlIG9mIHRoZSBjdXJyZW50IHBhZ2UuIEN1
cnJlbnRseQorICAgICAgICB0aGUgdGV4dCByZXByZXNlbnRhdGlvbiBjb250YWlucyB0aGUgZm9s
bG93aW5nIHBpZWNlcyBvZiBpbmZvcm1hdGlvbjoKKworICAgICAgICAtIFdoZXRoZXIgbm9uLW1h
aW4tdGhyZWFkIHNjcm9sbGluZyBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgY3VycmVudCBwYWdlCisg
ICAgICAgICAgY29udGVudHMuCisgICAgICAgIC0gV2hldGhlciB0aGVyZSBhcmUgcmVnaXN0ZXJl
ZCB3aGVlbCBldmVudCBoYW5kbGVycyBvbiB0aGUgcGFnZS4KKyAgICAgICAgLSBUaGUgbm9uLWZh
c3Qgc2Nyb2xsYWJsZSByZWdpb24gb2YgdGhlIHBhZ2UuCisgICAgICAgIC0gTnVtYmVyIG9mIGZp
eGVkIHBvc2l0aW9uIGxheWVyIGNvbnRhaW5lcnMgYW5kIGxheWVycy4KKworICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNjcm9sbGluZ1RyZWVBc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAoRnJhbWUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Ym9vbGVhbkFzVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nVHJl
ZUFzVGV4dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nVHJlZUFzVGV4
dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUluZGVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJvb2xlYW5Bc1RleHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1RyZWVBc1RleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpoYXZlV2hlZWxFdmVudEhhbmRsZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06Om5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
KToKKwogMjAxMi0wNi0yMCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFNwZWVjaCBKYXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24gc2hvdWxkIGhv
b2sgdXAgd2l0aCBBY3RpdmVET01PYmplY3QgbW9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBmNzU1NmFjY2MwMWY2OGFjZDhlNTVmZDRmZjg4ZGFiY2Q2NTVjZmIxLi4wY2ZlNThiMzc5
MGNmNDI3M2E0NmI1MDZhZTM2NTc1OWNiMzk3MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTIwICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZyB0cmVlIHNob3VsZCBiZSB0ZXN0YWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBz
Y3JvbGxpbmdUcmVlQXNUZXh0KCkgZm9yIHRlc3RpbmcgdGhlIHNjcm9sbGluZyBjb29yZGluYXRv
ci4gSXQKKyAgICAgICAgcmV0dXJucyBhIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJl
bnQgc2Nyb2xsaW5nIHRyZWUuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAg
ICAgKFdlYkZyYW1lKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzY3JvbGxpbmdUcmVlQXNUZXh0KToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViRnJhbWVJ
bXBsKToKKwogMjAxMi0wNi0yMCAgWmVldiBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIERhbWFnZSB0cmFja2VyIGlzIG5vdCB1c2VkIHdpdGhvdXQg
cGFydGlhbCBzd2FwLCBjYXVzaW5nIHZhbGlkIHJlbmRlciBwYXNzZXMgdG8gYmUgcmVtb3ZlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlYTU3YmI0ZjFkODUyY2YwMDUxMDlmMDE3MDg3YmVmNDBj
MmI5OWE3Li44YTUwMDM4NWQ2ZDgwNzVmNTg2NTE3MzVhMjQ4NWE1ZTJkOTkzZmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgpAQCAtOTA0LDYgKzkwNSwxNyBAQCBTdHJpbmcgRnJhbWU6OmxheWVyVHJlZUFzVGV4
dChib29sIHNob3dEZWJ1Z0luZm8pIGNvbnN0CiAjZW5kaWYKIH0KIAorU3RyaW5nIEZyYW1lOjpz
Y3JvbGxpbmdUcmVlQXNUZXh0KCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCk7CisgICAgaWYgKCFzY3JvbGxpbmdDb29yZGluYXRvcikKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsaW5n
VHJlZUFzVGV4dCgpOworfQorCiB2b2lkIEZyYW1lOjpzZXRQYWdlWm9vbUZhY3RvcihmbG9hdCBm
YWN0b3IpCiB7CiAgICAgc2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhmYWN0b3IsIG1fdGV4dFpv
b21GYWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDc3YTczZDgwNzI1NzBiMGRiMjlkNzQ5Y2M5
MTc0MTdlNmI2OTEyODcuLmU2ZjExMTMzMGM5MDNhYjYxOTRkYTE1NDgxMzkwYjFlYzdlY2ExNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWUp
OwogICAgICAgICAKICAgICAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChib29sIHNob3dEZWJ1
Z0luZm8gPSBmYWxzZSkgY29uc3Q7CisgICAgICAgIFN0cmluZyBzY3JvbGxpbmdUcmVlQXNUZXh0
KCkgY29uc3Q7CiAKICAgICAgICAgLy8gVW5saWtlIG1vc3QgYWNjZXNzb3JzIGluIHRoaXMgY2xh
c3MsIGRvbVdpbmRvdygpIGFsd2F5cyBjcmVhdGVzIGEgbmV3IERPTVdpbmRvdyBpZiBtX2RvbVdp
bmRvdyBpcyBudWxsLgogICAgICAgICAvLyBDYWxsZXJzIHRoYXQgZG9uJ3QgbmVlZCBhIG5ldyBE
T01XaW5kb3cgdG8gYmUgY3JlYXRlZCBzaG91bGQgdXNlIGV4aXN0aW5nRE9NV2luZG93KCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKaW5kZXggNmQxZjJhNjBkMDU3MjM2YWQwYjY0ZDMxNzAxNDRiZjRjNDk0MzRkNi4u
MzIwZGM5ZDc5M2ExYjQ0NjUwM2ZjMWJiN2NhOWIyZmY0OTU3OTk4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApA
QCAtNDYsNiArNDYsNyBAQAogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1
ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjZW5kaWYKQEAgLTQ1NywxNCArNDU4LDQ0IEBAIGJvb2wgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRMYXll
cklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkK
K3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBv
c2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqLCBib29sIGlzQ29udGFpbmVyKQogewotICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQhCisgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhlIGZpeGVkIHBv
c2l0aW9uIGxheWVycyBhbmQgdGhlaXIgY29udGFpbmVycyBzaG91bGQKKyAgICAvLyBnZXQgdGhl
aXIgb3duIG5vZGVzIGluIHRoZSBzY3JvbGxpbmcgdHJlZSwgYnV0IGZvciBub3cgd2UgYXJlIGp1
c3QKKyAgICAvLyBrZWVwaW5nIGNvdW50IGZvciB0ZXN0aW5nLgorICAgIG1fc2Nyb2xsaW5nVHJl
ZVN0YXRlLT5zZXRGaXhlZFBvc2l0aW9uQ29udGFpbmVyTGF5ZXJDb3VudChtX3Njcm9sbGluZ1Ry
ZWVTdGF0ZS0+Zml4ZWRQb3NpdGlvbkNvbnRhaW5lckxheWVyQ291bnQoKSArIChpc0NvbnRhaW5l
ciA/IDEgOiAtMSkpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRMYXllcklz
Rml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKQordm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xh
eWVyKiwgYm9vbCBpc0ZpeGVkKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCisgICAgbV9z
Y3JvbGxpbmdUcmVlU3RhdGUtPnNldEZpeGVkUG9zaXRpb25MYXllckNvdW50KG1fc2Nyb2xsaW5n
VHJlZVN0YXRlLT5maXhlZFBvc2l0aW9uTGF5ZXJDb3VudCgpICsgKGlzRml4ZWQgPyAxIDogLTEp
KTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGJvb2xlYW5Bc1RleHQoYm9vbCB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gdmFsdWUgPyAieWVzIiA6ICJubyI7Cit9CisKK1N0cmluZyBTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2Nyb2xsaW5nVHJlZUFzVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIFRleHRTdHJlYW0gdGV4dFN0cmVhbTsKKyAgICB0ZXh0U3Ry
ZWFtIDw8ICJzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOiAiIDw8
IGJvb2xlYW5Bc1RleHQobV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkgPDwgIlxuIjsKKyAgICB0ZXh0U3RyZWFtIDw8ICJo
YXZlV2hlZWxFdmVudEhhbmRsZXJzOiAiIDw8IGJvb2xlYW5Bc1RleHQobV9zY3JvbGxpbmdUcmVl
U3RhdGUtPndoZWVsRXZlbnRIYW5kbGVyQ291bnQoKSA+IDApIDw8ICJcbiI7CisKKyAgICBpZiAo
IW1fc2Nyb2xsaW5nVHJlZVN0YXRlLT5ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpLmlzRW1wdHko
KSkgeworICAgICAgICB0ZXh0U3RyZWFtIDw8ICJub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjogIjsK
KyAgICAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzID0gbV9zY3JvbGxpbmdUcmVlU3RhdGUtPm5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkucmVjdHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHRleHRTdHJlYW0gPDwgIlsi
IDw8IHJlY3RzW2ldLngoKSA8PCAiLCAiIDw8IHJlY3RzW2ldLnkoKSA8PCAiLCAiIDw8IHJlY3Rz
W2ldLndpZHRoKCkgPDwgIiwgIiA8PCByZWN0c1tpXS5oZWlnaHQoKSA8PCAiXSAiOworICAgICAg
ICB0ZXh0U3RyZWFtIDw8ICJcbiI7CisgICAgfQorCisgICAgdGV4dFN0cmVhbSA8PCAiZml4ZWRQ
b3NpdGlvbkNvbnRhaW5lckxheWVyQ291bnQ6ICIgPDwgbV9zY3JvbGxpbmdUcmVlU3RhdGUtPmZp
eGVkUG9zaXRpb25Db250YWluZXJMYXllckNvdW50KCkgPDwgIlxuIjsKKyAgICB0ZXh0U3RyZWFt
IDw8ICJmaXhlZFBvc2l0aW9uTGF5ZXJDb3VudDogIiA8PCBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+
Zml4ZWRQb3NpdGlvbkxheWVyQ291bnQoKSA8PCAiXG4iOworCisgICAgcmV0dXJuIHRleHRTdHJl
YW0ucmVsZWFzZSgpOwogfQogI2VuZGlmIC8vICFFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaAppbmRleCAzNTY0OWE5MWZmYjhlNDY4MGJkZmRmNTU4M2I4ODhiNzMyNWRlZjAxLi41
YTQ4ZmJkOWNhMGZkMjMxNTcyMDhkZTFiNjIxOGYxYTFmN2EyZjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTEy
Myw2ICsxMjMsMTAgQEAgcHVibGljOgogICAgIC8vIEF0dGFjaC9kZXRhY2ggbGF5ZXIgcG9zaXRp
b24gdG8gYW5jZXN0b3IgZml4ZWQgcG9zaXRpb24gY29udGFpbmVyLgogICAgIHZvaWQgc2V0TGF5
ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCk7CiAKKyAgICAv
LyBSZXR1cm4gYSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzY3JvbGxpbmcgdHJlZS4gVXNl
ZCB0byB2ZXJpZnkgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yCisgICAgLy8gYmVoYXZpb3IgaW4gbGF5
b3V0IHRlc3RzLgorICAgIFN0cmluZyBzY3JvbGxpbmdUcmVlQXNUZXh0KCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JOb25lLmNwcAppbmRleCBmMGFjZmUwY2MzYjE3MWQzMzEwNDcwNDY1MDAyZTBkMmE1N2Zk
MDljLi5iNWUwNzE5NWVmODc1OTk2Y2ExYzZhZWE5MTc2YmVjYmZkZGEyYzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yTm9uZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODMsNiArODQsMTEgQEAgdm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25M
YXllcnMoR3JhcGhpY3NMYXkKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNG
aXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpCiB7CiB9CisKK1N0cmlu
ZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nVHJlZUFzVGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQogI2VuZGlmIC8vICFFTkFCTEUoVEhSRUFERURfU0NST0xM
SU5HKQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTdGF0ZS5oCmluZGV4IDNiNGE4ZDY4Yjk1YTcwYjIxMjhiMjliYzgyZTE4ODUzZjc0MDE2
N2UuLjMzZGM5NTdhZmQzZGEwMWUxMzgxNDFiZDg1NjY4MjFmMTk4ZTM1MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCkBAIC0x
MTEsNiArMTExLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxPcmlnaW47IH0KICAgICB2b2lkIHNldFNjcm9sbE9y
aWdpbihjb25zdCBJbnRQb2ludCYpOwogCisgICAgdW5zaWduZWQgZml4ZWRQb3NpdGlvbkNvbnRh
aW5lckxheWVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkUG9zaXRpb25Db250YWluZXJM
YXllckNvdW50OyB9CisgICAgdm9pZCBzZXRGaXhlZFBvc2l0aW9uQ29udGFpbmVyTGF5ZXJDb3Vu
dCh1bnNpZ25lZCBmaXhlZFBvc2l0aW9uQ29udGFpbmVyTGF5ZXJDb3VudCkgeyBtX2ZpeGVkUG9z
aXRpb25Db250YWluZXJMYXllckNvdW50ID0gZml4ZWRQb3NpdGlvbkNvbnRhaW5lckxheWVyQ291
bnQ7IH0KKworICAgIHVuc2lnbmVkIGZpeGVkUG9zaXRpb25MYXllckNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9maXhlZFBvc2l0aW9uTGF5ZXJDb3VudDsgfQorICAgIHZvaWQgc2V0Rml4ZWRQb3Np
dGlvbkxheWVyQ291bnQodW5zaWduZWQgZml4ZWRQb3NpdGlvbkxheWVyQ291bnQpIHsgbV9maXhl
ZFBvc2l0aW9uTGF5ZXJDb3VudCA9IGZpeGVkUG9zaXRpb25MYXllckNvdW50OyB9CisKICAgICAv
LyBDb3BpZXMgdGhlIGN1cnJlbnQgdHJlZSBzdGF0ZSBhbmQgY2xlYXJzIHRoZSBjaGFuZ2VkIHBy
b3BlcnRpZXMgbWFzayBpbiB0aGUgb3JpZ2luYWwuCiAgICAgUGFzc093blB0cjxTY3JvbGxpbmdU
cmVlU3RhdGU+IGNvbW1pdCgpOwogCkBAIC0xNDAsNiArMTQ2LDkgQEAgcHJpdmF0ZToKICAgICBJ
bnRQb2ludCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uOwogICAgIEludFBvaW50IG1fc2Nyb2xs
T3JpZ2luOwogCisgICAgdW5zaWduZWQgbV9maXhlZFBvc2l0aW9uQ29udGFpbmVyTGF5ZXJDb3Vu
dDsKKyAgICB1bnNpZ25lZCBtX2ZpeGVkUG9zaXRpb25MYXllckNvdW50OworCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3JtU2Nyb2xsTGF5
ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2No
cm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAK
aW5kZXggMGMzYjBjMzI5NGQ4MjhmYjM1MDdhMzY1YzY3YjIwNTkzOTMxYjA4MS4uZjI3NGJlNGRi
YzJmN2Y0ZjNjNDY5ZDQ5MWU5N2JlMmE1YTM3NmY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTMwLDExICszMCwxMyBAQAogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMjAxLDQgKzIwMyw2OCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVy
LAogICAgICAgICBwbGF0Zm9ybUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxl
KTsKIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK3N0YXRpYyB2b2lkIGNv
dW50Rml4ZWRQb3NpdGlvbkxheWVyc0FuZENvbnRhaW5lcnMoY29uc3QgR3JhcGhpY3NMYXllciog
bGF5ZXIsIGludCYgY29udGFpbmVyTGF5ZXJDb3VudCwgaW50JiBmaXhlZExheWVyQ291bnQpCit7
CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTGF5ZXJDaHJvbWl1bSog
cGxhdGZvcm1MYXllciA9IGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgaWYgKCFwbGF0Zm9y
bUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGxhdGZvcm1MYXllci0+aXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKCkpCisgICAgICAgIGNvbnRhaW5lckxheWVyQ291
bnQrKzsKKworICAgIGlmIChwbGF0Zm9ybUxheWVyLT5maXhlZFRvQ29udGFpbmVyTGF5ZXIoKSkK
KyAgICAgICAgZml4ZWRMYXllckNvdW50Kys7CisKKyAgICBjb3VudEZpeGVkUG9zaXRpb25MYXll
cnNBbmRDb250YWluZXJzKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSwgY29udGFpbmVyTGF5ZXJDb3Vu
dCwgZml4ZWRMYXllckNvdW50KTsKKyAgICBjb3VudEZpeGVkUG9zaXRpb25MYXllcnNBbmRDb250
YWluZXJzKGxheWVyLT5tYXNrTGF5ZXIoKSwgY29udGFpbmVyTGF5ZXJDb3VudCwgZml4ZWRMYXll
ckNvdW50KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNp
emUoKTsgKytpKQorICAgICAgICBjb3VudEZpeGVkUG9zaXRpb25MYXllcnNBbmRDb250YWluZXJz
KGxheWVyLT5jaGlsZHJlbigpW2ldLCBjb250YWluZXJMYXllckNvdW50LCBmaXhlZExheWVyQ291
bnQpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogYm9vbGVhbkFzVGV4dChib29sIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSA/ICJ5ZXMiIDogIm5vIjsKK30KKyNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Ny
b2xsaW5nVHJlZUFzVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKCFtX3BhZ2UgfHwgIW1f
cGFnZS0+bWFpbkZyYW1lKCkgfHwgIW1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyVmlldyB8fCAh
cmVuZGVyVmlldy0+Y29tcG9zaXRvcigpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAg
ICBMYXllckNocm9taXVtKiBzY3JvbGxMYXllciA9IG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKTsK
KyAgICBUZXh0U3RyZWFtIHRleHRTdHJlYW07CisgICAgdGV4dFN0cmVhbSA8PCAic2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDogIiA8PCBib29sZWFuQXNUZXh0KHNj
cm9sbExheWVyLT5zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSkgPDwgIlxuIjsKKyAgICB0ZXh0
U3RyZWFtIDw8ICJoYXZlV2hlZWxFdmVudEhhbmRsZXJzOiAiIDw8IGJvb2xlYW5Bc1RleHQoc2Ny
b2xsTGF5ZXItPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgPDwgIlxuIjsKKworICAgIGlmICgh
c2Nyb2xsTGF5ZXItPm5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkuaXNFbXB0eSgpKSB7CisgICAg
ICAgIHRleHRTdHJlYW0gPDwgIm5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOiAiOworICAgICAgICBW
ZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBzY3JvbGxMYXllci0+bm9uRmFzdFNjcm9sbGFibGVSZWdp
b24oKS5yZWN0cygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgdGV4dFN0cmVhbSA8PCAiWyIgPDwgcmVjdHNbaV0ueCgpIDw8
ICIsICIgPDwgcmVjdHNbaV0ueSgpIDw8ICIsICIgPDwgcmVjdHNbaV0ud2lkdGgoKSA8PCAiLCAi
IDw8IHJlY3RzW2ldLmhlaWdodCgpIDw8ICJdICI7CisgICAgICAgIHRleHRTdHJlYW0gPDwgIlxu
IjsKKyAgICB9CisKKyAgICBpbnQgY29udGFpbmVyTGF5ZXJDb3VudCA9IDA7CisgICAgaW50IGZp
eGVkTGF5ZXJDb3VudCA9IDA7CisgICAgY291bnRGaXhlZFBvc2l0aW9uTGF5ZXJzQW5kQ29udGFp
bmVycyhyZW5kZXJWaWV3LT5jb21wb3NpdG9yKCktPnJvb3RHcmFwaGljc0xheWVyKCksIGNvbnRh
aW5lckxheWVyQ291bnQsIGZpeGVkTGF5ZXJDb3VudCk7CisgICAgdGV4dFN0cmVhbSA8PCAiZml4
ZWRQb3NpdGlvbkNvbnRhaW5lckxheWVyQ291bnQ6ICIgPDwgY29udGFpbmVyTGF5ZXJDb3VudCA8
PCAiXG4iOworICAgIHRleHRTdHJlYW0gPDwgImZpeGVkUG9zaXRpb25MYXllckNvdW50OiAiIDw8
IGZpeGVkTGF5ZXJDb3VudCA8PCAiXG4iOworCisgICAgcmV0dXJuIHRleHRTdHJlYW0ucmVsZWFz
ZSgpOworI2Vsc2UKKyAgICByZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDY4YzJlMzE3YjI3ZWIxY2QwOTUyZjQyZGFjYzA3MTkxMDMzZTFlOGEu
LjYwODgzOTRiMDFjOThjNjM5MDQyNjcyZTU0NGUzNmQ4NGE4OTYzOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmgKQEAgLTE2OSw5ICsxNjksMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsYWJs
ZShib29sKTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFi
bGU7IH0KICAgICB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKTsKKyAgICBi
b29sIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU2Ny
b2xsT25NYWluVGhyZWFkOyB9CiAgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJv
b2wpOwotICAgIGNvbnN0IFJlZ2lvbiYgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSB7IHJldHVy
biBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOyB9CisgICAgYm9vbCBoYXZlV2hlZWxFdmVudEhh
bmRsZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CiAgICAg
dm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKKyAgICBjb25z
dCBSZWdpb24mIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbjsgfQogICAgIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdp
b25DaGFuZ2VkKCkgeyBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCA9IHRydWU7IH0K
ICAgICB2b2lkIHNldExheWVyU2Nyb2xsRGVsZWdhdGUoTGF5ZXJDaHJvbWl1bVNjcm9sbERlbGVn
YXRlKiBsYXllclNjcm9sbERlbGVnYXRlKSB7IG1fbGF5ZXJTY3JvbGxEZWxlZ2F0ZSA9IGxheWVy
U2Nyb2xsRGVsZWdhdGU7IH0KICAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IDVjZDdmNWYxZWRlMDJm
OTg1MWQ0NTgzMDJjYWViMTU5MmMzMmMwN2IuLjYyNzYyMWQxYjNiMmRiNTY1NDQxZTFlYWY0ZTQz
YzA5MzhhM2IzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaApA
QCAtNjQ1LDYgKzY0NSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gdGV4dCBmb3JtLiBUaGlzIGlzIHVz
ZWQgb25seSBieSBsYXlvdXQgdGVzdHMuCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbGF5ZXJUcmVl
QXNUZXh0KGJvb2wgc2hvd0RlYnVnSW5mbyA9IGZhbHNlKSBjb25zdCA9IDA7CiAKKyAgICAvLyBE
dW1wcyB0aGUgc2Nyb2xsaW5nIHRyZWUsIHVzZWQgYnkgdGhlIHNjcm9sbGluZyBjb29yZGluYXRv
ciwgaW4KKyAgICAvLyB0ZXh0IGZvcm0uIFRoaXMgaXMgdXNlZCBvbmx5IGJ5IGxheW91dCB0ZXN0
cy4KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBzY3JvbGxpbmdUcmVlQXNUZXh0KCkgY29uc3QgPSAw
OworCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkZyYW1lKCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggODhmZDlmNjFkZTY1NmJhYmE5OTZk
OWU1YzNlNTJiOTM1ZWZlNDFjYS4uNWJkNjBkMzVjYmNkZjg3ZWFjMjAwYmVlNmM5M2MxOWMwYzBi
MzhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBA
IC0yMDMxLDYgKzIwMzEsMTMgQEAgV2ViU3RyaW5nIFdlYkZyYW1lSW1wbDo6bGF5ZXJUcmVlQXNU
ZXh0KGJvb2wgc2hvd0RlYnVnSW5mbykgY29uc3QKICAgICByZXR1cm4gV2ViU3RyaW5nKG1fZnJh
bWUtPmxheWVyVHJlZUFzVGV4dChzaG93RGVidWdJbmZvKSk7CiB9CiAKK1dlYlN0cmluZyBXZWJG
cmFtZUltcGw6OnNjcm9sbGluZ1RyZWVBc1RleHQoKSBjb25zdAoreworICAgIGlmICghbV9mcmFt
ZSkKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworICAgIHJldHVybiBXZWJTdHJpbmcobV9m
cmFtZS0+c2Nyb2xsaW5nVHJlZUFzVGV4dCgpKTsKK30KKwogLy8gV2ViRnJhbWVJbXBsIHB1Ymxp
YyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IFdlYkZyYW1lSW1wbDo6Y3JlYXRlKFdlYkZy
YW1lQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCmluZGV4IDM5OTM3NDcxYTExODJlYzFjMGIxNTMyZWI4ZTI1MDAzMDM5ZTI2NTUuLjRhYTI5
NWM0YzMzNDdjNTBmNTFkZDUzODhlMGFiMGE5YTg5ODVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0yMzEsNiArMjMxLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZy
b20sIGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGxheWVyVHJlZUFz
VGV4dChib29sIHNob3dEZWJ1Z0luZm8gPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJT
dHJpbmcgc2Nyb2xsaW5nVHJlZUFzVGV4dCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViRnJhbWVJbXBsPiBjcmVhdGUoV2ViRnJhbWVDbGllbnQqIGNsaWVudCk7
CiAgICAgdmlydHVhbCB+V2ViRnJhbWVJbXBsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDQwMjVjNTZjZDM4ZWIzYmEwMmM1Mjc3OWVlODRi
NjkzOTllMzUwNi4uYzg4ZjA2NGQzMDI3MjJmNTVhOWNhYjViZmIyZTMzNWY1NmFlMDJlNSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDEyLTA2LTIwICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFNjcm9sbGluZyB0cmVlIHNob3VsZCBiZSB0ZXN0YWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NzYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzY3JvbGxpbmdUcmVl
QXNUZXh0KCkgZm9yIHRlc3RpbmcgdGhlIHNjcm9sbGluZyBjb29yZGluYXRvci4gSXQKKyAgICAg
ICAgcmV0dXJucyBhIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2Nyb2xsaW5n
IHRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENv
bnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNjcm9sbGluZ1RyZWVB
c1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisKIDIwMTItMDYtMjAg
IEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGVlY2ggSmF2
YVNjcmlwdCBBUEk6IFNwZWVjaFJlY29nbml0aW9uIHNob3VsZCBob29rIHVwIHdpdGggQWN0aXZl
RE9NT2JqZWN0IG1vcmUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwNmYxNDZjMWMzZDVmOTU0MzU4NTg2YjI2
NzlkN2Q4Y2IxZTljYTVlLi40OTUyYjcyODc3ZDdmODFhYTUxMWRhNmRlMTE1YjM2YTg0NmE1MGQw
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCkBAIC0xODcsNiArMTg3LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgi
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTsKICAgICBiaW5kTWV0aG9kKCJyZXBh
aW50U3dlZXBIb3Jpem9udGFsbHkiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlcGFpbnRTd2Vl
cEhvcml6b250YWxseSk7CiAgICAgYmluZE1ldGhvZCgicmVzZXRQYWdlVmlzaWJpbGl0eSIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXRQYWdlVmlzaWJpbGl0eSk7CisgICAgYmluZE1ldGhv
ZCgic2Nyb2xsaW5nVHJlZUFzVGV4dCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2Nyb2xsaW5n
VHJlZUFzVGV4dCk7CiAgICAgYmluZE1ldGhvZCgic2V0QWNjZXB0c0VkaXRpbmciLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFjY2VwdHNFZGl0aW5nKTsKICAgICBiaW5kTWV0aG9kKCJzZXRB
bGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOwogICAgIGJpbmRNZXRob2QoInNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzKTsKQEAgLTIwMDEsNiArMjAwMiwxMSBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmdzLCBDcHBWYXJpYQogICAgIHJlc3VsdC0+c2V0KG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZy
YW1lKCktPmxheWVyVHJlZUFzVGV4dChtX3Nob3dEZWJ1Z0xheWVyVHJlZSkudXRmOCgpKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2Nyb2xsaW5nVHJlZUFzVGV4dChjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQt
PnNldChtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zY3JvbGxpbmdUcmVlQXNUZXh0
KCkudXRmOCgpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bG9zZUNvbXBvc2l0
b3JDb250ZXh0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCopCiB7CiAg
ICAgaW50IG51bVRpbWVzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYWYzOWIyZWY2ODYwZjYzNjE2OWFiOTVhNGUz
MDI4MmY3NzA5NmY4OS4uYTdhY2FmNDk1MjAxMmVlM2ExZjRkN2U3ZDcwNTI0NzNjNWY0ZDEwMiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC0zODAsNiArMzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTcGVl
Y2hJbnB1dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2b2lk
IGxheWVyVHJlZUFzVGV4dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQq
IHJlc3VsdCk7CisgICAgdm9pZCBzY3JvbGxpbmdUcmVlQXNUZXh0KGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KTsKIAogICAgIHZvaWQgbG9zZUNvbXBvc2l0
b3JDb250ZXh0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0
KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRp
bmcvZml4ZWQtcG9zaXRpb24tY29udGFpbmVyLXdpdGgtcGFnZS1zY2FsZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maXhlZC1wb3NpdGlv
bi1jb250YWluZXItd2l0aC1wYWdlLXNjYWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWE3
ZWZhYjg0M2EwNDMwZWNiZjkzZjlhNDdiNDhmYTZiOWE0M2RlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24t
Y29udGFpbmVyLXdpdGgtcGFnZS1zY2FsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitz
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOiBubworaGF2ZVdoZWVs
RXZlbnRIYW5kbGVyczogbm8KK2ZpeGVkUG9zaXRpb25Db250YWluZXJMYXllckNvdW50OiAzCitm
aXhlZFBvc2l0aW9uTGF5ZXJDb3VudDogMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jb250YWluZXItd2l0aC1w
YWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy9maXhlZC1wb3NpdGlvbi1jb250YWluZXItd2l0aC1wYWdlLXNjYWxlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWM4ZjA4NGE4Y2U2ZWY5OGE0ODBiMGExMGMyNzA5MDJmMTM2Zjk1MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpeGVkLXBv
c2l0aW9uLWNvbnRhaW5lci13aXRoLXBhZ2Utc2NhbGUuaHRtbApAQCAtMCwwICsxLDM1IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8IS0tCitTZXR0aW5nIGEgbm9uLWlkZW50aXR5IHBh
Z2Ugc2NhbGUgc2hvdWxkIG5vdCBtYXJrIHRoZSByZW5kZXIgdmlldyBsYXllciBhcyBhCitjb250
YWluZXIgZm9yIGZpeGVkIHBvc2l0aW9uIGxheWVycy4KKworaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5MjE2CistLT4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgLnRy
aWdnZXJDb21wb3NpdGlvbiB7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigw
KTsKKyAgICB9CisgIDwvc3R5bGU+CisKKyAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAu
NSwgMCwgMCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsaW5nVHJlZSIpLmlubmVyVGV4dCA9IHdp
bmRvdy50ZXN0UnVubmVyLnNjcm9sbGluZ1RyZWVBc1RleHQoKTsKKyAgICAgIH0KKyAgICB9KTsK
KyAgPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJ0cmlnZ2VyQ29t
cG9zaXRpb24iPjwvZGl2PgorICA8cHJlIGlkPSJzY3JvbGxpbmdUcmVlIj48L3ByZT4KKzwvYm9k
eT4KKworPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>