<?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>65039</bug_id>
          
          <creation_ts>2011-07-22 11:50:32 -0700</creation_ts>
          <short_desc>Update Chromium DRT to output binary (instead of base64-encoded) data for web audio testing</short_desc>
          <delta_ts>2011-07-25 15:16:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>dpranke</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>441061</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-22 11:50:32 -0700</bug_when>
    <thetext>Update Chromium DRT to output binary (instead of base64-encoded) data for web audio testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441081</commentid>
    <comment_count>1</comment_count>
      <attachid>101753</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-22 12:13:01 -0700</bug_when>
    <thetext>Created attachment 101753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441083</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-22 12:15:45 -0700</bug_when>
    <thetext>The WebArrayBufferView class is essentially boilerplate code similar to our other WebKit wrapper classes, such as WebRange...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441259</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-07-22 16:31:32 -0700</bug_when>
    <thetext>+fishd since this adds a new WebKit API class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441263</commentid>
    <comment_count>4</comment_count>
      <attachid>101753</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-07-22 16:38:31 -0700</bug_when>
    <thetext>Comment on attachment 101753
Patch

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

LGTM, but let&apos;s wait for darin to OK the API changes.

&gt; LayoutTests/ChangeLog:4
&gt; +2011-07-22  Chris Rogers  &lt;crogers@google.com&gt;
&gt; +
&gt; +        Update Chromium DRT to output binary (instead of base64-encoded) data for web audio testing
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=65039

From a different change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441266</commentid>
    <comment_count>5</comment_count>
      <attachid>101753</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-07-22 16:42:38 -0700</bug_when>
    <thetext>Comment on attachment 101753
Patch

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

I just reviewed the Chromium WebKit API changes.

&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:47
&gt; +    WebArrayBufferView(const WebArrayBufferView&amp; r) : m_private(0) { assign(r); }

nit: the variable name &quot;r&quot; is an odd choice.  normally, a letter is chosen
from the typename.  in this case &quot;v&quot; might make sense.

&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:60
&gt; +    WEBKIT_API unsigned byteLength() const;

isn&apos;t it valuable to expose byteOffset() too?  can&apos;t the view be a slice
at a non-zero offset?

&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:62
&gt; +    WebArrayBufferView(const WTF::PassRefPtr&lt;WebCore::ArrayBufferView&gt;&amp;);

these should be guarded with #if WEBKIT_IMPLEMENTATION so that no one outside of
the webkit implementation can use them.

&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:68
&gt; +    WebArrayBufferViewPrivate* m_private;

the &quot;new way&quot; is to just use the WebCore type here and ditch the
WebFooPrivate type.  you should also be using WebPrivatePtr&lt;T&gt; to
help you with the reference counting and boilerplate associated
with wrapping a WebCore reference counted type.

&gt; Source/WebKit/chromium/src/WebBindings.cpp:298
&gt; +

nit: extra new line should be deleted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441817</commentid>
    <comment_count>6</comment_count>
      <attachid>101899</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-25 13:16:58 -0700</bug_when>
    <thetext>Created attachment 101899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441820</commentid>
    <comment_count>7</comment_count>
      <attachid>101753</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-25 13:18:44 -0700</bug_when>
    <thetext>Comment on attachment 101753
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:47
&gt;&gt; +    WebArrayBufferView(const WebArrayBufferView&amp; r) : m_private(0) { assign(r); }
&gt; 
&gt; nit: the variable name &quot;r&quot; is an odd choice.  normally, a letter is chosen
&gt; from the typename.  in this case &quot;v&quot; might make sense.

FIXED

&gt;&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:60
&gt;&gt; +    WEBKIT_API unsigned byteLength() const;
&gt; 
&gt; isn&apos;t it valuable to expose byteOffset() too?  can&apos;t the view be a slice
&gt; at a non-zero offset?

Good point -- added byteOffset()

&gt;&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:62
&gt;&gt; +    WebArrayBufferView(const WTF::PassRefPtr&lt;WebCore::ArrayBufferView&gt;&amp;);
&gt; 
&gt; these should be guarded with #if WEBKIT_IMPLEMENTATION so that no one outside of
&gt; the webkit implementation can use them.

FIXED

&gt;&gt; Source/WebKit/chromium/public/WebArrayBufferView.h:68
&gt;&gt; +    WebArrayBufferViewPrivate* m_private;
&gt; 
&gt; the &quot;new way&quot; is to just use the WebCore type here and ditch the
&gt; WebFooPrivate type.  you should also be using WebPrivatePtr&lt;T&gt; to
&gt; help you with the reference counting and boilerplate associated
&gt; with wrapping a WebCore reference counted type.

FIXED

&gt;&gt; Source/WebKit/chromium/src/WebBindings.cpp:298
&gt;&gt; +
&gt; 
&gt; nit: extra new line should be deleted

FIXED

&gt;&gt; LayoutTests/ChangeLog:4
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=65039
&gt; 
&gt; From a different change?

Sorry - FIXED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441881</commentid>
    <comment_count>8</comment_count>
      <attachid>101899</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-07-25 14:50:38 -0700</bug_when>
    <thetext>Comment on attachment 101899
Patch

WebKit API changes LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441905</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-25 15:16:49 -0700</bug_when>
    <thetext>Committed r91708: &lt;http://trac.webkit.org/changeset/91708&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101753</attachid>
            <date>2011-07-22 12:13:01 -0700</date>
            <delta_ts>2011-07-25 13:18:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65039-20110722121300.patch</filename>
            <type>text/plain</type>
            <size>18483</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTU4MikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDctMjIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgQ2hyb21pdW0gRFJUIHRvIG91dHB1dCBiaW5hcnkgKGluc3RlYWQgb2YgYmFz
