<?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>34007</bug_id>
          
          <creation_ts>2010-01-22 10:14:27 -0800</creation_ts>
          <short_desc>Implement hardware acceleration of video on Windows</short_desc>
          <delta_ts>2010-01-22 15:50:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>183690</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-01-22 10:14:27 -0800</bug_when>
    <thetext>Update the Windows QuickTime media engine to use hardware accelerated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183736</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-01-22 12:03:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/7373568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183739</commentid>
    <comment_count>2</comment_count>
      <attachid>47217</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-01-22 12:06:49 -0800</bug_when>
    <thetext>Created attachment 47217
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183749</commentid>
    <comment_count>3</comment_count>
      <attachid>47217</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-22 12:21:54 -0800</bug_when>
    <thetext>Comment on attachment 47217
Proposed patch

&gt; +        (WebCore::MediaPlayerPrivate::supportsAcceleratedRendering): New, return true unless the 
&gt; +            movie is not ready to render or the movie is in a media document.

This isn&apos;t true anymore.

&gt; @@ -190,7 +199,7 @@ void MediaPlayerPrivate::pause()
&gt;          return;
&gt;      m_startedPlaying = false;
&gt;  #if DRAW_FRAME_RATE
&gt; -    m_timeStoppedPlaying = GetTickCount();
&gt; +    m_timeStoppedPlaying = WTF::currentTime();

You shouldn&apos;t need the &quot;WTF::&quot; here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183755</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-01-22 12:46:19 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 47217 [details])
&gt; &gt; +        (WebCore::MediaPlayerPrivate::supportsAcceleratedRendering): New, return true unless the 
&gt; &gt; +            movie is not ready to render or the movie is in a media document.
&gt; 
&gt; This isn&apos;t true anymore.
&gt; 
  True.

&gt; &gt; @@ -190,7 +199,7 @@ void MediaPlayerPrivate::pause()
&gt; &gt;          return;
&gt; &gt;      m_startedPlaying = false;
&gt; &gt;  #if DRAW_FRAME_RATE
&gt; &gt; -    m_timeStoppedPlaying = GetTickCount();
&gt; &gt; +    m_timeStoppedPlaying = WTF::currentTime();
&gt; 
&gt; You shouldn&apos;t need the &quot;WTF::&quot; here.
&gt; 
  MediaPlayerPrivate has a &quot;currentTime&quot; method.

&gt; r=me

  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183756</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-01-22 12:46:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/53711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183849</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-01-22 15:50:42 -0800</bug_when>
    <thetext>With http://trac.webkit.org/changeset/53725 for good measure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47217</attachid>
            <date>2010-01-22 12:06:49 -0800</date>
            <delta_ts>2010-01-22 12:21:54 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_16.txt</filename>
            <type>text/plain</type>
            <size>23162</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzYyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTAtMDEtMjIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzczNzM1Njg+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDAwNworICAgICAgICBJbXBsZW1lbnQgaGFyZHdhcmUgYWNj