ZTY0LWVuY29kZWQpIGRhdGEgZm9yIHdlYiBhdWRpbyB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTAzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViQmluZGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViQmluZGluZ3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpnZXRBcnJheUJ1ZmZlclZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQmluZGluZ3M6OmdldEFycmF5QnVmZmVyVmlldyk6CisKIDIwMTEtMDctMjIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBE
RVBTLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gOTE0MjMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Myw2ICsxMDMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQW5pbWF0aW9uQ29udHJv
bGxlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGll
bnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBdWRpb0J1cy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkF1ZGlv
RGV2aWNlLmgnLApAQCAtNDIxLDYgKzQyMiw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRp
b25Db250cm9sbGVySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJBcnJheUJ1ZmZlclZp
ZXcuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkF0dHJpYnV0ZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViQXVkaW9CdXMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkJpbmRpbmdzLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
cnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFycmF5QnVmZmVyVmlldy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJBcnJheUJ1ZmZlclZpZXdfaAorI2RlZmluZSBXZWJBcnJh
eUJ1ZmZlclZpZXdfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgQXJyYXlCdWZmZXJWaWV3OyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkFycmF5QnVmZmVyVmlld1ByaXZhdGU7CisKKy8vIFByb3ZpZGVzIGFjY2VzcyB0
byBhbiBBcnJheUJ1ZmZlclZpZXcuCitjbGFzcyBXZWJBcnJheUJ1ZmZlclZpZXcgeworcHVibGlj
OgorICAgIH5XZWJBcnJheUJ1ZmZlclZpZXcoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYkFycmF5
QnVmZmVyVmlldygpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYkFycmF5QnVmZmVyVmlldyhj
b25zdCBXZWJBcnJheUJ1ZmZlclZpZXcmIHIpIDogbV9wcml2YXRlKDApIHsgYXNzaWduKHIpOyB9
CisgICAgV2ViQXJyYXlCdWZmZXJWaWV3JiBvcGVyYXRvcj0oY29uc3QgV2ViQXJyYXlCdWZmZXJW
aWV3JiByKQorICAgIHsKKyAgICAgICAgYXNzaWduKHIpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2
b2lkIGFzc2lnbihjb25zdCBXZWJBcnJheUJ1ZmZlclZpZXcmKTsKKworICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkKiBi
YXNlQWRkcmVzcygpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdW5zaWduZWQgYnl0ZUxlbmd0aCgp
IGNvbnN0OworCisgICAgV2ViQXJyYXlCdWZmZXJWaWV3KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpBcnJheUJ1ZmZlclZpZXc+Jik7CisgICAgV2ViQXJyYXlCdWZmZXJWaWV3JiBvcGVy
YXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFycmF5QnVmZmVyVmlldz4mKTsK
KyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QXJyYXlCdWZmZXJWaWV3Pigp
IGNvbnN0OworCitwcml2YXRlOgorICAgIHZvaWQgYXNzaWduKFdlYkFycmF5QnVmZmVyVmlld1By
aXZhdGUqKTsKKyAgICBXZWJBcnJheUJ1ZmZlclZpZXdQcml2YXRlKiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkJpbmRpbmdzLmgJKHJldmlzaW9uIDkxNDIzKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQXJyYXlCdWZm
ZXJWaWV3OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBXZWJFbGVtZW50OwogY2xhc3MgV2Vi
Tm9kZTsKQEAgLTEzNCw2ICsxMzUsMTAgQEAgcHVibGljOgogICAgIC8vIElmIHNvLCByZXR1cm4g
dGhhdCByYW5nZSBhcyBhIFdlYlJhbmdlIG9iamVjdC4KICAgICBXRUJLSVRfQVBJIHN0YXRpYyBi
b29sIGdldFJhbmdlKE5QT2JqZWN0KiByYW5nZSwgV2ViUmFuZ2UqKTsKIAorICAgIC8vIFJldHVy
biB0cnVlIChzdWNjZXNzKSBpZiB0aGUgZ2l2ZW4gbnBvYmogaXMgYW4gQXJyYXlCdWZmZXJWaWV3
IG9iamVjdC4KKyAgICAvLyBJZiBzbywgcmV0dXJuIGl0IGFzIGEgV2ViQXJyYXlCdWZmZXJWaWV3
IG9iamVjdC4KKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGdldEFycmF5QnVmZmVyVmlldyhO
UE9iamVjdCogYXJyYXlCdWZmZXJWaWV3LCBXZWJBcnJheUJ1ZmZlclZpZXcqKTsKKwogICAgIC8v
IFJldHVybiB0cnVlIChzdWNjZXNzKSBpZiB0aGUgZ2l2ZW4gbnBvYmogaXMgYW4gZWxlbWVudC4K
ICAgICAvLyBJZiBzbywgcmV0dXJuIHRoYXQgZWxlbWVudCBhcyBhIFdlYkVsZW1lbnQgb2JqZWN0
LgogICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgZ2V0RWxlbWVudChOUE9iamVjdCogZWxlbWVu
dCwgV2ViRWxlbWVudCopOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJy
YXlCdWZmZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXJWaWV3LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBcnJheUJ1ZmZlclZp
ZXcuaCIKKworI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViQXJyYXlCdWZmZXJWaWV3UHJpdmF0ZSA6IHB1YmxpYyBBcnJheUJ1ZmZl
clZpZXcgeworfTsKKwordm9pZCBXZWJBcnJheUJ1ZmZlclZpZXc6OnJlc2V0KCkKK3sKKyAgICBh
c3NpZ24oMCk7Cit9CisKK3ZvaWQgV2ViQXJyYXlCdWZmZXJWaWV3Ojphc3NpZ24oY29uc3QgV2Vi
QXJyYXlCdWZmZXJWaWV3JiBvdGhlcikKK3sKKyAgICBXZWJBcnJheUJ1ZmZlclZpZXdQcml2YXRl
KiBwID0gY29uc3RfY2FzdDxXZWJBcnJheUJ1ZmZlclZpZXdQcml2YXRlKj4ob3RoZXIubV9wcml2
YXRlKTsKKyAgICBpZiAocCkKKyAgICAgICAgcC0+cmVmKCk7CisgICAgYXNzaWduKHApOworfQor
CitXZWJBcnJheUJ1ZmZlclZpZXc6OldlYkFycmF5QnVmZmVyVmlldyhjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6QXJyYXlCdWZmZXJWaWV3PiYgYXJyYXlCdWZmZXJWaWV3KQorICAgIDog
bV9wcml2YXRlKHN0YXRpY19jYXN0PFdlYkFycmF5QnVmZmVyVmlld1ByaXZhdGUqPihhcnJheUJ1
ZmZlclZpZXcucmVsZWFzZVJlZigpKSkKK3sKK30KKwordm9pZCogV2ViQXJyYXlCdWZmZXJWaWV3
OjpiYXNlQWRkcmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YmFzZUFkZHJl
c3MoKTsgICAgCit9CisKK3Vuc2lnbmVkIFdlYkFycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Ynl0ZUxlbmd0aCgpOyAgICAKK30KKwor
V2ViQXJyYXlCdWZmZXJWaWV3JiBXZWJBcnJheUJ1ZmZlclZpZXc6Om9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QXJyYXlCdWZmZXJWaWV3PiYgYXJyYXlCdWZmZXJWaWV3
KQoreworICAgIGFzc2lnbihzdGF0aWNfY2FzdDxXZWJBcnJheUJ1ZmZlclZpZXdQcml2YXRlKj4o
YXJyYXlCdWZmZXJWaWV3LnJlbGVhc2VSZWYoKSkpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
V2ViQXJyYXlCdWZmZXJWaWV3OjpvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QXJy
YXlCdWZmZXJWaWV3PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3Pihjb25zdF9jYXN0PFdlYkFycmF5QnVmZmVyVmlld1ByaXZhdGUqPihtX3ByaXZhdGUp
KTsKK30KKwordm9pZCBXZWJBcnJheUJ1ZmZlclZpZXc6OmFzc2lnbihXZWJBcnJheUJ1ZmZlclZp
ZXdQcml2YXRlKiBwKQoreworICAgIC8vIHAgaXMgYWxyZWFkeSByZWYnZCBmb3IgdXMgYnkgdGhl
IGNhbGxlcgorICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGVyZWYoKTsK
KyAgICBtX3ByaXZhdGUgPSBwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAJKHJldmlzaW9uIDkxNDIz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw4ICszNSwxMCBAQAogI2luY2x1ZGUgIm5wcnVudGltZV9wcml2LmgiCiAK
ICNpZiBVU0UoVjgpCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiTlBW
OE9iamVjdC5oIiAgLy8gZm9yIFByaXZhdGVJZGVudGlmaWVyCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
KyNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhFbGVtZW50LmgiCkBA
IC00Niw2ICs0OCw3IEBACiAjZWxpZiBVU0UoSlNDKQogI2luY2x1ZGUgImJyaWRnZS9jL2NfdXRp
bGl0eS5oIgogI2VuZGlmCisjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYlJhbmdlLmgiCiAKQEAgLTIzNCw2ICsyMzcs
MjEgQEAgc3RhdGljIGJvb2wgZ2V0RWxlbWVudEltcGwoTlBPYmplY3QqIG9iagogICAgIHJldHVy
biB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBnZXRBcnJheUJ1ZmZlclZpZXdJbXBsKE5QT2JqZWN0
KiBvYmplY3QsIFdlYkFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KQoreworICAgIGlm
ICghb2JqZWN0IHx8IChvYmplY3QtPl9jbGFzcyAhPSBucFNjcmlwdE9iamVjdENsYXNzKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVjhOUE9iamVjdCogdjhOUE9iamVjdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG9iamVjdCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB2OE9iamVjdCh2OE5QT2JqZWN0LT52OE9iamVjdCk7CisgICAgQXJyYXlCdWZmZXJWaWV3
KiBuYXRpdmUgPSBWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UodjhPYmplY3QpID8gVjhB
cnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CisgICAgaWYgKCFuYXRpdmUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICphcnJheUJ1ZmZlclZpZXcgPSBXZWJBcnJh
eUJ1ZmZlclZpZXcobmF0aXZlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIE5QT2Jq
ZWN0KiBtYWtlSW50QXJyYXlJbXBsKGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBkYXRhKQogewogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKQEAgLTI2OCw2ICsyODYsMTcgQEAgYm9vbCBX
ZWJCaW5kaW5nczo6Z2V0UmFuZ2UoTlBPYmplY3QqIHJhbgogI2VuZGlmCiB9CiAKK2Jvb2wgV2Vi
QmluZGluZ3M6OmdldEFycmF5QnVmZmVyVmlldyhOUE9iamVjdCogYXJyYXlCdWZmZXJWaWV3LCBX
ZWJBcnJheUJ1ZmZlclZpZXcqIHdlYkFycmF5QnVmZmVyVmlldykKK3sKKyNpZiBVU0UoVjgpCisg
ICAgcmV0dXJuIGdldEFycmF5QnVmZmVyVmlld0ltcGwoYXJyYXlCdWZmZXJWaWV3LCB3ZWJBcnJh
eUJ1ZmZlclZpZXcpOworI2Vsc2UKKyAgICAvLyBOb3Qgc3VwcG9ydGVkIG9uIG90aGVyIHBvcnRz
IChKU0MsIGV0YykuCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKwogYm9vbCBXZWJC
aW5kaW5nczo6Z2V0RWxlbWVudChOUE9iamVjdCogZWxlbWVudCwgV2ViRWxlbWVudCogd2ViRWxl
bWVudCkKIHsKICNpZiBVU0UoVjgpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTU4MikKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTA3LTIyICBDaHJpcyBSb2dlcnMg
IDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIENocm9taXVtIERSVCB0byBv
dXRwdXQgYmluYXJ5IChpbnN0ZWFkIG9mIGJhc2U2NC1lbmNvZGVkKSBkYXRhIGZvciB3ZWIgYXVk
aW8gdGVzdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXVkaW9EYXRhKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmF1ZGlvRGF0YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdEV2ZW50UHJpbnRlci5jcHA6CisgICAgICAgIChEUlRQcmludGVyOjpoYW5k
bGVBdWRpb0hlYWRlcik6CisgICAgICAgIChUZXN0U2hlbGxQcmludGVyOjpoYW5kbGVBdWRpb0hl
YWRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoK
KyAgICAgICAgKFRlc3RTaGVsbDo6ZHVtcCk6CisKIDIwMTEtMDctMjIgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkaW5nIFRpbSBIb3J0b24gdG8gY29u
dHJpYnV0b3IgbGlzdCBmb3IgQnVnemlsbGEgYXV0by1jb21wbGV0aW9uLiBIZSBpcyBDQydlZCBx
dWl0ZSBmcmVxdWVudGx5LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTE0MjMpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5
b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgic2V0RGVmZXJNYWluUmVzb3VyY2VEYXRh
TG9hZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9h
ZCk7CiAgICAgYmluZE1ldGhvZCgic2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRl
bkZvclVSTFNjaGVtZSk7CiAgICAgYmluZE1ldGhvZCgic2V0RWRpdGluZ0JlaGF2aW9yIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoYXZpb3IpOwotICAgIGJpbmRNZXRob2Qo
InNldEVuY29kZWRBdWRpb0RhdGEiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEVuY29kZWRB
dWRpb0RhdGEpOworICAgIGJpbmRNZXRob2QoInNldEF1ZGlvRGF0YSIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXVkaW9EYXRhKTsKICAgICBiaW5kTWV0aG9kKCJzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bik7CiAgICAgYmluZE1ldGhvZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0
SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCk7CkBAIC0xODQ2LDEyICsxODQ2LDE5IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3QKICAgICBtX3NoZWxsLT53ZWJW
aWV3KCktPnNldFRleHREaXJlY3Rpb24oZGlyZWN0aW9uKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0RW5jb2RlZEF1ZGlvRGF0YShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QXVkaW9EYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKworICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIENoZWNrIHRoYXQgcGFzc2VkLWluIG9iamVjdCBpcywgaW4gZmFjdCwgYW4g
QXJyYXlCdWZmZXJWaWV3LgorICAgIE5QT2JqZWN0KiBucG9iamVjdCA9IE5QVkFSSUFOVF9UT19P
QkpFQ1QoYXJndW1lbnRzWzBdKTsKKyAgICBpZiAoIW5wb2JqZWN0KQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCFXZWJCaW5kaW5nczo6Z2V0QXJyYXlCdWZmZXJWaWV3KG5wb2JqZWN0LCAmbV9h
dWRpb0RhdGEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2VuY29kZWRBdWRpb0RhdGEgPSBh
cmd1bWVudHNbMF0udG9TdHJpbmcoKTsKICAgICBzZXRTaG91bGREdW1wQXNBdWRpbyh0cnVlKTsK
IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gOTE0MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2
ICs0Myw3IEBACiAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCiAjaW5jbHVkZSAiVGFzay5o
IgorI2luY2x1ZGUgIldlYkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5o
IgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKQEAg
LTI0OSw5ICsyNTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWZlck1haW5SZXNvdXJjZURh
dGFMb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNl
dEVkaXRpbmdCZWhhdmlvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
LSAgICAvLyBEZWFscyB3aXRoIFdlYiBBdWRpbyBiYXNlNjQgZW5jb2RlZCBXQVZFIGZpbGUgZGF0
YS4KLSAgICB2b2lkIHNldEVuY29kZWRBdWRpb0RhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbmNvZGVkQXVkaW9EYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmNvZGVkQXVkaW9EYXRhOyB9IAorICAgIC8vIERlYWxzIHdpdGgg
V2ViIEF1ZGlvIFdBViBmaWxlIGRhdGEuCisgICAgdm9pZCBzZXRBdWRpb0RhdGEoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIGNvbnN0IFdlYktpdDo6V2ViQXJyYXlC
dWZmZXJWaWV3JiBhdWRpb0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvRGF0YTsgfSAKIAog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgc3R1YnMuCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBhbnkgb2YgdGhlc2UgdGhhdCBhcmUgbmVlZGVkIHRvIHBhc3MgdGhlIGxheW91dCB0ZXN0
cy4KQEAgLTYxOSw4ICs2MjAsOCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwog
Ci0gICAgLy8gYmFzZTY0IGVuY29kZWQgV0FWIGF1ZGlvIGRhdGEgaXMgc3RvcmVkIGhlcmUuCi0g
ICAgc3RkOjpzdHJpbmcgbV9lbmNvZGVkQXVkaW9EYXRhOworICAgIC8vIFdBViBhdWRpbyBkYXRh
IGlzIHN0b3JlZCBoZXJlLgorICAgIFdlYktpdDo6V2ViQXJyYXlCdWZmZXJWaWV3IG1fYXVkaW9E
YXRhOwogfTsKIAogI2VuZGlmIC8vIExheW91dFRlc3RDb250cm9sbGVyX2gKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuY3BwCShy
ZXZpc2lvbiA5MTQyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RFdmVu
dFByaW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDYgQEAgdm9pZCBEUlRQ
cmludGVyOjpoYW5kbGVUZXh0Rm9vdGVyKCkgY29ucwogdm9pZCBEUlRQcmludGVyOjpoYW5kbGVB
dWRpb0hlYWRlcigpIGNvbnN0CiB7CiAgICAgcHJpbnRmKCJDb250ZW50LVR5cGU6IGF1ZGlvL3dh
dlxuIik7Ci0gICAgcHJpbnRmKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjRcbiIp
OyAgICAgICAgICAgIAogfQogCiB2b2lkIERSVFByaW50ZXI6OmhhbmRsZUltYWdlKGNvbnN0IGNo
YXIqIGFjdHVhbEhhc2gsIGNvbnN0IGNoYXIqIGV4cGVjdGVkSGFzaCwgY29uc3QgdW5zaWduZWQg
Y2hhciogaW1hZ2VEYXRhLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCBjaGFyKikgY29uc3QKQEAg
LTE1Miw3ICsxNTEsNiBAQCB2b2lkIFRlc3RTaGVsbFByaW50ZXI6OmhhbmRsZVRleHRGb290ZXIo
CiB2b2lkIFRlc3RTaGVsbFByaW50ZXI6OmhhbmRsZUF1ZGlvSGVhZGVyKCkgY29uc3QKIHsKICAg
ICBwcmludGYoIkNvbnRlbnQtVHlwZTogYXVkaW8vd2F2XG4iKTsKLSAgICBwcmludGYoIkNvbnRl
bnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxuIik7CiB9CiAKIHZvaWQgVGVzdFNoZWxsUHJp
bnRlcjo6aGFuZGxlSW1hZ2UoY29uc3QgY2hhciogYWN0dWFsSGFzaCwgY29uc3QgY2hhciosIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgY2hh
ciogZmlsZU5hbWUpIGNvbnN0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHAJKHJldmlzaW9uIDkxNDIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkRSVERldlRvb2xzQWdlbnQuaCIKICNpbmNsdWRlICJEUlREZXZUb29sc0NsaWVu
dC5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViQXJy
YXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIldl
YkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgpAQCAtNDc3LDEzICs0NzgsMTcg
QEAgdm9pZCBUZXN0U2hlbGw6OmR1bXAoKQogCiAgICAgaWYgKHNob3VsZER1bXBBc0F1ZGlvKSB7
CiAgICAgICAgIG1fcHJpbnRlci0+aGFuZGxlQXVkaW9IZWFkZXIoKTsKLQotICAgICAgICBjb25z
dCBzdHJpbmcmIGVuY29kZWRBdWRpb0RhdGEgPSBtX2xheW91dFRlc3RDb250cm9sbGVyLT5lbmNv
ZGVkQXVkaW9EYXRhKCk7Ci0gICAgICAgIGlmIChmd3JpdGUoZW5jb2RlZEF1ZGlvRGF0YS5jX3N0
cigpLCAxLCBlbmNvZGVkQXVkaW9EYXRhLnNpemUoKSwgc3Rkb3V0KSAhPSBlbmNvZGVkQXVkaW9E
YXRhLnNpemUoKSkKKyAgICAgICAgCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViQXJyYXlCdWZm
ZXJWaWV3JiB3ZWJBcnJheUJ1ZmZlclZpZXcgPSBtX2xheW91dFRlc3RDb250cm9sbGVyLT5hdWRp
b0RhdGEoKTsKKyAgICAgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0aDogJWRcbiIsIHdlYkFycmF5
QnVmZmVyVmlldy5ieXRlTGVuZ3RoKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKGZ3cml0ZSh3
ZWJBcnJheUJ1ZmZlclZpZXcuYmFzZUFkZHJlc3MoKSwgMSwgd2ViQXJyYXlCdWZmZXJWaWV3LmJ5
dGVMZW5ndGgoKSwgc3Rkb3V0KSAhPSB3ZWJBcnJheUJ1ZmZlclZpZXcuYnl0ZUxlbmd0aCgpKQog
ICAgICAgICAgICAgRkFUQUwoIlNob3J0IHdyaXRlIHRvIHN0ZG91dCwgZGlzayBmdWxsP1xuIik7
CiAgICAgICAgIHByaW50ZigiXG4iKTsKLQorICAgICAgICBwcmludGYoIiNFT0ZcbiIpOworICAg
ICAgICAKICAgICAgICAgbV9wcmludGVyLT5oYW5kbGVUZXN0Rm9vdGVyKHRydWUpOworCiAgICAg
ICAgIGZmbHVzaChzdGRvdXQpOwogICAgICAgICBmZmx1c2goc3RkZXJyKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTE1ODIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNy0yMiAgQ2hyaXMgUm9nZXJz
ICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBDaHJvbWl1bSBEUlQgdG8g
b3V0cHV0IGJpbmFyeSAoaW5zdGVhZCBvZiBiYXNlNjQtZW5jb2RlZCkgZGF0YSBmb3Igd2ViIGF1
ZGlvIHRlc3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1MDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDExLTA3LTIyICBNYXJrIEhh
aG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRGF0ZS5wcm90b3R5
cGUudG9JU09TdHJpbmcgZG9lc24ndCBoYW5kbGUgbmVnYXRpdmUgeWVhcnMgb3IgeWVhcnMgPiA5
OTk5IGNvcnJlY3RseS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101899</attachid>
            <date>2011-07-25 13:16:58 -0700</date>
            <delta_ts>2011-07-25 14:52:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65039-20110725131702.patch</filename>
            <type>text/plain</type>
            <size>17020</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTU4MikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDctMjIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgQ2hyb21pdW0gRFJUIHRvIG91dHB1dCBiaW5hcnkgKGluc3RlYWQgb2YgYmFz
ZTY0LWVuY29kZWQpIGRhdGEgZm9yIHdlYiBhdWRpbyB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTAzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViQmluZGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViQmluZGluZ3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpnZXRBcnJheUJ1ZmZlclZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQmluZGluZ3M6OmdldEFycmF5QnVmZmVyVmlldyk6CisKIDIwMTEtMDctMjIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBE
RVBTLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gOTE0MjMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Myw2ICsxMDMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQW5pbWF0aW9uQ29udHJv
bGxlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGll
bnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBdWRpb0J1cy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkF1ZGlv
RGV2aWNlLmgnLApAQCAtNDIxLDYgKzQyMiw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRp
b25Db250cm9sbGVySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJBcnJheUJ1ZmZlclZp
ZXcuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkF0dHJpYnV0ZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViQXVkaW9CdXMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkJpbmRpbmdzLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
cnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFycmF5QnVmZmVyVmlldy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJBcnJheUJ1ZmZlclZpZXdfaAorI2RlZmluZSBXZWJBcnJh
eUJ1ZmZlclZpZXdfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJp
dmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEFycmF5QnVmZmVyVmlldzsg
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gUHJvdmlkZXMgYWNjZXNzIHRvIGFuIEFycmF5
QnVmZmVyVmlldy4KK2NsYXNzIFdlYkFycmF5QnVmZmVyVmlldyB7CitwdWJsaWM6CisgICAgfldl
YkFycmF5QnVmZmVyVmlldygpIHsgcmVzZXQoKTsgfQorICAgIFdlYkFycmF5QnVmZmVyVmlldygp
IHsgfQorICAgIFdlYkFycmF5QnVmZmVyVmlldyhjb25zdCBXZWJBcnJheUJ1ZmZlclZpZXcmIHYp
IHsgYXNzaWduKHYpOyB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29u
c3Q7CisgICAgV0VCS0lUX0FQSSB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3Q7CisgICAgV0VC
S0lUX0FQSSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfQVBJIHZv
aWQgYXNzaWduKGNvbnN0IFdlYkFycmF5QnVmZmVyVmlldyYpOworICAgIFdFQktJVF9BUEkgdm9p
ZCByZXNldCgpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQXJyYXlCdWZm
ZXJWaWV3KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpBcnJheUJ1ZmZlclZpZXc+Jik7
CisgICAgV2ViQXJyYXlCdWZmZXJWaWV3JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkFycmF5QnVmZmVyVmlldz4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6QXJyYXlCdWZmZXJWaWV3PigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6
CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpBcnJheUJ1ZmZlclZpZXc+IG1fcHJpdmF0ZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkJpbmRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaAkocmV2aXNpb24gOTE0MjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJBcnJh
eUJ1ZmZlclZpZXc7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CiBjbGFz
cyBXZWJOb2RlOwpAQCAtMTM0LDYgKzEzNSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgc28sIHJl
dHVybiB0aGF0IHJhbmdlIGFzIGEgV2ViUmFuZ2Ugb2JqZWN0LgogICAgIFdFQktJVF9BUEkgc3Rh
dGljIGJvb2wgZ2V0UmFuZ2UoTlBPYmplY3QqIHJhbmdlLCBXZWJSYW5nZSopOwogCisgICAgLy8g
UmV0dXJuIHRydWUgKHN1Y2Nlc3MpIGlmIHRoZSBnaXZlbiBucG9iaiBpcyBhbiBBcnJheUJ1ZmZl
clZpZXcgb2JqZWN0LgorICAgIC8vIElmIHNvLCByZXR1cm4gaXQgYXMgYSBXZWJBcnJheUJ1ZmZl
clZpZXcgb2JqZWN0LgorICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXJW
aWV3KE5QT2JqZWN0KiBhcnJheUJ1ZmZlclZpZXcsIFdlYkFycmF5QnVmZmVyVmlldyopOworCiAg
ICAgLy8gUmV0dXJuIHRydWUgKHN1Y2Nlc3MpIGlmIHRoZSBnaXZlbiBucG9iaiBpcyBhbiBlbGVt
ZW50LgogICAgIC8vIElmIHNvLCByZXR1cm4gdGhhdCBlbGVtZW50IGFzIGEgV2ViRWxlbWVudCBv
YmplY3QuCiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBnZXRFbGVtZW50KE5QT2JqZWN0KiBl
bGVtZW50LCBXZWJFbGVtZW50Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJBcnJheUJ1ZmZlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkFycmF5QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFycmF5QnVm
ZmVyVmlldy5oIgorCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJBcnJheUJ1ZmZl
clZpZXc6OmFzc2lnbihjb25zdCBXZWJBcnJheUJ1ZmZlclZpZXcmIG90aGVyKQoreworICAgIG1f
cHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJBcnJheUJ1ZmZlclZpZXc6
OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKwordm9pZCogV2ViQXJyYXlC
dWZmZXJWaWV3OjpiYXNlQWRkcmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
YmFzZUFkZHJlc3MoKTsKK30KKwordW5zaWduZWQgV2ViQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5ieXRlT2Zmc2V0KCk7Cit9CisK
K3Vuc2lnbmVkIFdlYkFycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+Ynl0ZUxlbmd0aCgpOworfQorCitXZWJBcnJheUJ1ZmZlclZpZXc6
OldlYkFycmF5QnVmZmVyVmlldyhjb25zdCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mIHZh
bHVlKQorICAgIDogbV9wcml2YXRlKHZhbHVlKQoreworfQorCitXZWJBcnJheUJ1ZmZlclZpZXcm
IFdlYkFycmF5QnVmZmVyVmlldzo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiYgdmFsdWUpCit7CisgICAgbV9wcml2YXRlID0gdmFsdWU7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitXZWJBcnJheUJ1ZmZlclZpZXc6Om9wZXJhdG9yIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJCaW5kaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQmluZGluZ3MuY3BwCShyZXZpc2lvbiA5MTQyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkJpbmRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsMTAgQEAK
ICNpbmNsdWRlICJucHJ1bnRpbWVfcHJpdi5oIgogCiAjaWYgVVNFKFY4KQorI2luY2x1ZGUgIkFy
cmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIk5QVjhPYmplY3QuaCIgIC8vIGZvciBQcml2YXRl
SWRlbnRpZmllcgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZp
ZXcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBl
ci5oIgogI2luY2x1ZGUgIlY4RWxlbWVudC5oIgpAQCAtNDYsNiArNDgsNyBAQAogI2VsaWYgVVNF
KEpTQykKICNpbmNsdWRlICJicmlkZ2UvYy9jX3V0aWxpdHkuaCIKICNlbmRpZgorI2luY2x1ZGUg
IldlYkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJXZWJSYW5nZS5oIgogCkBAIC0yMzQsNiArMjM3LDIxIEBAIHN0YXRpYyBib29sIGdldEVsZW1l
bnRJbXBsKE5QT2JqZWN0KiBvYmoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wg
Z2V0QXJyYXlCdWZmZXJWaWV3SW1wbChOUE9iamVjdCogb2JqZWN0LCBXZWJBcnJheUJ1ZmZlclZp
ZXcqIGFycmF5QnVmZmVyVmlldykKK3sKKyAgICBpZiAoIW9iamVjdCB8fCAob2JqZWN0LT5fY2xh
c3MgIT0gbnBTY3JpcHRPYmplY3RDbGFzcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihv
YmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhPYmplY3QodjhOUE9iamVjdC0+
djhPYmplY3QpOworICAgIEFycmF5QnVmZmVyVmlldyogbmF0aXZlID0gVjhBcnJheUJ1ZmZlclZp
ZXc6Okhhc0luc3RhbmNlKHY4T2JqZWN0KSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2
OE9iamVjdCkgOiAwOworICAgIGlmICghbmF0aXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAqYXJyYXlCdWZmZXJWaWV3ID0gV2ViQXJyYXlCdWZmZXJWaWV3KG5hdGl2ZSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBOUE9iamVjdCogbWFrZUludEFycmF5SW1wbChjb25z
dCBXZWJWZWN0b3I8aW50PiYgZGF0YSkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CkBAIC0yNjgsNiArMjg2LDE2IEBAIGJvb2wgV2ViQmluZGluZ3M6OmdldFJhbmdlKE5QT2Jq
ZWN0KiByYW4KICNlbmRpZgogfQogCitib29sIFdlYkJpbmRpbmdzOjpnZXRBcnJheUJ1ZmZlclZp
ZXcoTlBPYmplY3QqIGFycmF5QnVmZmVyVmlldywgV2ViQXJyYXlCdWZmZXJWaWV3KiB3ZWJBcnJh
eUJ1ZmZlclZpZXcpCit7CisjaWYgVVNFKFY4KQorICAgIHJldHVybiBnZXRBcnJheUJ1ZmZlclZp
ZXdJbXBsKGFycmF5QnVmZmVyVmlldywgd2ViQXJyYXlCdWZmZXJWaWV3KTsKKyNlbHNlCisgICAg
Ly8gTm90IHN1cHBvcnRlZCBvbiBvdGhlciBwb3J0cyAoSlNDLCBldGMpLgorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCiBib29sIFdlYkJpbmRpbmdzOjpnZXRFbGVtZW50KE5QT2JqZWN0
KiBlbGVtZW50LCBXZWJFbGVtZW50KiB3ZWJFbGVtZW50KQogewogI2lmIFVTRShWOCkKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDkxNTgyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDctMjIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgQ2hyb21pdW0gRFJUIHRvIG91dHB1dCBiaW5hcnkgKGluc3RlYWQgb2YgYmFz
ZTY0LWVuY29kZWQpIGRhdGEgZm9yIHdlYiBhdWRpbyB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTAzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBdWRpb0RhdGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXVkaW9EYXRh
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0RXZlbnRQcmludGVyLmNw
cDoKKyAgICAgICAgKERSVFByaW50ZXI6OmhhbmRsZUF1ZGlvSGVhZGVyKToKKyAgICAgICAgKFRl
c3RTaGVsbFByaW50ZXI6OmhhbmRsZUF1ZGlvSGVhZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpkdW1wKToK
KwogMjAxMS0wNy0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRpbmcgVGltIEhvcnRvbiB0byBjb250cmlidXRvciBsaXN0IGZvciBCdWd6aWxsYSBh
dXRvLWNvbXBsZXRpb24uIEhlIGlzIENDJ2VkIHF1aXRlIGZyZXF1ZW50bHkuCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA5MTQyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSw3
IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0
aG9kKCJzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKTsKICAgICBiaW5kTWV0aG9kKCJzZXREb21h
aW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRFZGl0aW5nQmVoYXZpb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEVkaXRp
bmdCZWhhdmlvcik7Ci0gICAgYmluZE1ldGhvZCgic2V0RW5jb2RlZEF1ZGlvRGF0YSIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0RW5jb2RlZEF1ZGlvRGF0YSk7CisgICAgYmluZE1ldGhvZCgi
c2V0QXVkaW9EYXRhIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdWRpb0RhdGEpOwogICAg
IGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRJY29u
RGF0YWJhc2VFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VF
bmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
KTsKQEAgLTE4NDYsMTIgKzE4NDYsMTkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
VGV4dERpcmVjdAogICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0VGV4dERpcmVjdGlvbihkaXJl
Y3Rpb24pOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFbmNvZGVkQXVkaW9E
YXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdWRpb0RhdGEoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNl
dE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5p
c1N0cmluZygpKQorCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNb
MF0uaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2hlY2sgdGhhdCBwYXNz
ZWQtaW4gb2JqZWN0IGlzLCBpbiBmYWN0LCBhbiBBcnJheUJ1ZmZlclZpZXcuCisgICAgTlBPYmpl
Y3QqIG5wb2JqZWN0ID0gTlBWQVJJQU5UX1RPX09CSkVDVChhcmd1bWVudHNbMF0pOworICAgIGlm
ICghbnBvYmplY3QpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIVdlYkJpbmRpbmdzOjpnZXRB
cnJheUJ1ZmZlclZpZXcobnBvYmplY3QsICZtX2F1ZGlvRGF0YSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fZW5jb2RlZEF1ZGlvRGF0YSA9IGFyZ3VtZW50c1swXS50b1N0cmluZygpOwogICAg
IHNldFNob3VsZER1bXBBc0F1ZGlvKHRydWUpOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA5
MTQyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKIAogI2luY2x1ZGUgIkNwcEJv
dW5kQ2xhc3MuaCIKICNpbmNsdWRlICJUYXNrLmgiCisjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXJW
aWV3LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgpAQCAtMjQ5LDkgKzI1MCw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIERlYWxzIHdpdGggV2ViIEF1ZGlv
IGJhc2U2NCBlbmNvZGVkIFdBVkUgZmlsZSBkYXRhLgotICAgIHZvaWQgc2V0RW5jb2RlZEF1ZGlv
RGF0YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGVuY29kZWRBdWRpb0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRBdWRp
b0RhdGE7IH0gCisgICAgLy8gRGVhbHMgd2l0aCBXZWIgQXVkaW8gV0FWIGZpbGUgZGF0YS4KKyAg
ICB2b2lkIHNldEF1ZGlvRGF0YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisgICAgY29uc3QgV2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZpZXcmIGF1ZGlvRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXVkaW9EYXRhOyB9IAogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgb25s
eSBzdHVicy4KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFueSBvZiB0aGVzZSB0aGF0IGFyZSBu
ZWVkZWQgdG8gcGFzcyB0aGUgbGF5b3V0IHRlc3RzLgpAQCAtNjE5LDggKzYyMCw4IEBAIHByaXZh
dGU6CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrPiBt
X3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiAKLSAgICAvLyBiYXNlNjQgZW5jb2RlZCBXQVYg
YXVkaW8gZGF0YSBpcyBzdG9yZWQgaGVyZS4KLSAgICBzdGQ6OnN0cmluZyBtX2VuY29kZWRBdWRp
b0RhdGE7CisgICAgLy8gV0FWIGF1ZGlvIGRhdGEgaXMgc3RvcmVkIGhlcmUuCisgICAgV2ViS2l0
OjpXZWJBcnJheUJ1ZmZlclZpZXcgbV9hdWRpb0RhdGE7CiB9OwogCiAjZW5kaWYgLy8gTGF5b3V0
VGVzdENvbnRyb2xsZXJfaApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dEV2ZW50UHJpbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdEV2ZW50UHJpbnRlci5jcHAJKHJldmlzaW9uIDkxNDIzKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdEV2ZW50UHJpbnRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMCw3ICsxMDAsNiBAQCB2b2lkIERSVFByaW50ZXI6OmhhbmRsZVRleHRGb290ZXIoKSBj
b25zCiB2b2lkIERSVFByaW50ZXI6OmhhbmRsZUF1ZGlvSGVhZGVyKCkgY29uc3QKIHsKICAgICBw
cmludGYoIkNvbnRlbnQtVHlwZTogYXVkaW8vd2F2XG4iKTsKLSAgICBwcmludGYoIkNvbnRlbnQt
VHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxuIik7ICAgICAgICAgICAgCiB9CiAKIHZvaWQgRFJU
UHJpbnRlcjo6aGFuZGxlSW1hZ2UoY29uc3QgY2hhciogYWN0dWFsSGFzaCwgY29uc3QgY2hhciog
ZXhwZWN0ZWRIYXNoLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIHNpemVfdCBpbWFn
ZVNpemUsIGNvbnN0IGNoYXIqKSBjb25zdApAQCAtMTUyLDcgKzE1MSw2IEBAIHZvaWQgVGVzdFNo
ZWxsUHJpbnRlcjo6aGFuZGxlVGV4dEZvb3RlcigKIHZvaWQgVGVzdFNoZWxsUHJpbnRlcjo6aGFu
ZGxlQXVkaW9IZWFkZXIoKSBjb25zdAogewogICAgIHByaW50ZigiQ29udGVudC1UeXBlOiBhdWRp
by93YXZcbiIpOwotICAgIHByaW50ZigiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0
XG4iKTsKIH0KIAogdm9pZCBUZXN0U2hlbGxQcmludGVyOjpoYW5kbGVJbWFnZShjb25zdCBjaGFy
KiBhY3R1YWxIYXNoLCBjb25zdCBjaGFyKiwgY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VEYXRh
LCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCBjaGFyKiBmaWxlTmFtZSkgY29uc3QKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAkocmV2aXNpb24gOTE0
MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRFJURGV2VG9vbHNBZ2VudC5o
IgogI2luY2x1ZGUgIkRSVERldlRvb2xzQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJX
ZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJF
bGVtZW50LmgiCkBAIC00NzcsMTMgKzQ3OCwxNyBAQCB2b2lkIFRlc3RTaGVsbDo6ZHVtcCgpCiAK
ICAgICBpZiAoc2hvdWxkRHVtcEFzQXVkaW8pIHsKICAgICAgICAgbV9wcmludGVyLT5oYW5kbGVB
dWRpb0hlYWRlcigpOwotCi0gICAgICAgIGNvbnN0IHN0cmluZyYgZW5jb2RlZEF1ZGlvRGF0YSA9
IG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmVuY29kZWRBdWRpb0RhdGEoKTsKLSAgICAgICAgaWYg
KGZ3cml0ZShlbmNvZGVkQXVkaW9EYXRhLmNfc3RyKCksIDEsIGVuY29kZWRBdWRpb0RhdGEuc2l6
ZSgpLCBzdGRvdXQpICE9IGVuY29kZWRBdWRpb0RhdGEuc2l6ZSgpKQorICAgICAgICAKKyAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZpZXcmIHdlYkFycmF5QnVmZmVyVmlldyA9
IG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmF1ZGlvRGF0YSgpOworICAgICAgICBwcmludGYoIkNv
bnRlbnQtTGVuZ3RoOiAlZFxuIiwgd2ViQXJyYXlCdWZmZXJWaWV3LmJ5dGVMZW5ndGgoKSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoZndyaXRlKHdlYkFycmF5QnVmZmVyVmlldy5iYXNlQWRkcmVz
cygpLCAxLCB3ZWJBcnJheUJ1ZmZlclZpZXcuYnl0ZUxlbmd0aCgpLCBzdGRvdXQpICE9IHdlYkFy
cmF5QnVmZmVyVmlldy5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBGQVRBTCgiU2hvcnQgd3Jp
dGUgdG8gc3Rkb3V0LCBkaXNrIGZ1bGw/XG4iKTsKICAgICAgICAgcHJpbnRmKCJcbiIpOwotCisg
ICAgICAgIHByaW50ZigiI0VPRlxuIik7CisgICAgICAgIAogICAgICAgICBtX3ByaW50ZXItPmhh
bmRsZVRlc3RGb290ZXIodHJ1ZSk7CisKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAgICAg
IGZmbHVzaChzdGRlcnIpOwogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="96971"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>