ZWxlcmF0aW9uIG9mIHZpZGVvIGNvbXBvc2l0aW5nIG9uIFdpbmRvd3MKKworICAgICAgICBJbnRl
cm5hbGx5IHdlIHN0aWxsIGhhdmUgUXVpY2tUaW1lIHJlbmRlciB0byBhIGJpdG1hcCwgYnV0IGZy
YW1lcyBhcmUgdGhlbiBjb21wb3NpdGVkCisgICAgICAgIHdpdGggdGhlIHBhZ2UgdXNpbmcgYW4g
YWNjZWxlcmF0ZWQgcmVuZGVyZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogSW5pdGlhbGl6ZSBtX25ld0Zy
YW1lQXZhaWxhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp+TWVk
aWFQbGF5ZXJQcml2YXRlKTogQ2FsbCB0ZWFyRG93blZpZGVvUmVuZGVyaW5nLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpjYW5jZWxMb2FkKTogQ2FsbCB0ZWFyRG93blZp
ZGVvUmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRh
dGVTdGF0ZXMpOiBDYWxsIHNldFVwVmlkZW9SZW5kZXJpbmcgb25jZSB0aGUgbW92aWUgCisgICAg
ICAgICAgICBpcyByZWFkeSB0byBkcmF3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjppc1JlYWR5Rm9yUmVuZGVyaW5nKTogTmV3LCB1dGlsaXR5IGZ1bmN0aW9uIHJldHVy
bnMgdHJ1ZSAKKyAgICAgICAgICAgIG9ubHkgd2hlbiBtb3ZpZSBpcyByZWFkeSB0byByZW5kZXIu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnNldFNpemUpOiBSZW1lbWJl
ciB0aGUgc2l6ZSBhcyB3ZSBuZWVkIGl0IHdoZW4gcmVuZGVyaW5nIAorICAgICAgICAgICAgaW4g
YWNjZWxlcmF0ZWQgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
c2V0VmlzaWJsZSk6IENhbGwgc2V0VXBWaWRlb1JlbmRlcmluZyB3aGVuIG1hZGUgdmlzaWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGFpbnQpOiBEbyBub3RoaW5n
IHdoZW4gcmVuZGVyaW5nIHRvIGEgbGF5ZXIuIE1vdmUgZnJhbWUgCisgICAgICAgICAgICByYXRl
IGRyYXdpbmcgY29kZSB0byBwYWludENvbXBsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6cGFpbnRDb21wbGV0ZWQpOiBOZXcsIGNsZWFyIG1fbmV3RnJhbWVBdmFp
bGFibGUgYW5kLCB3aGVuIAorICAgICAgICAgICAgYnVpbHQgd2l0aCBEUkFXX0ZSQU1FX1JBVEUs
IGRyYXcgZnJhbWVyYXRlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpt
b3ZpZU5ld0ltYWdlQXZhaWxhYmxlKTogU2V0IG1fbmV3RnJhbWVBdmFpbGFibGUsIHRyaWdnZXIg
CisgICAgICAgICAgICByZXBhaW50IGRpZmZlcmVudGx5IHdoZW4gZHJhd2luZyB0byBhIGxheWVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpjdXJyZW50UmVuZGVyaW5n
TW9kZSk6IE5ldywgcmV0dXJuIHRoZSBjdXJyZW50IHJlbmRlcmluZyBtb2RlLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKTogTmV3
LCByZXR1cm4gcHJlZmVycmVkIHJlbmRlcmluZyBtb2RlCisgICAgICAgICAgICAocmVuZGVyIHRv
IGEgbGF5ZXIgd2hlbmV2ZXIgcG9zc2libGUpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpzZXRVcFZpZGVvUmVuZGVyaW5nKTogTmV3LCB0ZWFyIGRvd24gY3VycmVudCBy
ZW5kZXJpbmcgbW9kZSAKKyAgICAgICAgICAgIGFuZCBzZXQgdXAgbmV3IG1vZGUgd2hlbiBuZWNl
c3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnRlYXJEb3duVmlk
ZW9SZW5kZXJpbmcpOiBOZXcsIG5vb3AgdW5sZXNzIHJlbmRlcmluZyB0byBhIGxheWVyLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpoYXNTZXRVcFZpZGVvUmVuZGVyaW5n
KTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwYWludENvbnRl
bnRzKTogTmV3LCBjYWxsYmFjayBmcm9tIGNvbXBvc2l0aW5nIGxheWVyIHdoZW4gaXQKKyAgICAg
ICAgICAgIGlzIHRpbWUgdG8gZHJhdyB0aGUgY3VycmVudCBmcmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6Y3JlYXRlTGF5ZXJGb3JNb3ZpZSk6IE5ldywgYWxsb2Nh
dGUgYSBsYXllciBmb3IgdGhlIG1vdmllLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjpkZXN0cm95TGF5ZXJGb3JNb3ZpZSk6IE5ldywgZGVsZXRlIG1vdmllIGxheWVyLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c0FjY2VsZXJhdGVk
UmVuZGVyaW5nKTogTmV3LCByZXR1cm4gdHJ1ZSB1bmxlc3MgdGhlIAorICAgICAgICAgICAgbW92
aWUgaXMgbm90IHJlYWR5IHRvIHJlbmRlciBvciB0aGUgbW92aWUgaXMgaW4gYSBtZWRpYSBkb2N1
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6YWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOiBOZXcsIGRlYWwgd2l0aCBjaGFuZ2UgaW4gCisgICAgICAg
ICAgICBhY2NlbGVyYXRlZCByZW5kZXJpbmcgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGU6Om5vdGlmeVN5bmNSZXF1aXJlZCk6IE5ldywgY2FsbGJhY2sgZnJvbSBj
b21wb3NpdGluZyBsYXllciAKKyAgICAgICAgICAgIHdoZW4gaXQgd2FudHMgdG8gc2NoZWR1bGUg
YSByZWRyYXcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6c2hvd0RlYnVnQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGU6OnNob3dSZXBhaW50Q291bnRlcik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vUVRNb3ZpZVdpbi5jcHA6CisgICAgICAgIChRVE1vdmllV2luOjpnZXRDdXJyZW50
RnJhbWVJbmZvKToKKyAgICAgICAgICAgIE5ldywgcmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBvZmZzY3JlZW4gcmVuZGVyIGJ1ZmZlci4KKyAgICAgICAgKFFUTW92aWVXaW46OmluaXRpYWxp
emVRdWlja1RpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllV2lu
Lmg6CisKIDIwMTAtMDEtMjEgIElhaW4gQ2FtcGJlbGwgPGlhaW4uY2FtcGJlbGxAYWNjZW50dXJl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAkocmV2aXNpb24gNTM2MjQpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTAgKzM1LDE2IEBA
CiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNBQ0YuaCIKKyNpbmNsdWRlICJXS0NBQ0ZMYXllci5oIgorI2Vu
ZGlmCisKICNpZiBEUkFXX0ZSQU1FX1JBVEUKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCkBAIC03Niw2ICs4Miw4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlKE0KICAgICAsIG1faGFzVW5zdXBwb3J0ZWRUcmFja3MoZmFsc2UpCiAgICAg
LCBtX3N0YXJ0ZWRQbGF5aW5nKGZhbHNlKQogICAgICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKKyAg
ICAsIG1fdmlzaWJsZShmYWxzZSkKKyAgICAsIG1fbmV3RnJhbWVBdmFpbGFibGUoZmFsc2UpCiAj
aWYgRFJBV19GUkFNRV9SQVRFCiAgICAgLCBtX2ZyYW1lQ291bnRXaGlsZVBsYXlpbmcoMCkKICAg
ICAsIG1fdGltZVN0YXJ0ZWRQbGF5aW5nKDApCkBAIC04Niw2ICs5NCw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE0KIAogTWVkaWFQbGF5ZXJQcml2YXRlOjp+TWVk
aWFQbGF5ZXJQcml2YXRlKCkKIHsKKyAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdApAQCAt
MTkwLDcgKzE5OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwYXVzZSgpCiAgICAgICAg
IHJldHVybjsKICAgICBtX3N0YXJ0ZWRQbGF5aW5nID0gZmFsc2U7CiAjaWYgRFJBV19GUkFNRV9S
QVRFCi0gICAgbV90aW1lU3RvcHBlZFBsYXlpbmcgPSBHZXRUaWNrQ291bnQoKTsKKyAgICBtX3Rp
bWVTdG9wcGVkUGxheWluZyA9IFdURjo6Y3VycmVudFRpbWUoKTsKICNlbmRpZgogICAgIG1fcXRN
b3ZpZS0+cGF1c2UoKTsKIH0KQEAgLTQwMSw5ICs0MTAsMTEgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6OmNhbmNlbExvYWQoKQogICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVy
OjpMb2FkaW5nIHx8IG1fbmV0d29ya1N0YXRlID09IE1lZGlhUGxheWVyOjpMb2FkZWQpCiAgICAg
ICAgIHJldHVybjsKICAgICAKKyAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CisKICAgICAv
LyBDYW5jZWwgdGhlIGxvYWQgYnkgZGVzdHJveWluZyB0aGUgbW92aWUuCiAgICAgbV9xdE1vdmll
LmNsZWFyKCk7Ci0gICAgCisKICAgICB1cGRhdGVTdGF0ZXMoKTsKIH0KIApAQCAtNDY2LDYgKzQ3
Nyw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICB9
CiAgICAgfQogCisgICAgaWYgKGlzUmVhZHlGb3JSZW5kZXJpbmcoKSAmJiAhaGFzU2V0VXBWaWRl
b1JlbmRlcmluZygpKQorICAgICAgICBzZXRVcFZpZGVvUmVuZGVyaW5nKCk7CisKICAgICBpZiAo
c2Vla2luZygpKQogICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmc7CiAgICAgCkBAIC00NzUsNiArNDg5LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1
cGRhdGVTdGF0ZXMoKQogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKIH0K
IAorYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzUmVhZHlGb3JSZW5kZXJpbmcoKSBjb25zdAor
eworICAgIHJldHVybiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSAm
JiBtX3BsYXllci0+dmlzaWJsZSgpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2F3
VW5zdXBwb3J0ZWRUcmFja3MoKQogewogICAgIG1fcXRNb3ZpZS0+c2V0RGlzYWJsZWQodHJ1ZSk7
CkBAIC00ODksNyArNTA4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmRpZEVuZCgpCiAK
ICAgICBtX3N0YXJ0ZWRQbGF5aW5nID0gZmFsc2U7CiAjaWYgRFJBV19GUkFNRV9SQVRFCi0gICAg
bV90aW1lU3RvcHBlZFBsYXlpbmcgPSBHZXRUaWNrQ291bnQoKTsKKyAgICBtX3RpbWVTdG9wcGVk
UGxheWluZyA9IFdURjo6Y3VycmVudFRpbWUoKTsKICNlbmRpZgogICAgIHVwZGF0ZVN0YXRlcygp
OwogICAgIG1fcGxheWVyLT50aW1lQ2hhbmdlZCgpOwpAQCAtNDk3LDIwICs1MTYsMzIgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OmRpZEVuZCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIAogeyAKLSAgICBpZiAobV9oYXNVbnN1cHBv
cnRlZFRyYWNrcyB8fCAhbV9xdE1vdmllKQorICAgIGlmIChtX2hhc1Vuc3VwcG9ydGVkVHJhY2tz
IHx8ICFtX3F0TW92aWUgfHwgbV9zaXplID09IHNpemUpCiAgICAgICAgIHJldHVybjsKKyAgICBt
X3NpemUgPSBzaXplOwogICAgIG1fcXRNb3ZpZS0+c2V0U2l6ZShzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0VmlzaWJsZShib29s
IGIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7
Ci0gICAgaWYgKG1faGFzVW5zdXBwb3J0ZWRUcmFja3MgfHwgIW1fcXRNb3ZpZSkKKyAgICBpZiAo
bV9oYXNVbnN1cHBvcnRlZFRyYWNrcyB8fCAhbV9xdE1vdmllIHx8IG1fdmlzaWJsZSA9PSB2aXNp
YmxlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9xdE1vdmllLT5zZXRWaXNpYmxlKGIpOworCisg
ICAgbV9xdE1vdmllLT5zZXRWaXNpYmxlKHZpc2libGUpOworICAgIG1fdmlzaWJsZSA9IHZpc2li
bGU7CisgICAgaWYgKG1fdmlzaWJsZSkgeworICAgICAgICBpZiAoaXNSZWFkeUZvclJlbmRlcmlu
ZygpKQorICAgICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOworICAgIH0gZWxzZQorICAg
ICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHIpCiB7CisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChtX3F0VmlkZW9MYXllcikKKyAg
ICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgaWYgKHAtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
bV9xdE1vdmllIHx8IG1faGFzVW5zdXBwb3J0ZWRUcmFja3MpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNTQxLDI4ICs1NzIsNTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KEdyYXBo
aWNzQwogICAgIGVsc2UKICAgICAgICAgcC0+cmVsZWFzZVdpbmRvd3NDb250ZXh0KGhkYywgcik7
CiAKKyAgICBwYWludENvbXBsZXRlZCgqcCwgcik7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpwYWludENvbXBsZXRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgbV9uZXdGcmFtZUF2YWlsYWJsZSA9IGZhbHNlOworCiAjaWYgRFJB
V19GUkFNRV9SQVRFCiAgICAgaWYgKG1fZnJhbWVDb3VudFdoaWxlUGxheWluZyA+IDEwKSB7Ci0g
ICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fcGxheWVyLT5mcmFtZVZpZXcoKSA/IG1fcGxheWVyLT5m
cmFtZVZpZXcoKS0+ZnJhbWUoKSA6IE5VTEw7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiBOVUxMOwotICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+cmVuZGVyZXIoKSA6IE5VTEw7Ci0gICAg
ICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gcmVuZGVyZXIgPyByZW5kZXJlci0+c3R5bGUo
KSA6IE5VTEw7Ci0gICAgICAgIGlmIChzdHlsZVRvVXNlKSB7Ci0gICAgICAgICAgICBkb3VibGUg
ZnJhbWVSYXRlID0gKG1fZnJhbWVDb3VudFdoaWxlUGxheWluZyAtIDEpIC8gKDAuMDAxICogKCBt
X3N0YXJ0ZWRQbGF5aW5nID8gKEdldFRpY2tDb3VudCgpIC0gbV90aW1lU3RhcnRlZFBsYXlpbmcp
IDoKLSAgICAgICAgICAgICAgICAobV90aW1lU3RvcHBlZFBsYXlpbmcgLSBtX3RpbWVTdGFydGVk
UGxheWluZykgKSk7Ci0gICAgICAgICAgICBTdHJpbmcgdGV4dCA9IFN0cmluZzo6Zm9ybWF0KCIl
MS4yZiIsIGZyYW1lUmF0ZSk7Ci0gICAgICAgICAgICBUZXh0UnVuIHRleHRSdW4odGV4dC5jaGFy
YWN0ZXJzKCksIHRleHQubGVuZ3RoKCkpOwotICAgICAgICAgICAgY29uc3QgQ29sb3IgY29sb3Io
MjU1LCAwLCAwKTsKLSAgICAgICAgICAgIHAtPnNhdmUoKTsKLSAgICAgICAgICAgIHAtPnRyYW5z
bGF0ZShyLngoKSwgci55KCkgKyByLmhlaWdodCgpKTsKLSAgICAgICAgICAgIHAtPnNldEZvbnQo
c3R5bGVUb1VzZS0+Zm9udCgpKTsKLSAgICAgICAgICAgIHAtPnNldFN0cm9rZUNvbG9yKGNvbG9y
KTsKLSAgICAgICAgICAgIHAtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICAgICAg
ICAgIHAtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgICAgIHAtPnNldEZpbGxD
b2xvcihjb2xvcik7Ci0gICAgICAgICAgICBwLT5kcmF3VGV4dCh0ZXh0UnVuLCBJbnRQb2ludCgy
LCAtMykpOwotICAgICAgICAgICAgcC0+cmVzdG9yZSgpOwotICAgICAgICB9CisgICAgICAgIGRv
dWJsZSBpbnRlcnZhbCA9ICBtX3N0YXJ0ZWRQbGF5aW5nID8gV1RGOjpjdXJyZW50VGltZSgpIC0g
bV90aW1lU3RhcnRlZFBsYXlpbmcgOiBtX3RpbWVTdG9wcGVkUGxheWluZyAtIG1fdGltZVN0YXJ0
ZWRQbGF5aW5nOworICAgICAgICBkb3VibGUgZnJhbWVSYXRlID0gKG1fZnJhbWVDb3VudFdoaWxl
UGxheWluZyAtIDEpIC8gaW50ZXJ2YWw7CisgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICBDR1JlY3QgZHJhd1JlY3QgPSBy
ZWN0OworCisgICAgICAgIGNoYXIgdGV4dFs4XTsKKyAgICAgICAgX3NucHJpbnRmKHRleHQsIHNp
emVvZih0ZXh0KSwgIiUxLjJmIiwgZnJhbWVSYXRlKTsKKworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGZvbnRTaXplID0gMjU7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZm9udENoYXJXaWR0
aCA9IDEyOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGJveEhlaWdodCA9IDI1OworICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IGJveEJvcmRlcldpZHRoID0gNDsKKyAgICAgICAgZHJhd1JlY3Qu
c2l6ZS53aWR0aCA9IGJveEJvcmRlcldpZHRoICogMiArIGZvbnRDaGFyV2lkdGggKiBzdHJsZW4o
dGV4dCk7CisgICAgICAgIGRyYXdSZWN0LnNpemUuaGVpZ2h0ID0gYm94SGVpZ2h0OworCisgICAg
ICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisgICAgICAgIGlmIChtX3F0VmlkZW9MYXllcikKKyAgICAgICAgICAgIENH
Q29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworICAgICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0oY2dDb250ZXh0LCByZWN0LndpZHRoKCkgLSBkcmF3UmVjdC5zaXplLndpZHRoLCBt
X3F0VmlkZW9MYXllciA/IC1yZWN0LmhlaWdodCgpIDogMCk7CisjZWxzZQorICAgICAgICBDR0Nv
bnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCByZWN0LndpZHRoKCkgLSBkcmF3UmVjdC5zaXpl
LndpZHRoLCAwKTsKKyNlbmRpZgorICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBiYWNrZ3Jv
dW5kQ29sb3JbNF0gPSB7IDAuOTgsIDAuOTgsIDAuODIsIDAuOCB9OworICAgICAgICBDR0NvbnRl
eHRTZXRGaWxsQ29sb3IoY2dDb250ZXh0LCBiYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBDR0Nv
bnRleHRGaWxsUmVjdChjZ0NvbnRleHQsIGRyYXdSZWN0KTsKKworICAgICAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCB0ZXh0Q29sb3JbNF0gPSB7IDAsIDAsIDAsIDEgfTsKKyAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yKGNnQ29udGV4dCwgdGV4dENvbG9yKTsKKyAgICAgICAgQ0dDb250ZXh0
U2V0VGV4dE1hdHJpeChjZ0NvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0x
KSk7CisgICAgICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY2dDb250ZXh0LCAiSGVsdmV0aWNhIiwg
Zm9udFNpemUsIGtDR0VuY29kaW5nTWFjUm9tYW4pOworCisgICAgICAgIENHQ29udGV4dFNob3dU
ZXh0QXRQb2ludChjZ0NvbnRleHQsIGRyYXdSZWN0Lm9yaWdpbi54ICsgYm94Qm9yZGVyV2lkdGgs
IGRyYXdSZWN0Lm9yaWdpbi55ICsgYm94SGVpZ2h0IC0gYm94Qm9yZGVyV2lkdGgsIHRleHQsIHN0
cmxlbih0ZXh0KSk7CisgICAgICAgIAorICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNn
Q29udGV4dCk7ICAgICAgICAKICAgICB9CiAjZW5kaWYKIH0KQEAgLTY0MiwxMyArNjk1LDIxIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjptb3ZpZU5ld0ltYWdlQXYKICNpZiBEUkFXX0ZSQU1F
X1JBVEUKICAgICBpZiAobV9zdGFydGVkUGxheWluZykgewogICAgICAgICBtX2ZyYW1lQ291bnRX
aGlsZVBsYXlpbmcrKzsKLSAgICAgICAgLy8gdG8gZWxpbWluYXRlIHByZXJvbGwgY29zdHMgZnJv
bSBvdXIgY2FsY3VsYXRpb24sCi0gICAgICAgIC8vIG91ciBmcmFtZSByYXRlIGNhbGN1bGF0aW9u
IGV4Y2x1ZGVzIHRoZSBmaXJzdCBmcmFtZSBkcmF3biBhZnRlciBwbGF5YmFjayBzdGFydHMKLSAg
ICAgICAgaWYgKDE9PW1fZnJhbWVDb3VudFdoaWxlUGxheWluZykKLSAgICAgICAgICAgIG1fdGlt
ZVN0YXJ0ZWRQbGF5aW5nID0gR2V0VGlja0NvdW50KCk7CisgICAgICAgIC8vIFRvIGVsaW1pbmF0
ZSBwcmVyb2xsIGNvc3RzIGZyb20gb3VyIGNhbGN1bGF0aW9uLCBvdXIgZnJhbWUgcmF0ZSBjYWxj
dWxhdGlvbiBleGNsdWRlcworICAgICAgICAvLyB0aGUgZmlyc3QgZnJhbWUgZHJhd24gYWZ0ZXIg
cGxheWJhY2sgc3RhcnRzLgorICAgICAgICBpZiAobV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nID09
IDEpCisgICAgICAgICAgICBtX3RpbWVTdGFydGVkUGxheWluZyA9IFdURjo6Y3VycmVudFRpbWUo
KTsKICAgICB9CiAjZW5kaWYKLSAgICBtX3BsYXllci0+cmVwYWludCgpOworCisgICAgbV9uZXdG
cmFtZUF2YWlsYWJsZSA9IHRydWU7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisgICAgaWYgKG1fcXRWaWRlb0xheWVyKQorICAgICAgICBtX3F0VmlkZW9MYXllci0+cGxhdGZv
cm1MYXllcigpLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAg
bV9wbGF5ZXItPnJlcGFpbnQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGU6Omhhc1Np
bmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTY1OCw2ICs3MTksMTcxIEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlOjpoYXNTaW5nbGVTZWN1cmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
TWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVJlbmRlcmluZ01vZGUgTWVkaWFQbGF5ZXJQcml2YXRl
OjpjdXJyZW50UmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3F0TW92aWUpCisg
ICAgICAgIHJldHVybiBNZWRpYVJlbmRlcmluZ05vbmU7CisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisgICAgaWYgKG1fcXRWaWRlb0xheWVyKQorICAgICAgICByZXR1cm4gTWVk
aWFSZW5kZXJpbmdNb3ZpZUxheWVyOworI2VuZGlmCisKKyAgICByZXR1cm4gTWVkaWFSZW5kZXJp
bmdTb2Z0d2FyZVJlbmRlcmVyOworfQorCitNZWRpYVBsYXllclByaXZhdGU6Ok1lZGlhUmVuZGVy
aW5nTW9kZSBNZWRpYVBsYXllclByaXZhdGU6OnByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSBjb25z
dAoreworICAgIGlmICghbV9wbGF5ZXItPmZyYW1lVmlldygpIHx8ICFtX3F0TW92aWUpCisgICAg
ICAgIHJldHVybiBNZWRpYVJlbmRlcmluZ05vbmU7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisgICAgaWYgKHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiBtX3Bs
YXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2Vs
ZXJhdGVkKG1fcGxheWVyKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5nTW92aWVMYXll
cjsKKyNlbmRpZgorCisgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5nU29mdHdhcmVSZW5kZXJlcjsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNldFVwVmlkZW9SZW5kZXJpbmcoKQorewor
ICAgIE1lZGlhUmVuZGVyaW5nTW9kZSBjdXJyZW50TW9kZSA9IGN1cnJlbnRSZW5kZXJpbmdNb2Rl
KCk7CisgICAgTWVkaWFSZW5kZXJpbmdNb2RlIHByZWZlcnJlZE1vZGUgPSBwcmVmZXJyZWRSZW5k
ZXJpbmdNb2RlKCk7CisKKyNpZiAhVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEFT
U0VSVChwcmVmZXJyZWRNb2RlICE9IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllcik7CisjZW5kaWYK
KworICAgIGlmIChjdXJyZW50TW9kZSA9PSBwcmVmZXJyZWRNb2RlICYmIGN1cnJlbnRNb2RlICE9
IE1lZGlhUmVuZGVyaW5nTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGN1cnJlbnRN
b2RlICE9IE1lZGlhUmVuZGVyaW5nTm9uZSkgIAorICAgICAgICB0ZWFyRG93blZpZGVvUmVuZGVy
aW5nKCk7CisKKyAgICBpZiAocHJlZmVycmVkTW9kZSA9PSBNZWRpYVJlbmRlcmluZ01vdmllTGF5
ZXIpCisgICAgICAgIGNyZWF0ZUxheWVyRm9yTW92aWUoKTsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OnRlYXJEb3duVmlkZW9SZW5kZXJpbmcoKQoreworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBpZiAobV9xdFZpZGVvTGF5ZXIpCisgICAgICAgIGRlc3Ryb3lM
YXllckZvck1vdmllKCk7CisjZW5kaWYKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGU6Omhh
c1NldFVwVmlkZW9SZW5kZXJpbmcoKSBjb25zdAoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICByZXR1cm4gbV9xdFZpZGVvTGF5ZXIgfHwgY3VycmVudFJlbmRlcmluZ01v
ZGUoKSAhPSBNZWRpYVJlbmRlcmluZ01vdmllTGF5ZXI7CisjZWxzZQorICAgIHJldHVybiB0cnVl
OworI2VuZGlmCit9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKy8vIFVw
LWNhbGwgZnJvbSBjb21wb3NpdGluZyBsYXllciBkcmF3aW5nIGNhbGxiYWNrLgordm9pZCBNZWRp
YVBsYXllclByaXZhdGU6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IElu
dFJlY3QmKQoreworICAgICBpZiAobV9oYXNVbnN1cHBvcnRlZFRyYWNrcykKKyAgICAgICAgIHJl
dHVybjsKKworICAgIEFTU0VSVChzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpOworCisg
ICAgLy8gTm8gcmVhc29uIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgbGF5ZXIgaW1hZ2UgdW5sZXNz
IHdlIGhhdmUgc29tZXRoaW5nIG5ldyB0byBzaG93LgorICAgIGlmICghbV9uZXdGcmFtZUF2YWls
YWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisgICAgdm9pZCogYnVmZmVy
OworICAgIHVuc2lnbmVkIGJpdHNQZXJQaXhlbDsKKyAgICB1bnNpZ25lZCByb3dCeXRlczsKKyAg
ICB1bnNpZ25lZCB3aWR0aDsKKyAgICB1bnNpZ25lZCBoZWlnaHQ7CisKKyAgICBtX3F0TW92aWUt
PmdldEN1cnJlbnRGcmFtZUluZm8oYnVmZmVyLCBiaXRzUGVyUGl4ZWwsIHJvd0J5dGVzLCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDsKKworICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9D
b3B5KDAsIHN0YXRpY19jYXN0PFVJbnQ4Kj4oYnVmZmVyKSwgcm93Qnl0ZXMgKiBoZWlnaHQsIGtD
RkFsbG9jYXRvck51bGwpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3Zp
ZGVyKEFkb3B0Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGZyYW1lSW1hZ2UoQWRvcHRDRiwgQ0dJbWFnZUNy
ZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCBiaXRzUGVyUGl4ZWwsIHJvd0J5dGVzLCBjb2xvclNwYWNl
LCAKKyAgICAgICAga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhRmly
c3QsIHByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkp
OworICAgIGlmICghZnJhbWVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBy
ZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBmcmFtZUltYWdlLmdl
dCgpKTsgCisgICAgcGFpbnRDb21wbGV0ZWQoY29udGV4dCwgcmVjdCk7Cit9CisjZW5kaWYKKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmNyZWF0ZUxheWVyRm9yTW92aWUoKQoreworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBBU1NFUlQoc3VwcG9ydHNBY2NlbGVyYXRl
ZFJlbmRlcmluZygpKTsKKworICAgIGlmICghbV9xdE1vdmllIHx8IG1fcXRWaWRlb0xheWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBEbyBub3RoaW5nIGlmIHRoZSBwYXJlbnQgbGF5ZXIg
aGFzbid0IGJlZW4gc2V0IHVwIHlldC4KKyAgICBHcmFwaGljc0xheWVyKiB2aWRlb0dyYXBoaWNz
TGF5ZXIgPSBtX3BsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJHcmFwaGlj
c0xheWVyKG1fcGxheWVyKTsKKyAgICBpZiAoIXZpZGVvR3JhcGhpY3NMYXllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gQ3JlYXRlIGEgR3JhcGhpY3NMYXllciB0aGF0IHdvbid0IGJlIGlu
c2VydGVkIGRpcmVjdGx5IGludG8gdGhlIHJlbmRlciB0cmVlLCBidXQgd2lsbCB1c2VkIAorICAg
IC8vIGFzIGEgd3JhcHBlciBmb3IgYSBXS0NBQ0ZMYXllciB3aGljaCBnZXRzIGluc2VydGVkIGFz
IHRoZSBjb250ZW50IGxheWVyIG9mIHRoZSB2aWRlbyAKKyAgICAvLyByZW5kZXJlcidzIEdyYXBo
aWNzTGF5ZXIuCisgICAgbV9xdFZpZGVvTGF5ZXIuc2V0KG5ldyBHcmFwaGljc0xheWVyQ0FDRih0
aGlzKSk7CisgICAgaWYgKCFtX3F0VmlkZW9MYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gTWFyayB0aGUgbGF5ZXIgYXMgZHJhd2luZyBpdHNlbGYsIGFuY2hvcmVkIGluIHRoZSB0b3Ag
bGVmdCwgYW5kIGJvdHRvbS11cC4KKyAgICBtX3F0VmlkZW9MYXllci0+c2V0RHJhd3NDb250ZW50
KHRydWUpOworICAgIG1fcXRWaWRlb0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7CisgICAgbV9xdFZpZGVvTGF5ZXItPnNldENvbnRlbnRzT3JpZW50YXRpb24oR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKTsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgbV9xdFZpZGVvTGF5ZXItPnNldE5hbWUoIlZpZGVvIGxheWVyIik7CisjZW5kaWYKKworICAg
IC8vIEhhbmcgdGhlIHZpZGVvIGxheWVyIGZyb20gdGhlIHJlbmRlciBsYXllci4KKyAgICB2aWRl
b0dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9WaWRlbyhtX3F0VmlkZW9MYXllci0+cGxhdGZv
cm1MYXllcigpKTsKKyNlbmRpZgorfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGVzdHJv
eUxheWVyRm9yTW92aWUoKQoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAg
ICBpZiAoIW1fcXRWaWRlb0xheWVyKQorICAgICAgICByZXR1cm47CisgICAgbV9xdFZpZGVvTGF5
ZXIgPSAwOworI2VuZGlmCit9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGlzUmVhZHlGb3JSZW5kZXJpbmcoKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAg
ICAvLyBTZXQgdXAgb3IgY2hhbmdlIHRoZSByZW5kZXJpbmcgcGF0aCBpZiBuZWNlc3NhcnkuCisg
ICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
bm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKQoreworICAgIEdyYXBoaWNz
TGF5ZXJDQUNGKiB2aWRlb0dyYXBoaWNzTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Q0FDRio+KG1fcGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckdyYXBoaWNz
TGF5ZXIobV9wbGF5ZXIpKTsKKyAgICBpZiAodmlkZW9HcmFwaGljc0xheWVyKQorICAgICAgICB2
aWRlb0dyYXBoaWNzTGF5ZXItPm5vdGlmeVN5bmNSZXF1aXJlZCgpOworIH0KKworCisjZW5kaWYK
KworCiB9CiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmgJKHJldmlz
aW9uIDUzNjI0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDExICszMiwxOCBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8UVRNb3Zp
ZVdpbi5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckNsaWVudC5oIgorI2VuZGlmIAogCiAjaWZuZGVmIERSQVdfRlJBTUVfUkFURQogI2Rl
ZmluZSBEUkFXX0ZSQU1FX1JBVEUgMAogI2VuZGlmCiAKK3R5cGVkZWYgc3RydWN0IENHSW1hZ2Ug
KkNHSW1hZ2VSZWY7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwpAQCAtNDQsMTMgKzUxLDI3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0Owog
Y2xhc3MgU3RyaW5nOwogCi1jbGFzcyBNZWRpYVBsYXllclByaXZhdGUgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgUVRNb3ZpZVdpbkNsaWVudCB7CitjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBw
dWJsaWMgUVRNb3ZpZVdpbkNsaWVudCAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisgICAgICAgICwgcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQKKyNlbmRpZiAKK3sKIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyKTsKIAogICAgIH5NZWRpYVBsYXllclByaXZhdGUoKTsKIAogcHJpdmF0ZToKKworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50IG1l
dGhvZHMKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVy
KiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IElu
dFJlY3QmIGluQ2xpcCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
Y29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5k
aWYgCisKICAgICBNZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKQEAgLTk2LDcgKzExNyw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRFbmQoKTsKICAgICAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKLSAgICAKKyAgICB2b2lkIHBhaW50Q29tcGxldGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKTsKKwogICAgIGJvb2wgaGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBj
b25zdDsKQEAgLTEyMCwxMSArMTQyLDMyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNj
ZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKTsKKyNlbmRpZgorCisgICAgZW51bSBNZWRpYVJlbmRlcmlu
Z01vZGUgeyBNZWRpYVJlbmRlcmluZ05vbmUsIE1lZGlhUmVuZGVyaW5nU29mdHdhcmVSZW5kZXJl
ciwgTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVyIH07CisgICAgTWVkaWFSZW5kZXJpbmdNb2RlIGN1
cnJlbnRSZW5kZXJpbmdNb2RlKCkgY29uc3Q7CisgICAgTWVkaWFSZW5kZXJpbmdNb2RlIHByZWZl
cnJlZFJlbmRlcmluZ01vZGUoKSBjb25zdDsKKyAgICBib29sIGlzUmVhZHlGb3JSZW5kZXJpbmco
KSBjb25zdDsKKworICAgIHZvaWQgc2V0VXBWaWRlb1JlbmRlcmluZygpOworICAgIHZvaWQgdGVh
ckRvd25WaWRlb1JlbmRlcmluZygpOworICAgIGJvb2wgaGFzU2V0VXBWaWRlb1JlbmRlcmluZygp
IGNvbnN0OworCisgICAgdm9pZCBjcmVhdGVMYXllckZvck1vdmllKCk7CisgICAgdm9pZCBkZXN0
cm95TGF5ZXJGb3JNb3ZpZSgpOworCiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwogICAgIE93
blB0cjxRVE1vdmllV2luPiBtX3F0TW92aWU7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBtX3F0VmlkZW9MYXllcjsKKyNlbmRpZgog
ICAgIGZsb2F0IG1fc2Vla1RvOwogICAgIGZsb2F0IG1fZW5kVGltZTsKICAgICBUaW1lcjxNZWRp
YVBsYXllclByaXZhdGU+IG1fc2Vla1RpbWVyOworICAgIEludFNpemUgbV9zaXplOwogICAgIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIHVuc2lnbmVkIG1fZW5hYmxlZFRyYWNrQ291
bnQ7CkBAIC0xMzIsMTAgKzE3NSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNVbnN1cHBv
cnRlZFRyYWNrczsKICAgICBib29sIG1fc3RhcnRlZFBsYXlpbmc7CiAgICAgYm9vbCBtX2lzU3Ry
ZWFtaW5nOworICAgIGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wgbV9uZXdGcmFtZUF2YWlsYWJs
ZTsKICNpZiBEUkFXX0ZSQU1FX1JBVEUKLSAgICBpbnQgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5n
OwotICAgIGludCBtX3RpbWVTdGFydGVkUGxheWluZzsKLSAgICBpbnQgbV90aW1lU3RvcHBlZFBs
YXlpbmc7CisgICAgZG91YmxlIG1fZnJhbWVDb3VudFdoaWxlUGxheWluZzsKKyAgICBkb3VibGUg
bV90aW1lU3RhcnRlZFBsYXlpbmc7CisgICAgZG91YmxlIG1fdGltZVN0b3BwZWRQbGF5aW5nOwog
I2VuZGlmCiB9OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmll
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1v
dmllV2luLmNwcAkocmV2aXNpb24gNTM2MjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9RVE1vdmllV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTYwOCw2ICs2MDgsMjQgQEAgdm9pZCBRVE1vdmllV2luOjpzZXRWaXNpYmxlKGJvb2wg
YikKICAgICBtX3ByaXZhdGUtPnVwZGF0ZUdXb3JsZCgpOwogfQogCit2b2lkIFFUTW92aWVXaW46
OmdldEN1cnJlbnRGcmFtZUluZm8odm9pZComIGJ1ZmZlciwgdW5zaWduZWQmIGJpdHNQZXJQaXhl
bCwgdW5zaWduZWQmIHJvd0J5dGVzLCB1bnNpZ25lZCYgd2lkdGgsIHVuc2lnbmVkJiBoZWlnaHQp
Cit7CisgICAgaWYgKCFtX3ByaXZhdGUtPm1fZ1dvcmxkKSB7CisgICAgICAgIGJ1ZmZlciA9IDA7
CisgICAgICAgIGJpdHNQZXJQaXhlbCA9IDA7CisgICAgICAgIHJvd0J5dGVzID0gMDsKKyAgICAg
ICAgd2lkdGggPSAwOworICAgICAgICBoZWlnaHQgPSAwOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIFBpeE1hcEhhbmRsZSBvZmZzY3JlZW5QaXhNYXAgPSBHZXRHV29ybGRQaXhNYXAobV9w
cml2YXRlLT5tX2dXb3JsZCk7CisgICAgYnVmZmVyID0gKCpvZmZzY3JlZW5QaXhNYXApLT5iYXNl
QWRkcjsKKyAgICBiaXRzUGVyUGl4ZWwgPSAoKm9mZnNjcmVlblBpeE1hcCktPnBpeGVsU2l6ZTsK
KyAgICByb3dCeXRlcyA9ICgqb2Zmc2NyZWVuUGl4TWFwKS0+cm93Qnl0ZXMgJiAweDNGRkY7Cisg
ICAgd2lkdGggPSBtX3ByaXZhdGUtPm1fd2lkdGg7CisgICAgaGVpZ2h0ID0gbV9wcml2YXRlLT5t
X2hlaWdodDsKK30KKwogdm9pZCBRVE1vdmllV2luOjpwYWludChIREMgaGRjLCBpbnQgeCwgaW50
IHkpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUtPm1fZ1dvcmxkKQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZVdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWVXaW4uaAkocmV2aXNpb24gNTM2MjQpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllV2luLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxl
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwIEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2b2lkIHBhaW50KEhEQywgaW50IHgsIGludCB5KTsK
KyAgICB2b2lkIGdldEN1cnJlbnRGcmFtZUluZm8odm9pZComIGJ1ZmZlciwgdW5zaWduZWQmIGJp
dHNQZXJQaXhlbCwgdW5zaWduZWQmIHJvd0J5dGVzLCB1bnNpZ25lZCYgd2lkdGgsIHVuc2lnbmVk
JiBoZWlnaHQpOwogCiAgICAgdm9pZCBkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3ModW5zaWduZWQm
IGVuYWJsZWRUcmFja0NvdW50LCB1bnNpZ25lZCYgdG90YWxUcmFja0NvdW50KTsKICAgICB2b2lk
IHNldERpc2FibGVkKGJvb2wpOwo=
</data>
<flag name="review"
          id="29626"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>