<?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>25903</bug_id>
          
          <creation_ts>2009-05-20 19:09:18 -0700</creation_ts>
          <short_desc>Create a default UI theme for media controls in Chromium.</short_desc>
          <delta_ts>2009-05-21 18:56:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Albert J. Wong">ajwong</reporter>
          <assigned_to name="Albert J. Wong">ajwong</assigned_to>
          <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>122235</commentid>
    <comment_count>0</comment_count>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-05-20 19:09:18 -0700</bug_when>
    <thetext>Adds a new style sheet, plus code changes to WebCore/rendering/RenderThemeChromium{Win|Linux}.{h,cc} to create a default ui for HTML5 media elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122240</commentid>
    <comment_count>1</comment_count>
      <attachid>30520</attachid>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-05-20 19:28:41 -0700</bug_when>
    <thetext>Created attachment 30520
Patch to create a default UI for HTML5 media controls in chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122426</commentid>
    <comment_count>2</comment_count>
      <attachid>30520</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-05-21 14:27:49 -0700</bug_when>
    <thetext>Comment on attachment 30520
Patch to create a default UI for HTML5 media controls in chromium.

&gt; +++ b/WebCore/ChangeLog
...
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Implement a default UI for chromium.  Add a style sheet for Chromium media controls
&gt; +	with good defaults and implemented basic draw functions for play/pause &amp; mute buttons.
&gt; +
&gt; +        * css/mediaControlsChromium.css: Added.
&gt; +        * rendering/RenderThemeChromiumLinux.cpp:
&gt; +        (WebCore::RenderThemeChromiumWin::extraMediaControlsStyleSheet): Export our custom
&gt; +	media controls style sheet.
&gt; +        (WebCore::RenderThemeChromiumLinux::paintMediaButtonInternal): Paint buttons
&gt; +	respecting chromium media controls color scheme.

nit: please make sure that all of the lines (even those which wrap) are indented.
compare to other ChangeLog entries.


&gt; +++ b/WebCore/css/mediaControlsChromium.css
...
&gt; + * Copyright (C) 2009 Google Inc. All rights reserved.

It looks like you basically forked this from the existing mediaControls.css
or mediaControlsQT.css.  Both of those are Copyright Apple.  I suspect that
you probably want to preserve their copyright, and then add in our copyright
line.  You can see that being done in other files, like
PlatformKeyboardEventChromium.cpp.


&gt; +++ b/WebCore/rendering/RenderThemeChromiumLinux.cpp
...
&gt;  // form control fonts.
&gt;  static const float DefaultFontSize = 16.0;

though you didn&apos;t change this line, it looks like it should probably have been
written defaultFontSize instead.  might be nice to fix that while you are here
or send a note to whomever has blame (agl?) so that person can fix it.


&gt; +bool RenderThemeChromiumWin::paintMediaButtonInternal(GraphicsContext* context, const IntRect&amp; rect, Image* image)
...
&gt; +bool RenderThemeChromiumWin::paintMediaPlayButton(RenderObject* o, const RenderObject::PaintInfo&amp; paintInfo, const IntRect&amp; rect)
...
&gt; +bool RenderThemeChromiumWin::paintMediaMuteButton(RenderObject* o, const RenderObject::PaintInfo&amp; paintInfo, const IntRect&amp; rect)

The code duplication here is quite unfortunate.  We should find a way to avoid this.
Doesn&apos;t have to block this patch since I know we have a lot of other duplication too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122430</commentid>
    <comment_count>3</comment_count>
      <attachid>30559</attachid>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-05-21 14:51:29 -0700</bug_when>
    <thetext>Created attachment 30559
Updated patch with style &amp; copyright fixes.

Fixed the style issues, copyright, and the incorrectly capitalized defaultFontSize.

I completely agree with the code duplication.  This change is what prompted me to start the thread about refactoring the render themes.  I&apos;ll be in this file for a bit, and intend to try and find a way to factor out the common bits sanely.  But that&apos;s something for next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122455</commentid>
    <comment_count>4</comment_count>
      <attachid>30559</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-21 16:44:49 -0700</bug_when>
    <thetext>Comment on attachment 30559
Updated patch with style &amp; copyright fixes.

I did not look at your CSS, I assume it&apos;s perfect in every way.

Why&apos;s are generally more helpful comments than &quot;whats&quot;:
 60 // The background for the media player controls should be a 60% opaque black rectangle.

Color::black?
 419     context-&gt;setFillColor(Color(0x00,0x00,0x00));

Write a static HTMLMediaElement* toMediaElement(Node*) function instead of this (slightly dangerous) copy/paste code:
40     HTMLMediaElement* mediaElement = static_cast&lt;HTMLMediaElement*&gt;(node ? node-&gt;shadowAncestorNode() : 0);
 441 
 442     if (!mediaElement || (!mediaElement-&gt;hasTagName(HTMLNames::videoTag) &amp;&amp; !mediaElement-&gt;hasTagName(HTMLNames::audioTag)))
 443         return false;

Are you intentionally avoiding static RefPtr&apos;s?  I guess we do that to avoid using static constructors/destructors, eh?
 445     static Image* mediaPlay = Image::loadPlatformResource(&quot;mediaPlay&quot;).releaseRef();

Bah!  The code is identical between Win and Linux.  Can&apos;t we put this in a shared RenderThemeChromium?  Or RenderThemeChomiumMedia or something?  copy/paste code, as Jim Roskin would say, is the root of all evil. :)  (I&apos;m paraphrasing here.)

r- for the unsafe casts.  I&apos;d r+ it with the copy paste... grudgingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122473</commentid>
    <comment_count>5</comment_count>
      <attachid>30569</attachid>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-05-21 17:10:39 -0700</bug_when>
    <thetext>Created attachment 30569
Added ENABLE(VIDEO) ifdefs, and crated a toMediaElement()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122474</commentid>
    <comment_count>6</comment_count>
      <attachid>30569</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-21 17:16:22 -0700</bug_when>
    <thetext>Comment on attachment 30569
Added ENABLE(VIDEO) ifdefs, and crated a toMediaElement()

We use 0, not NULL in c++ code.  See the WK style guide:
http://webkit.org/coding/coding-style.html

also { goes on a new line.

node ? node-&gt;shadowAncestorNode() : 0

would read better to me as:

if (!node)
     return 0;

Node* mediaNode = node-&gt;shadowAncestorNode();

Since this is a function only written once, you can afford to take up a little more space. :)

Also, I wonder if we shoudl call this toMediaElemetn since we&apos;re not casting the passed in node.  mediaElementParent(node) maybe?

Please file a bug about removing the copy/paste code.  We really need to clean this up.

r- for the style nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122478</commentid>
    <comment_count>7</comment_count>
      <attachid>30570</attachid>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-05-21 17:28:05 -0700</bug_when>
    <thetext>Created attachment 30570
Couple more style fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122483</commentid>
    <comment_count>8</comment_count>
      <attachid>30571</attachid>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-05-21 18:07:59 -0700</bug_when>
    <thetext>Created attachment 30571
Normalize Color specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122485</commentid>
    <comment_count>9</comment_count>
      <attachid>30571</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-21 18:11:19 -0700</bug_when>
    <thetext>Comment on attachment 30571
Normalize Color specification.

Looks fine.  Thanks for going through so many revisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122497</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-21 18:56:15 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/44029</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30520</attachid>
            <date>2009-05-20 19:28:41 -0700</date>
            <delta_ts>2009-05-21 14:51:29 -0700</delta_ts>
            <desc>Patch to create a default UI for HTML5 media controls in chromium.</desc>
            <filename>default_ui.path</filename>
            <type>text/plain</type>
            <size>18243</size>
            <attacher name="Albert J. Wong">ajwong</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTVmNTY2OC4uOGMyZjkzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wNS0yMCAgQWxiZXJ0IEouIFdv
bmcgIDxhandvbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGRlZmF1bHQgVUkgZm9yIGNocm9taXVtLiAg
QWRkIGEgc3R5bGUgc2hlZXQgZm9yIENocm9taXVtIG1lZGlhIGNvbnRyb2xzCisJd2l0aCBnb29k
IGRlZmF1bHRzIGFuZCBpbXBsZW1lbnRlZCBiYXNpYyBkcmF3IGZ1bmN0aW9ucyBmb3IgcGxheS9w
YXVzZSAmIG11dGUgYnV0dG9ucy4KKworICAgICAgICAqIGNzcy9tZWRpYUNvbnRyb2xzQ2hyb21p
dW0uY3NzOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmV4dHJh
TWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOiBFeHBvcnQgb3VyIGN1c3RvbQorCW1lZGlhIGNvbnRy
b2xzIHN0eWxlIHNoZWV0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwpOiBQYWludCBidXR0b25zCisJcmVzcGVjdGlu
ZyBjaHJvbWl1bSBtZWRpYSBjb250cm9scyBjb2xvciBzY2hlbWUuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFQbGF5QnV0dG9uKTogUGFpbnQg
bG9naWMgc3BlY2lmaWMgdG8KKwlwbGF5L3BhdXNlIGJ1dHRvbi4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRNZWRpYU11dGVCdXR0b24pOiBQYWludCBz
cGVjaWZpYyB0byBtdXRlCisJYnV0dG9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaDogQXBwcm9wcmlhdGUgaGVhZGVyIGNoYW5nZXMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCk6IEV4
cG9ydCBvdXIgY3VzdG9tCisJbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwp
OiBQYWludCBidXR0b25zCisJcmVzcGVjdGluZyBjaHJvbWl1bSBtZWRpYSBjb250cm9scyBjb2xv
ciBzY2hlbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWlu
dE1lZGlhUGxheUJ1dHRvbik6IFBhaW50IGxvZ2ljIHNwZWNpZmljIHRvCisJcGxheS9wYXVzZSBi
dXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1l
ZGlhTXV0ZUJ1dHRvbik6IFBhaW50IHNwZWNpZmljIHRvIG11dGUKKwlidXR0b24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpzZXREZWZhdWx0Rm9udFNpemUpOiBB
cHByb3ByaWF0ZSBoZWFkZXIgY2hhbmdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbi5oOgorCiAyMDA5LTA1LTIwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNDaHJvbWl1bS5jc3MgYi9XZWJDb3JlL2Nzcy9tZWRp
YUNvbnRyb2xzQ2hyb21pdW0uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjdjY2Y3NTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hy
b21pdW0uY3NzCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyogQ2hyb21pdW0gZGVmYXVsdCBtZWRpYSBjb250
cm9scyAqLworCithdWRpbyB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMzJweDsK
K30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwsIHZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IDA7CisgICAgd2lkdGg6IDEwMCU7
CisgICAgaGVpZ2h0OiAxMDAlOworICAgIHotaW5kZXg6IDA7Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBib3R0
b206IC0xNnB4OworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRv
biwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24geworICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbWVkaWEtbXV0ZS1idXR0b247CisKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTogMDsKKyAgICByaWdodDogMDsKKyAgICBs
ZWZ0OiBhdXRvOworCisgICAgd2lkdGg6IDM0cHg7CisgICAgaGVpZ2h0OiAzMnB4OworCisgICAg
YmFja2dyb3VuZDogcmdiYSgxMjMsIDAsIDAsIDAuNik7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1w
bGF5LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1wbGF5LWJ1dHRvbjsK
KworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiAw
OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogYXV0bzsKKworICAgIHdpZHRoOiAzMHB4Owor
ICAgIGhlaWdodDogMzJweDsKKworICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMjIxLCAwLCAwLjYp
OworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIs
IHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciB7CisgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS10aW1lbGluZS1jb250YWluZXI7CisgICAgLXdlYmtp
dC11c2VyLXNlbGVjdDogbm9uZTsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IGF1dG87CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDMwcHg7CisgICAgcmlnaHQ6IDM0cHg7
CisKKyAgICB3aWR0aDogYXV0bzsKKyAgICBoZWlnaHQ6IDMycHg7CisKKyAgICBiYWNrZ3JvdW5k
OiByZ2JhKDAsIDAsIDAsIDAuNik7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJy
ZW50LXRpbWUtZGlzcGxheSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jdXJyZW50
LXRpbWUtZGlzcGxheTsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgY3Vyc29yOiBk
ZWZhdWx0OworCisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxpbmUtaGVpZ2h0OiAyMXB4
OworICAgIHRvcDogYXV0bzsKKyAgICBib3R0b206IDZweDsKKyAgICBsZWZ0OiBhdXRvOworICAg
IHJpZ2h0OiAwcHg7CisKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgd2lkdGg6IDQ4cHg7CisKKyAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgZm9udC1mYW1pbHk6IEFyaWFsOworICAgIGZvbnQt
d2VpZ2h0OiBib2xkOworICAgIGNvbG9yOiB3aGl0ZTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxheSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiBtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5OworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6
IG5vbmU7CisgICAgZGlzcGxheTogbm9uZTsKKworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAg
Y3Vyc29yOiBkZWZhdWx0OworCisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxpbmUtaGVp
Z2h0OiAyMXB4OworICAgIHRvcDogYXV0bzsKKyAgICBib3R0b206IDZweDsKKyAgICBsZWZ0OiBh
dXRvOworICAgIHJpZ2h0OiAwcHg7CisKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgd2lkdGg6IDQ4
cHg7CisKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgZm9udC1mYW1pbHk6IEFyaWFsOwor
ICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIGNvbG9yOiB3aGl0ZTsKK30KKworYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXRpbWVsaW5lIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHNsaWRlci1ob3Jpem9udGFs
OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA5
cHg7CisgICAgbGVmdDogMHB4OworICAgIHJpZ2h0OiA1MHB4OworICAgIGhlaWdodDogMTNweDsK
KworICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKK30KKworYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRp
YS1zZWVrLWJhY2stYnV0dG9uOworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24sIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBub25lOworfQorCith
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiwgdmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24geworICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbWVkaWEtZnVsbHNjcmVlbi1idXR0b247CisgICAgZGlzcGxheTogbm9uZTsKK30K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCmluZGV4
IGFmODZjYjguLmY2ODQ5NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4LmNwcApAQCAtMjcsNyArMjcsMTAgQEAKICNpbmNsdWRlICJDaHJvbWl1bUJy
aWRnZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJSZW5k
ZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTU0LDYgKzU3LDkgQEAgc3Rh
dGljIGNvbnN0IGludCBzdHlsZWRNZW51TGlzdEludGVybmFsUGFkZGluZ1s0XSA9IHsgMSwgNCwg
MSwgNCB9OwogLy8gZm9ybSBjb250cm9sIGZvbnRzLgogc3RhdGljIGNvbnN0IGZsb2F0IERlZmF1
bHRGb250U2l6ZSA9IDE2LjA7CiAKKy8vIFRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgbWVkaWEgcGxh
eWVyIGNvbnRyb2xzIHNob3VsZCBiZSBhIDYwJSBvcGFxdWUgYmxhY2sgcmVjdGFuZ2xlLgorc3Rh
dGljIGNvbnN0IGZsb2F0IGRlZmF1bHRNZWRpYUNvbnRyb2xPcGFjaXR5ID0gMC42ZjsKKwogLy8g
VGhlc2UgdmFsdWVzIGFsbCBtYXRjaCBTYWZhcmkvV2luLgogc3RhdGljIGNvbnN0IGZsb2F0IGRl
ZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9IDEzOwogc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1
bHRDYW5jZWxCdXR0b25TaXplID0gOTsKQEAgLTExMyw2ICsxMTksMTMgQEAgU3RyaW5nIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkKICAgICByZXR1cm4g
U3RyaW5nKHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHRoZW1lV2lu
UXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpOwogfQogCisjaWYgRU5BQkxFKFZJREVPKQorU3Ry
aW5nIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVl
dCgpCit7CisgICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc0Nocm9taXVtVXNlckFnZW50U3R5bGVTaGVl
dCkpOworfQorI2VuZGlmCisKIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzdXBwb3J0
c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHN1cHBvcnRzRm9jdXMoc3R5bGUtPmFwcGVhcmFuY2UoKSk7CkBAIC0zOTUsNiArNDA4LDYwIEBA
IGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRNZWRpYUJ1dHRvbkludGVybmFsKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgSW1hZ2UqIGltYWdlKQorewor
ICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZGVmYXVsdE1lZGlhQ29udHJvbE9w
YWNpdHkpOworCisgICAgLy8gRHJhdyBiYWNrZ3JvdW5kLgorICAgIENvbG9yIG9sZEZpbGwgPSBj
b250ZXh0LT5maWxsQ29sb3IoKTsKKyAgICBDb2xvciBvbGRTdHJva2UgPSBjb250ZXh0LT5zdHJv
a2VDb2xvcigpOworCisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDB4MDAsMHgwMCww
eDAwKSk7CisgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMHgwMCwweDAwLDB4MDAp
KTsKKyAgICBjb250ZXh0LT5kcmF3UmVjdChyZWN0KTsKKworICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihvbGRGaWxsKTsKKyAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihvbGRTdHJva2UpOwor
CisgICAgLy8gQ3JlYXRlIGEgZGVzdGluYXRpb24gcmVjdGFuZ2xlIGZvciB0aGUgaW1hZ2UgdGhh
dCBpcyBjZW50ZXJlZCBpbiB0aGUgZHJhd2luZyByZWN0YW5nbGUsIHJvdW5kZWQgbGVmdCwgYW5k
IGRvd24uCisgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBpbWFnZS0+cmVjdCgpOworICAgIGltYWdl
UmVjdC5zZXRZKHJlY3QueSgpICsgKHJlY3QuaGVpZ2h0KCkgLSBpbWFnZS0+aGVpZ2h0KCkgKyAx
KSAvIDIpOworICAgIGltYWdlUmVjdC5zZXRYKHJlY3QueCgpICsgKHJlY3Qud2lkdGgoKSAtIGlt
YWdlLT53aWR0aCgpICsgMSkgLyAyKTsKKworICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwg
aW1hZ2VSZWN0LCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICBjb250ZXh0LT5lbmRUcmFuc3Bh
cmVuY3lMYXllcigpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0
KQoreworICAgIE5vZGUqIG5vZGUgPSBvLT5ub2RlKCk7CisgICAgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUgPyBub2Rl
LT5zaGFkb3dBbmNlc3Rvck5vZGUoKSA6IDApOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwg
KCFtZWRpYUVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykgJiYgIW1lZGlh
RWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmF1ZGlvVGFnKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHN0YXRpYyBJbWFnZSogbWVkaWFQbGF5ID0gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJtZWRpYVBsYXkiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdl
KiBtZWRpYVBhdXNlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVBhdXNlIiku
cmVsZWFzZVJlZigpOworCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChwYWlu
dEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVtZW50LT5wYXVzZWQoKSA/IG1lZGlhUGxheSA6
IG1lZGlhUGF1c2UpOworfQorCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRN
ZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIE5vZGUqIG5vZGUg
PSBvLT5ub2RlKCk7CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUgPyBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUo
KSA6IDApOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwgKCFtZWRpYUVsZW1lbnQtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykgJiYgIW1lZGlhRWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OmF1ZGlvVGFnKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRp
YyBJbWFnZSogc291bmRGdWxsID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVNv
dW5kRnVsbCIpLnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIHNvdW5kTm9uZSA9IElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWVkaWFTb3VuZE5vbmUiKS5yZWxlYXNlUmVmKCk7
CisKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbkludGVybmFsKHBhaW50SW5mby5jb250ZXh0
LCByZWN0LCBtZWRpYUVsZW1lbnQtPm11dGVkKCkgPyBzb3VuZE5vbmU6IHNvdW5kRnVsbCk7Cit9
CisKIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RNZW51TGlzdFN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIFdlYkNvcmU6OkVs
ZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gSGVpZ2h0IGlzIGxvY2tlZCB0byBhdXRvIG9uIGFs
bCBicm93c2Vycy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
LmgKaW5kZXggZmJmOTkwZi4uNzgzODUwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTM5LDYgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CisjaWYgRU5BQkxF
KFZJREVPKQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNo
ZWV0KCk7CisjZW5kaWYKIAogICAgICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1l
J3MgY29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgog
ICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTg1LDYgKzg4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAK
KyAgICAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKICAgICAgICAgLy8g
TWVudUxpc3QgcmVmZXJzIHRvIGFuIHVuc3R5bGVkIG1lbnVsaXN0IChtZWFuaW5nIGEgbWVudWxp
c3Qgd2l0aG91dAogICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yIG9yIGJvcmRlciBzZXQpIGFu
ZCBNZW51TGlzdEJ1dHRvbiByZWZlcnMgdG8gYSBzdHlsZWQKICAgICAgICAgLy8gbWVudWxpc3Qg
KGEgbWVudWxpc3Qgd2l0aCBiYWNrZ3JvdW5kLWNvbG9yIG9yIGJvcmRlciBzZXQpLiBUaGV5IGhh
dmUKQEAgLTEyNCw2ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBpbnQgbWVudUxpc3RJbnRlcm5hbFBhZGRpbmcoUmVuZGVyU3R5bGUqLCBpbnQg
cGFkZGluZ1R5cGUpIGNvbnN0OworICAgICAgICBib29sIHBhaW50TWVkaWFCdXR0b25JbnRlcm5h
bChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtV2luLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1XaW4uY3BwCmluZGV4IGE3MjM4MDYuLmQ5NWNjNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVk
ZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRm9udFV0aWxzQ2hyb21pdW1XaW4uaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMu
aCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgpAQCAtNTUsNiArNTgsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8vIFRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgbWVkaWEg
cGxheWVyIGNvbnRyb2xzIHNob3VsZCBiZSBhIDYwJSBvcGFxdWUgYmxhY2sgcmVjdGFuZ2xlLgor
c3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRNZWRpYUNvbnRyb2xPcGFjaXR5ID0gMC42ZjsKKwog
Ly8gVGhlc2UgdmFsdWVzIGFsbCBtYXRjaCBTYWZhcmkvV2luLgogc3RhdGljIGNvbnN0IGZsb2F0
IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9IDEzOwogc3RhdGljIGNvbnN0IGZsb2F0IGRl
ZmF1bHRDYW5jZWxCdXR0b25TaXplID0gOTsKQEAgLTI2NCw3ICsyNzAsNyBAQCBTdHJpbmcgUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbjo6ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkKICNpZiBFTkFCTEUo
VklERU8pCiBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6ZXh0cmFNZWRpYUNvbnRyb2xz
U3R5bGVTaGVldCgpCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xzVXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cisg
ICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YobWVkaWFDb250cm9sc0Nocm9taXVtVXNlckFnZW50U3R5bGVTaGVldCkpOwogfQog
I2VuZGlmCiAKQEAgLTU3Miw2ICs1NzgsNjAgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtV2lu
OjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRN
ZWRpYUJ1dHRvbkludGVybmFsKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCwgSW1hZ2UqIGltYWdlKQoreworICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoZGVmYXVsdE1lZGlhQ29udHJvbE9wYWNpdHkpOworCisgICAgLy8gRHJhdyBiYWNrZ3Jv
dW5kLgorICAgIENvbG9yIG9sZEZpbGwgPSBjb250ZXh0LT5maWxsQ29sb3IoKTsKKyAgICBDb2xv
ciBvbGRTdHJva2UgPSBjb250ZXh0LT5zdHJva2VDb2xvcigpOworCisgICAgY29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yKDB4MDAsMHgwMCwweDAwKSk7CisgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMHgwMCwweDAwLDB4MDApKTsKKyAgICBjb250ZXh0LT5kcmF3UmVjdChyZWN0
KTsKKworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihvbGRGaWxsKTsKKyAgICBjb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihvbGRTdHJva2UpOworCisgICAgLy8gQ3JlYXRlIGEgZGVzdGluYXRpb24g
cmVjdGFuZ2xlIGZvciB0aGUgaW1hZ2UgdGhhdCBpcyBjZW50ZXJlZCBpbiB0aGUgZHJhd2luZyBy
ZWN0YW5nbGUsIHJvdW5kZWQgbGVmdCwgYW5kIGRvd24uCisgICAgSW50UmVjdCBpbWFnZVJlY3Qg
PSBpbWFnZS0+cmVjdCgpOworICAgIGltYWdlUmVjdC5zZXRZKHJlY3QueSgpICsgKHJlY3QuaGVp
Z2h0KCkgLSBpbWFnZS0+aGVpZ2h0KCkgKyAxKSAvIDIpOworICAgIGltYWdlUmVjdC5zZXRYKHJl
Y3QueCgpICsgKHJlY3Qud2lkdGgoKSAtIGltYWdlLT53aWR0aCgpICsgMSkgLyAyKTsKKworICAg
IGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBDb21wb3NpdGVTb3VyY2VBdG9w
KTsKKyAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50TWVkaWFQbGF5QnV0
dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBOb2RlKiBub2RlID0gby0+bm9kZSgp
OworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxN
ZWRpYUVsZW1lbnQqPihub2RlID8gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAwKTsKKwor
ICAgIGlmICghbWVkaWFFbGVtZW50IHx8ICghbWVkaWFFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6dmlkZW9UYWcpICYmICFtZWRpYUVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjph
dWRpb1RhZykpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG1l
ZGlhUGxheSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWVkaWFQbGF5IikucmVsZWFz
ZVJlZigpOworICAgIHN0YXRpYyBJbWFnZSogbWVkaWFQYXVzZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgibWVkaWFQYXVzZSIpLnJlbGVhc2VSZWYoKTsKKworICAgIHJldHVybiBwYWlu
dE1lZGlhQnV0dG9uSW50ZXJuYWwocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVu
dC0+cGF1c2VkKCkgPyBtZWRpYVBsYXkgOiBtZWRpYVBhdXNlKTsKK30KKworYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCit7CisgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSA/IG5v
ZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpIDogMCk7CisKKyAgICBpZiAoIW1lZGlhRWxlbWVudCB8
fCAoIW1lZGlhRWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSAmJiAhbWVk
aWFFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcpKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgc3RhdGljIEltYWdlKiBzb3VuZEZ1bGwgPSBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoIm1lZGlhU291bmRGdWxsIikucmVsZWFzZVJlZigpOworICAgIHN0YXRp
YyBJbWFnZSogc291bmROb25lID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVNv
dW5kTm9uZSIpLnJlbGVhc2VSZWYoKTsKKworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uSW50
ZXJuYWwocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+bXV0ZWQoKSA/IHNv
dW5kTm9uZTogc291bmRGdWxsKTsKK30KKwogdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjph
ZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gSGVpZ2h0IGlzIGxvY2tlZCB0
byBhdXRvIG9uIGFsbCBicm93c2Vycy4KQEAgLTY4Miw3ICs3NDIsOCBAQCBpbnQgUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbjo6YnV0dG9uSW50ZXJuYWxQYWRkaW5nQm90dG9tKCkgY29uc3QKIH0KIAog
Ly8gc3RhdGljCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnNldERlZmF1bHRGb250U2l6
ZShpbnQgZm9udFNpemUpIHsKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6c2V0RGVmYXVs
dEZvbnRTaXplKGludCBmb250U2l6ZSkKK3sKICAgICBkZWZhdWx0Rm9udFNpemUgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oZm9udFNpemUpOwogCiAgICAgLy8gUmVzZXQgY2FjaGVkIGZvbnRzLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCmluZGV4IGVmMDNjOWIuLjZi
YTY1OTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1X
aW4uaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKQEAg
LTEwNSw2ICsxMDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1l
ZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKKwogICAgICAgICAvLyBNZW51TGlzdCByZWZlcnMgdG8gYW4g
dW5zdHlsZWQgbWVudWxpc3QgKG1lYW5pbmcgYSBtZW51bGlzdCB3aXRob3V0CiAgICAgICAgIC8v
IGJhY2tncm91bmQtY29sb3Igb3IgYm9yZGVyIHNldCkgYW5kIE1lbnVMaXN0QnV0dG9uIHJlZmVy
cyB0byBhIHN0eWxlZAogICAgICAgICAvLyBtZW51bGlzdCAoYSBtZW51bGlzdCB3aXRoIGJhY2tn
cm91bmQtY29sb3Igb3IgYm9yZGVyIHNldCkuIFRoZXkgaGF2ZQpAQCAtMTQ1LDYgKzE0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGhlbWVEYXRhIGdldFRoZW1lRGF0YShSZW5k
ZXJPYmplY3QqKTsKIAogICAgICAgICBib29sIHBhaW50VGV4dEZpZWxkSW50ZXJuYWwoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jiwg
Ym9vbCk7CisgICAgICAgIGJvb2wgcGFpbnRNZWRpYUJ1dHRvbkludGVybmFsKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmLCBJbWFnZSopOwogCiAgICAgICAgIGludCBtZW51TGlzdElu
dGVybmFsUGFkZGluZyhSZW5kZXJTdHlsZSosIGludCBwYWRkaW5nVHlwZSkgY29uc3Q7CiAgICAg
fTsK
</data>
<flag name="review"
          id="15416"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30559</attachid>
            <date>2009-05-21 14:51:29 -0700</date>
            <delta_ts>2009-05-21 17:10:39 -0700</delta_ts>
            <desc>Updated patch with style &amp; copyright fixes.</desc>
            <filename>default_ui2.patch</filename>
            <type>text/plain</type>
            <size>18542</size>
            <attacher name="Albert J. Wong">ajwong</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTVmNTY2OC4uMzMxOGE3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wNS0yMCAgQWxiZXJ0IEouIFdv
bmcgIDxhandvbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGRlZmF1bHQgVUkgZm9yIGNocm9taXVtLiAg
QWRkIGEgc3R5bGUgc2hlZXQgZm9yIENocm9taXVtCisgICAgICAgIG1lZGlhIGNvbnRyb2xzIHdp
dGggZ29vZCBkZWZhdWx0cyBhbmQgaW1wbGVtZW50ZWQgYmFzaWMgZHJhdyBmdW5jdGlvbnMKKyAg
ICAgICAgZm9yIHBsYXkvcGF1c2UgJiBtdXRlIGJ1dHRvbnMuCisKKyAgICAgICAgKiBjc3MvbWVk
aWFDb250cm9sc0Nocm9taXVtLmNzczogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFCdXR0b25JbnRlcm5hbCk6IFBh
aW50CisgICAgICAgIGJ1dHRvbnMgcmVzcGVjdGluZyBjaHJvbWl1bSBtZWRpYSBjb250cm9scyBj
b2xvciBzY2hlbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50TWVkaWFQbGF5QnV0dG9uKTogUGFpbnQgbG9naWMKKyAgICAgICAgc3BlY2lmaWMgdG8g
cGxheS9wYXVzZSBidXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQKKyAgICAgICAgc3BlY2lmaWMgdG8g
bXV0ZSBidXR0b24uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51
eC5oOiBBcHByb3ByaWF0ZSBoZWFkZXIgY2hhbmdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwpOiBQYWlu
dAorICAgICAgICBidXR0b25zIHJlc3BlY3RpbmcgY2hyb21pdW0gbWVkaWEgY29udHJvbHMgY29s
b3Igc2NoZW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFp
bnRNZWRpYVBsYXlCdXR0b24pOiBQYWludCBsb2dpYworICAgICAgICBzcGVjaWZpYyB0byBwbGF5
L3BhdXNlIGJ1dHRvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQgc3BlY2lmaWMKKyAgICAgICAgdG8gbXV0ZSBi
dXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpzZXREZWZh
dWx0Rm9udFNpemUpOiBBcHByb3ByaWF0ZQorICAgICAgICBoZWFkZXIgY2hhbmdlcy4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oOgorCiAyMDA5LTA1LTIwICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNDaHJvbWl1
bS5jc3MgYi9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZWNhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCkBAIC0wLDAgKzEsMTY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8qIENocm9taXVtIGRlZmF1bHQgbWVkaWEgY29u
dHJvbHMgKi8KKworYXVkaW8geworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDMycHg7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJTsKKyAgICB6LWluZGV4OiAwOworfQorCit2aWRlbzotd2Via2l0
LWZ1bGwtcGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgYm90
dG9tOiAtMTZweDsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0
b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLW11dGUtYnV0dG9uOworCisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogYXV0bzsKKyAgICBib3R0b206IDA7CisgICAgcmlnaHQ6IDA7CisgICAg
bGVmdDogYXV0bzsKKworICAgIHdpZHRoOiAzNHB4OworICAgIGhlaWdodDogMzJweDsKKworICAg
IGJhY2tncm91bmQ6IHJnYmEoMTIzLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxheS1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247
CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
MDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IGF1dG87CisKKyAgICB3aWR0aDogMzBweDsK
KyAgICBoZWlnaHQ6IDMycHg7CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDIyMSwgMCwgMC42
KTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdGltZWxpbmUtY29udGFpbmVyOworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiBhdXRvOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAzMHB4OworICAgIHJpZ2h0OiAzNHB4
OworCisgICAgd2lkdGg6IGF1dG87CisgICAgaGVpZ2h0OiAzMnB4OworCisgICAgYmFja2dyb3Vu
ZDogcmdiYSgwLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1jdXJyZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3Vy
cmVudC10aW1lLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY3VycmVu
dC10aW1lLWRpc3BsYXk7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKKyAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGN1cnNvcjog
ZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhlaWdodDogMjFw
eDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDogYXV0bzsKKyAg
ICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0OHB4OworCisg
ICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsKKyAgICBmb250
LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOworICAgIGRpc3BsYXk6IG5vbmU7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAg
IGN1cnNvcjogZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhl
aWdodDogMjFweDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDog
YXV0bzsKKyAgICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0
OHB4OworCisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsK
KyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lbGluZSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBzbGlkZXItaG9yaXpvbnRh
bDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
OXB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogNTBweDsKKyAgICBoZWlnaHQ6IDEzcHg7
CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7Cit9CisKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtc2Vlay1iYWNrLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLXNlZWstZm9yd2FyZC1idXR0b247CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24sIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uOworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXgu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRl
eCBhZjg2Y2I4Li4zYzA3NjgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1MaW51eC5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAjaW5jbHVkZSAiQ2hyb21pdW1C
cmlkZ2UuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC01Miw3ICs1NSwxMCBAQCBz
dGF0aWMgY29uc3QgaW50IHN0eWxlZE1lbnVMaXN0SW50ZXJuYWxQYWRkaW5nWzRdID0geyAxLCA0
LCAxLCA0IH07CiAvLyBUaGUgZGVmYXVsdCB2YXJpYWJsZS13aWR0aCBmb250IHNpemUuICBXZSB1
c2UgdGhpcyBhcyB0aGUgZGVmYXVsdCBmb250CiAvLyBzaXplIGZvciB0aGUgInN5c3RlbSBmb250
IiwgYW5kIGFzIGEgYmFzZSBzaXplICh3aGljaCB3ZSB0aGVuIHNocmluaykgZm9yCiAvLyBmb3Jt
IGNvbnRyb2wgZm9udHMuCi1zdGF0aWMgY29uc3QgZmxvYXQgRGVmYXVsdEZvbnRTaXplID0gMTYu
MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Rm9udFNpemUgPSAxNi4wOworCisvLyBUaGUg
YmFja2dyb3VuZCBmb3IgdGhlIG1lZGlhIHBsYXllciBjb250cm9scyBzaG91bGQgYmUgYSA2MCUg
b3BhcXVlIGJsYWNrIHJlY3RhbmdsZS4KK3N0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0TWVkaWFD
b250cm9sT3BhY2l0eSA9IDAuNmY7CiAKIC8vIFRoZXNlIHZhbHVlcyBhbGwgbWF0Y2ggU2FmYXJp
L1dpbi4KIHN0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUgPSAx
MzsKQEAgLTExMyw2ICsxMTksMTMgQEAgU3RyaW5nIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkKICAgICByZXR1cm4gU3RyaW5nKHRoZW1lV2luUXVpcmtz
VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5bGVT
aGVldCkpOwogfQogCisjaWYgRU5BQkxFKFZJREVPKQorU3RyaW5nIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCit7CisgICAgcmV0dXJuIFN0
cmluZyhtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVk
aWFDb250cm9sc0Nocm9taXVtVXNlckFnZW50U3R5bGVTaGVldCkpOworfQorI2VuZGlmCisKIGJv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoc3R5bGUt
PmFwcGVhcmFuY2UoKSk7CkBAIC0xNTYsNyArMTY5LDcgQEAgZG91YmxlIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6Y2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QKIAogdm9pZCBSZW5kZXJUaGVt
ZUNocm9taXVtTGludXg6OnN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24pIGNvbnN0CiB7Ci0gICAgZmxvYXQgZm9udFNpemUgPSBEZWZhdWx0Rm9u
dFNpemU7CisgICAgZmxvYXQgZm9udFNpemUgPSBkZWZhdWx0Rm9udFNpemU7CiAKICAgICBzd2l0
Y2ggKHByb3BJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRNaW5pQ29udHJvbDoKQEAgLTM5
NSw2ICs0MDgsNjAgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywgY28KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludE1lZGlhQnV0dG9uSW50
ZXJuYWwoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFn
ZSogaW1hZ2UpCit7CisgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihkZWZhdWx0
TWVkaWFDb250cm9sT3BhY2l0eSk7CisKKyAgICAvLyBEcmF3IGJhY2tncm91bmQuCisgICAgQ29s
b3Igb2xkRmlsbCA9IGNvbnRleHQtPmZpbGxDb2xvcigpOworICAgIENvbG9yIG9sZFN0cm9rZSA9
IGNvbnRleHQtPnN0cm9rZUNvbG9yKCk7CisKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3IoMHgwMCwweDAwLDB4MDApKTsKKyAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigw
eDAwLDB4MDAsMHgwMCkpOworICAgIGNvbnRleHQtPmRyYXdSZWN0KHJlY3QpOworCisgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKG9sZEZpbGwpOworICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KG9sZFN0cm9rZSk7CisKKyAgICAvLyBDcmVhdGUgYSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgZm9y
IHRoZSBpbWFnZSB0aGF0IGlzIGNlbnRlcmVkIGluIHRoZSBkcmF3aW5nIHJlY3RhbmdsZSwgcm91
bmRlZCBsZWZ0LCBhbmQgZG93bi4KKyAgICBJbnRSZWN0IGltYWdlUmVjdCA9IGltYWdlLT5yZWN0
KCk7CisgICAgaW1hZ2VSZWN0LnNldFkocmVjdC55KCkgKyAocmVjdC5oZWlnaHQoKSAtIGltYWdl
LT5oZWlnaHQoKSArIDEpIC8gMik7CisgICAgaW1hZ2VSZWN0LnNldFgocmVjdC54KCkgKyAocmVj
dC53aWR0aCgpIC0gaW1hZ2UtPndpZHRoKCkgKyAxKSAvIDIpOworCisgICAgY29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUF0b3ApOworICAgIGNvbnRl
eHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKKyAgICBIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50
Kj4obm9kZSA/IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpIDogMCk7CisKKyAgICBpZiAoIW1l
ZGlhRWxlbWVudCB8fCAoIW1lZGlhRWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVv
VGFnKSAmJiAhbWVkaWFFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIEltYWdlKiBtZWRpYVBsYXkgPSBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1lZGlhUGxheSIpLnJlbGVhc2VSZWYoKTsKKyAg
ICBzdGF0aWMgSW1hZ2UqIG1lZGlhUGF1c2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
Im1lZGlhUGF1c2UiKS5yZWxlYXNlUmVmKCk7CisKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRv
bkludGVybmFsKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYUVsZW1lbnQtPnBhdXNlZCgp
ID8gbWVkaWFQbGF5IDogbWVkaWFQYXVzZSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisg
ICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSA/IG5vZGUtPnNoYWRv
d0FuY2VzdG9yTm9kZSgpIDogMCk7CisKKyAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAoIW1lZGlh
RWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSAmJiAhbWVkaWFFbGVtZW50
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgc3RhdGljIEltYWdlKiBzb3VuZEZ1bGwgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1lZGlhU291bmRGdWxsIikucmVsZWFzZVJlZigpOworICAgIHN0YXRpYyBJbWFnZSog
c291bmROb25lID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVNvdW5kTm9uZSIp
LnJlbGVhc2VSZWYoKTsKKworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwocGFp
bnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+bXV0ZWQoKSA/IHNvdW5kTm9uZTog
c291bmRGdWxsKTsKK30KKwogdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdE1l
bnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwgV2ViQ29yZTo6RWxlbWVudCogZSkgY29uc3QKIHsKICAgICAvLyBIZWlnaHQgaXMgbG9ja2Vk
IHRvIGF1dG8gb24gYWxsIGJyb3dzZXJzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaAppbmRleCBmYmY5OTBmLi43ODM4NTA5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaApAQCAtMzksNiArMzksOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5
bGVTaGVldCgpOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQo
KTsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhTWVkaWFD
b250cm9sc1N0eWxlU2hlZXQoKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEEgbWV0aG9kIGFza2lu
ZyBpZiB0aGUgdGhlbWUncyBjb250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3
aGVuIGhvdmVyZWQuCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJl
bmRlclN0eWxlKikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtODUsNiArODgsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJP
YmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
KwogICAgICAgICAvLyBNZW51TGlzdCByZWZlcnMgdG8gYW4gdW5zdHlsZWQgbWVudWxpc3QgKG1l
YW5pbmcgYSBtZW51bGlzdCB3aXRob3V0CiAgICAgICAgIC8vIGJhY2tncm91bmQtY29sb3Igb3Ig
Ym9yZGVyIHNldCkgYW5kIE1lbnVMaXN0QnV0dG9uIHJlZmVycyB0byBhIHN0eWxlZAogICAgICAg
ICAvLyBtZW51bGlzdCAoYSBtZW51bGlzdCB3aXRoIGJhY2tncm91bmQtY29sb3Igb3IgYm9yZGVy
IHNldCkuIFRoZXkgaGF2ZQpAQCAtMTI0LDYgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGludCBtZW51TGlzdEludGVybmFsUGFkZGluZyhSZW5k
ZXJTdHlsZSosIGludCBwYWRkaW5nVHlwZSkgY29uc3Q7CisgICAgICAgIGJvb2wgcGFpbnRNZWRp
YUJ1dHRvbkludGVybmFsKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBJbWFnZSop
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggYTcyMzgwNi4uZDk1Y2M0MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTM0LDYgKzM0
LDkgQEAKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJGb250VXRpbHNDaHJv
bWl1bVdpbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnRyb2xFbGVtZW50cy5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRl
clNsaWRlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBAIC01NSw2ICs1OCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAorLy8gVGhlIGJhY2tncm91bmQg
Zm9yIHRoZSBtZWRpYSBwbGF5ZXIgY29udHJvbHMgc2hvdWxkIGJlIGEgNjAlIG9wYXF1ZSBibGFj
ayByZWN0YW5nbGUuCitzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdE1lZGlhQ29udHJvbE9wYWNp
dHkgPSAwLjZmOworCiAvLyBUaGVzZSB2YWx1ZXMgYWxsIG1hdGNoIFNhZmFyaS9XaW4uCiBzdGF0
aWMgY29uc3QgZmxvYXQgZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplID0gMTM7CiBzdGF0aWMg
Y29uc3QgZmxvYXQgZGVmYXVsdENhbmNlbEJ1dHRvblNpemUgPSA5OwpAQCAtMjY0LDcgKzI3MCw3
IEBAIFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpleHRyYVF1aXJrc1N0eWxlU2hlZXQo
KQogI2lmIEVOQUJMRShWSURFTykKIFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpleHRy
YU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkKIHsKLSAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29u
dHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKKyAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNDaHJvbWl1bVVzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRTdHls
ZVNoZWV0KSk7CiB9CiAjZW5kaWYKIApAQCAtNTcyLDYgKzU3OCw2MCBAQCBib29sIFJlbmRlclRo
ZW1lQ2hyb21pdW1XaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtV2luOjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1hZ2UpCit7CisgICAgY29udGV4dC0+YmVn
aW5UcmFuc3BhcmVuY3lMYXllcihkZWZhdWx0TWVkaWFDb250cm9sT3BhY2l0eSk7CisKKyAgICAv
LyBEcmF3IGJhY2tncm91bmQuCisgICAgQ29sb3Igb2xkRmlsbCA9IGNvbnRleHQtPmZpbGxDb2xv
cigpOworICAgIENvbG9yIG9sZFN0cm9rZSA9IGNvbnRleHQtPnN0cm9rZUNvbG9yKCk7CisKKyAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHgwMCwweDAwLDB4MDApKTsKKyAgICBjb250
ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigweDAwLDB4MDAsMHgwMCkpOworICAgIGNvbnRleHQt
PmRyYXdSZWN0KHJlY3QpOworCisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG9sZEZpbGwpOwor
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG9sZFN0cm9rZSk7CisKKyAgICAvLyBDcmVhdGUg
YSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgZm9yIHRoZSBpbWFnZSB0aGF0IGlzIGNlbnRlcmVkIGlu
IHRoZSBkcmF3aW5nIHJlY3RhbmdsZSwgcm91bmRlZCBsZWZ0LCBhbmQgZG93bi4KKyAgICBJbnRS
ZWN0IGltYWdlUmVjdCA9IGltYWdlLT5yZWN0KCk7CisgICAgaW1hZ2VSZWN0LnNldFkocmVjdC55
KCkgKyAocmVjdC5oZWlnaHQoKSAtIGltYWdlLT5oZWlnaHQoKSArIDEpIC8gMik7CisgICAgaW1h
Z2VSZWN0LnNldFgocmVjdC54KCkgKyAocmVjdC53aWR0aCgpIC0gaW1hZ2UtPndpZHRoKCkgKyAx
KSAvIDIpOworCisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIENvbXBv
c2l0ZVNvdXJjZUF0b3ApOworICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFp
bnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIE5vZGUqIG5v
ZGUgPSBvLT5ub2RlKCk7CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUgPyBub2RlLT5zaGFkb3dBbmNlc3Rvck5v
ZGUoKSA6IDApOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwgKCFtZWRpYUVsZW1lbnQtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykgJiYgIW1lZGlhRWxlbWVudC0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmF1ZGlvVGFnKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0
YXRpYyBJbWFnZSogbWVkaWFQbGF5ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRp
YVBsYXkiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBtZWRpYVBhdXNlID0gSW1h
Z2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVBhdXNlIikucmVsZWFzZVJlZigpOworCisg
ICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChwYWludEluZm8uY29udGV4dCwgcmVj
dCwgbWVkaWFFbGVtZW50LT5wYXVzZWQoKSA/IG1lZGlhUGxheSA6IG1lZGlhUGF1c2UpOworfQor
Citib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBOb2RlKiBub2RlID0gby0+bm9kZSgpOworICAgIEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1l
bnQqPihub2RlID8gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAwKTsKKworICAgIGlmICgh
bWVkaWFFbGVtZW50IHx8ICghbWVkaWFFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlk
ZW9UYWcpICYmICFtZWRpYUVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphdWRpb1RhZykp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIHNvdW5kRnVsbCA9
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWVkaWFTb3VuZEZ1bGwiKS5yZWxlYXNlUmVm
KCk7CisgICAgc3RhdGljIEltYWdlKiBzb3VuZE5vbmUgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1lZGlhU291bmROb25lIikucmVsZWFzZVJlZigpOworCisgICAgcmV0dXJuIHBhaW50
TWVkaWFCdXR0b25JbnRlcm5hbChwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVtZW50
LT5tdXRlZCgpID8gc291bmROb25lOiBzb3VuZEZ1bGwpOworfQorCiB2b2lkIFJlbmRlclRoZW1l
Q2hyb21pdW1XaW46OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICAvLyBIZWln
aHQgaXMgbG9ja2VkIHRvIGF1dG8gb24gYWxsIGJyb3dzZXJzLgpAQCAtNjgyLDcgKzc0Miw4IEBA
IGludCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpidXR0b25JbnRlcm5hbFBhZGRpbmdCb3R0b20o
KSBjb25zdAogfQogCiAvLyBzdGF0aWMKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6c2V0
RGVmYXVsdEZvbnRTaXplKGludCBmb250U2l6ZSkgewordm9pZCBSZW5kZXJUaGVtZUNocm9taXVt
V2luOjpzZXREZWZhdWx0Rm9udFNpemUoaW50IGZvbnRTaXplKQorewogICAgIGRlZmF1bHRGb250
U2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihmb250U2l6ZSk7CiAKICAgICAvLyBSZXNldCBjYWNo
ZWQgZm9udHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtV2luLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKaW5k
ZXggZWYwM2M5Yi4uNmJhNjU5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bVdpbi5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1XaW4uaApAQCAtMTA1LDYgKzEwNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCisgICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVh
bCBib29sIHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgICAgIC8vIE1lbnVMaXN0
IHJlZmVycyB0byBhbiB1bnN0eWxlZCBtZW51bGlzdCAobWVhbmluZyBhIG1lbnVsaXN0IHdpdGhv
dXQKICAgICAgICAgLy8gYmFja2dyb3VuZC1jb2xvciBvciBib3JkZXIgc2V0KSBhbmQgTWVudUxp
c3RCdXR0b24gcmVmZXJzIHRvIGEgc3R5bGVkCiAgICAgICAgIC8vIG1lbnVsaXN0IChhIG1lbnVs
aXN0IHdpdGggYmFja2dyb3VuZC1jb2xvciBvciBib3JkZXIgc2V0KS4gVGhleSBoYXZlCkBAIC0x
NDUsNiArMTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUaGVtZURhdGEgZ2V0
VGhlbWVEYXRhKFJlbmRlck9iamVjdCopOwogCiAgICAgICAgIGJvb2wgcGFpbnRUZXh0RmllbGRJ
bnRlcm5hbChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmLCBib29sKTsKKyAgICAgICAgYm9vbCBwYWludE1lZGlhQnV0dG9uSW50ZXJu
YWwoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIEltYWdlKik7CiAKICAgICAgICAg
aW50IG1lbnVMaXN0SW50ZXJuYWxQYWRkaW5nKFJlbmRlclN0eWxlKiwgaW50IHBhZGRpbmdUeXBl
KSBjb25zdDsKICAgICB9Owo=
</data>
<flag name="review"
          id="15446"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30569</attachid>
            <date>2009-05-21 17:10:39 -0700</date>
            <delta_ts>2009-05-21 17:28:05 -0700</delta_ts>
            <desc>Added ENABLE(VIDEO) ifdefs, and crated a toMediaElement()</desc>
            <filename>default_ui3.path</filename>
            <type>text/plain</type>
            <size>19406</size>
            <attacher name="Albert J. Wong">ajwong</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTVmNTY2OC4uMzMxOGE3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wNS0yMCAgQWxiZXJ0IEouIFdv
bmcgIDxhandvbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGRlZmF1bHQgVUkgZm9yIGNocm9taXVtLiAg
QWRkIGEgc3R5bGUgc2hlZXQgZm9yIENocm9taXVtCisgICAgICAgIG1lZGlhIGNvbnRyb2xzIHdp
dGggZ29vZCBkZWZhdWx0cyBhbmQgaW1wbGVtZW50ZWQgYmFzaWMgZHJhdyBmdW5jdGlvbnMKKyAg
ICAgICAgZm9yIHBsYXkvcGF1c2UgJiBtdXRlIGJ1dHRvbnMuCisKKyAgICAgICAgKiBjc3MvbWVk
aWFDb250cm9sc0Nocm9taXVtLmNzczogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFCdXR0b25JbnRlcm5hbCk6IFBh
aW50CisgICAgICAgIGJ1dHRvbnMgcmVzcGVjdGluZyBjaHJvbWl1bSBtZWRpYSBjb250cm9scyBj
b2xvciBzY2hlbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50TWVkaWFQbGF5QnV0dG9uKTogUGFpbnQgbG9naWMKKyAgICAgICAgc3BlY2lmaWMgdG8g
cGxheS9wYXVzZSBidXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQKKyAgICAgICAgc3BlY2lmaWMgdG8g
bXV0ZSBidXR0b24uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51
eC5oOiBBcHByb3ByaWF0ZSBoZWFkZXIgY2hhbmdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwpOiBQYWlu
dAorICAgICAgICBidXR0b25zIHJlc3BlY3RpbmcgY2hyb21pdW0gbWVkaWEgY29udHJvbHMgY29s
b3Igc2NoZW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFp
bnRNZWRpYVBsYXlCdXR0b24pOiBQYWludCBsb2dpYworICAgICAgICBzcGVjaWZpYyB0byBwbGF5
L3BhdXNlIGJ1dHRvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQgc3BlY2lmaWMKKyAgICAgICAgdG8gbXV0ZSBi
dXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpzZXREZWZh
dWx0Rm9udFNpemUpOiBBcHByb3ByaWF0ZQorICAgICAgICBoZWFkZXIgY2hhbmdlcy4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oOgorCiAyMDA5LTA1LTIwICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNDaHJvbWl1
bS5jc3MgYi9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZWNhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCkBAIC0wLDAgKzEsMTY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8qIENocm9taXVtIGRlZmF1bHQgbWVkaWEgY29u
dHJvbHMgKi8KKworYXVkaW8geworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDMycHg7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJTsKKyAgICB6LWluZGV4OiAwOworfQorCit2aWRlbzotd2Via2l0
LWZ1bGwtcGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgYm90
dG9tOiAtMTZweDsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0
b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLW11dGUtYnV0dG9uOworCisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogYXV0bzsKKyAgICBib3R0b206IDA7CisgICAgcmlnaHQ6IDA7CisgICAg
bGVmdDogYXV0bzsKKworICAgIHdpZHRoOiAzNHB4OworICAgIGhlaWdodDogMzJweDsKKworICAg
IGJhY2tncm91bmQ6IHJnYmEoMTIzLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxheS1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247
CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
MDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IGF1dG87CisKKyAgICB3aWR0aDogMzBweDsK
KyAgICBoZWlnaHQ6IDMycHg7CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDIyMSwgMCwgMC42
KTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdGltZWxpbmUtY29udGFpbmVyOworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiBhdXRvOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAzMHB4OworICAgIHJpZ2h0OiAzNHB4
OworCisgICAgd2lkdGg6IGF1dG87CisgICAgaGVpZ2h0OiAzMnB4OworCisgICAgYmFja2dyb3Vu
ZDogcmdiYSgwLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1jdXJyZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3Vy
cmVudC10aW1lLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY3VycmVu
dC10aW1lLWRpc3BsYXk7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKKyAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGN1cnNvcjog
ZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhlaWdodDogMjFw
eDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDogYXV0bzsKKyAg
ICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0OHB4OworCisg
ICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsKKyAgICBmb250
LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOworICAgIGRpc3BsYXk6IG5vbmU7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAg
IGN1cnNvcjogZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhl
aWdodDogMjFweDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDog
YXV0bzsKKyAgICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0
OHB4OworCisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsK
KyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lbGluZSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBzbGlkZXItaG9yaXpvbnRh
bDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
OXB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogNTBweDsKKyAgICBoZWlnaHQ6IDEzcHg7
CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7Cit9CisKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtc2Vlay1iYWNrLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLXNlZWstZm9yd2FyZC1idXR0b247CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24sIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uOworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXgu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRl
eCBhZjg2Y2I4Li5iNDRlNjY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1MaW51eC5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAjaW5jbHVkZSAiQ2hyb21pdW1C
cmlkZ2UuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC01Miw3ICs1NSwxMSBAQCBz
dGF0aWMgY29uc3QgaW50IHN0eWxlZE1lbnVMaXN0SW50ZXJuYWxQYWRkaW5nWzRdID0geyAxLCA0
LCAxLCA0IH07CiAvLyBUaGUgZGVmYXVsdCB2YXJpYWJsZS13aWR0aCBmb250IHNpemUuICBXZSB1
c2UgdGhpcyBhcyB0aGUgZGVmYXVsdCBmb250CiAvLyBzaXplIGZvciB0aGUgInN5c3RlbSBmb250
IiwgYW5kIGFzIGEgYmFzZSBzaXplICh3aGljaCB3ZSB0aGVuIHNocmluaykgZm9yCiAvLyBmb3Jt
IGNvbnRyb2wgZm9udHMuCi1zdGF0aWMgY29uc3QgZmxvYXQgRGVmYXVsdEZvbnRTaXplID0gMTYu
MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Rm9udFNpemUgPSAxNi4wOworCisvLyBUaGUg
YmFja2dyb3VuZCBmb3IgdGhlIG1lZGlhIHBsYXllciBjb250cm9scyBzaG91bGQgYmUgYSA2MCUg
b3BhcXVlIGJsYWNrIHJlY3RhbmdsZS4gIFRoaXMKKy8vIG1hdGNoZXMgdGhlIFVJIG1vY2t1cHMg
Zm9yIHRoZSBkZWZhdWx0IFVJIHRoZW1lLgorc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRNZWRp
YUNvbnRyb2xPcGFjaXR5ID0gMC42ZjsKIAogLy8gVGhlc2UgdmFsdWVzIGFsbCBtYXRjaCBTYWZh
cmkvV2luLgogc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9
IDEzOwpAQCAtOTIsNiArOTksMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRHVUlGb250
KCkKICAgICByZXR1cm4gIkFyaWFsIjsKIH0KIAorI2lmIEVOQUJMRShWSURFTykKKy8vIEF0dGVt
cHQgdG8gcmV0cmlldmUgYSBIVE1MTWVkaWFFbGVtZW50IGZyb20gYSBOb2RlLiAgUmV0dXJucyBO
VUxMIGlmIG9uZSBjYW5ub3QgYmUgZm91bmQuCitzdGF0aWMgSFRNTE1lZGlhRWxlbWVudCogdG9N
ZWRpYUVsZW1lbnQoTm9kZSogbm9kZSkgeworICAgIE5vZGUqIG1lZGlhTm9kZSA9IG5vZGUgPyBu
b2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKSA6IDA7CisgICAgaWYgKCFtZWRpYU5vZGUgfHwgKCFt
ZWRpYU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZykgJiYgIW1lZGlhTm9kZS0+
aGFzVGFnTmFtZShIVE1MTmFtZXM6OmF1ZGlvVGFnKSkpCisgICAgICAgIHJldHVybiBOVUxMOwor
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtZWRpYU5vZGUpOwor
fQorI2VuZGlmCisKIFJlbmRlclRoZW1lKiB0aGVtZSgpCiB7CiAgICAgc3RhdGljIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eCB0aGVtZTsKQEAgLTExMyw2ICsxMzEsMTMgQEAgU3RyaW5nIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkKICAgICByZXR1cm4g
U3RyaW5nKHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHRoZW1lV2lu
UXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpOwogfQogCisjaWYgRU5BQkxFKFZJREVPKQorU3Ry
aW5nIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVl
dCgpCit7CisgICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc0Nocm9taXVtVXNlckFnZW50U3R5bGVTaGVl
dCkpOworfQorI2VuZGlmCisKIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzdXBwb3J0
c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHN1cHBvcnRzRm9jdXMoc3R5bGUtPmFwcGVhcmFuY2UoKSk7CkBAIC0xNTYsNyArMTgxLDcgQEAg
ZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y2FyZXRCbGlua0ludGVydmFsKCkgY29u
c3QKIAogdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnN5c3RlbUZvbnQoaW50IHByb3BJ
ZCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CiB7Ci0gICAgZmxvYXQg
Zm9udFNpemUgPSBEZWZhdWx0Rm9udFNpemU7CisgICAgZmxvYXQgZm9udFNpemUgPSBkZWZhdWx0
Rm9udFNpemU7CiAKICAgICBzd2l0Y2ggKHByb3BJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJr
aXRNaW5pQ29udHJvbDoKQEAgLTM5NSw2ICs0MjAsNjQgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywg
Y28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1hZ2UpCit7CisgICAgY29udGV4dC0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcihkZWZhdWx0TWVkaWFDb250cm9sT3BhY2l0eSk7CisKKyAgICAvLyBEcmF3
IGJhY2tncm91bmQuCisgICAgQ29sb3Igb2xkRmlsbCA9IGNvbnRleHQtPmZpbGxDb2xvcigpOwor
ICAgIENvbG9yIG9sZFN0cm9rZSA9IGNvbnRleHQtPnN0cm9rZUNvbG9yKCk7CisKKyAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHgwMCwweDAwLDB4MDApKTsKKyAgICBjb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcigweDAwLDB4MDAsMHgwMCkpOworICAgIGNvbnRleHQtPmRyYXdS
ZWN0KHJlY3QpOworCisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG9sZEZpbGwpOworICAgIGNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKG9sZFN0cm9rZSk7CisKKyAgICAvLyBDcmVhdGUgYSBkZXN0
aW5hdGlvbiByZWN0YW5nbGUgZm9yIHRoZSBpbWFnZSB0aGF0IGlzIGNlbnRlcmVkIGluIHRoZSBk
cmF3aW5nIHJlY3RhbmdsZSwgcm91bmRlZCBsZWZ0LCBhbmQgZG93bi4KKyAgICBJbnRSZWN0IGlt
YWdlUmVjdCA9IGltYWdlLT5yZWN0KCk7CisgICAgaW1hZ2VSZWN0LnNldFkocmVjdC55KCkgKyAo
cmVjdC5oZWlnaHQoKSAtIGltYWdlLT5oZWlnaHQoKSArIDEpIC8gMik7CisgICAgaW1hZ2VSZWN0
LnNldFgocmVjdC54KCkgKyAocmVjdC53aWR0aCgpIC0gaW1hZ2UtPndpZHRoKCkgKyAxKSAvIDIp
OworCisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIENvbXBvc2l0ZVNv
dXJjZUF0b3ApOworICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludE1l
ZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKFZJREVP
KQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvTWVkaWFFbGVtZW50KG8t
Pm5vZGUoKSk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHN0YXRpYyBJbWFnZSogbWVkaWFQbGF5ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJtZWRpYVBsYXkiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBtZWRpYVBh
dXNlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVBhdXNlIikucmVsZWFzZVJl
ZigpOworCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChwYWludEluZm8uY29u
dGV4dCwgcmVjdCwgbWVkaWFFbGVtZW50LT5wYXVzZWQoKSA/IG1lZGlhUGxheSA6IG1lZGlhUGF1
c2UpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cmVjdCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50ID0gdG9NZWRpYUVsZW1lbnQoby0+bm9kZSgpKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIEltYWdlKiBzb3VuZEZ1bGwg
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1lZGlhU291bmRGdWxsIikucmVsZWFzZVJl
ZigpOworICAgIHN0YXRpYyBJbWFnZSogc291bmROb25lID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJtZWRpYVNvdW5kTm9uZSIpLnJlbGVhc2VSZWYoKTsKKworICAgIHJldHVybiBwYWlu
dE1lZGlhQnV0dG9uSW50ZXJuYWwocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVu
dC0+bXV0ZWQoKSA/IHNvdW5kTm9uZTogc291bmRGdWxsKTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RN
ZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsIFdlYkNvcmU6OkVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gSGVpZ2h0IGlzIGxvY2tl
ZCB0byBhdXRvIG9uIGFsbCBicm93c2Vycy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggZmJmOTkwZi4uNzgzODUwOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTM5LDYgKzM5LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0
eWxlU2hlZXQoKTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFRdWlya3NTdHlsZVNoZWV0
KCk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlh
Q29udHJvbHNTdHlsZVNoZWV0KCk7CisjZW5kaWYKIAogICAgICAgICAvLyBBIG1ldGhvZCBhc2tp
bmcgaWYgdGhlIHRoZW1lJ3MgY29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcg
d2hlbiBob3ZlcmVkLgogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBS
ZW5kZXJTdHlsZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTg1LDYgKzg4LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CisKICAgICAgICAgLy8gTWVudUxpc3QgcmVmZXJzIHRvIGFuIHVuc3R5bGVkIG1lbnVsaXN0ICht
ZWFuaW5nIGEgbWVudWxpc3Qgd2l0aG91dAogICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yIG9y
IGJvcmRlciBzZXQpIGFuZCBNZW51TGlzdEJ1dHRvbiByZWZlcnMgdG8gYSBzdHlsZWQKICAgICAg
ICAgLy8gbWVudWxpc3QgKGEgbWVudWxpc3Qgd2l0aCBiYWNrZ3JvdW5kLWNvbG9yIG9yIGJvcmRl
ciBzZXQpLiBUaGV5IGhhdmUKQEAgLTEyNCw2ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBpbnQgbWVudUxpc3RJbnRlcm5hbFBhZGRpbmcoUmVu
ZGVyU3R5bGUqLCBpbnQgcGFkZGluZ1R5cGUpIGNvbnN0OworICAgICAgICBib29sIHBhaW50TWVk
aWFCdXR0b25JbnRlcm5hbChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2Uq
KTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCmluZGV4IGE3MjM4MDYuLjUwZTA4NDAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCkBAIC0zNCw2ICsz
NCw5IEBACiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRm9udFV0aWxzQ2hy
b21pdW1XaW4uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFD
b250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJTbGlkZXIuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgpAQCAtNTUsNiArNTgsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCisvLyBUaGUgYmFja2dyb3Vu
ZCBmb3IgdGhlIG1lZGlhIHBsYXllciBjb250cm9scyBzaG91bGQgYmUgYSA2MCUgb3BhcXVlIGJs
YWNrIHJlY3RhbmdsZS4gIFRoaXMKKy8vIG1hdGNoZXMgdGhlIFVJIG1vY2t1cHMgZm9yIHRoZSBk
ZWZhdWx0IFVJIHRoZW1lLgorc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRNZWRpYUNvbnRyb2xP
cGFjaXR5ID0gMC42ZjsKKwogLy8gVGhlc2UgdmFsdWVzIGFsbCBtYXRjaCBTYWZhcmkvV2luLgog
c3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9IDEzOwogc3Rh
dGljIGNvbnN0IGZsb2F0IGRlZmF1bHRDYW5jZWxCdXR0b25TaXplID0gOTsKQEAgLTI0NCw2ICsy
NTEsMTcgQEAgc3RhdGljIGRvdWJsZSBxdWVyeVN5c3RlbUJsaW5rSW50ZXJ2YWwoZG91YmxlIGRl
ZmF1bHRJbnRlcnZhbCkKICAgICByZXR1cm4gYmxpbmtUaW1lIC8gMTAwMC4wOwogfQogCisjaWYg
RU5BQkxFKFZJREVPKQorLy8gQXR0ZW1wdCB0byByZXRyaWV2ZSBhIEhUTUxNZWRpYUVsZW1lbnQg
ZnJvbSBhIE5vZGUuICBSZXR1cm5zIE5VTEwgaWYgb25lIGNhbm5vdCBiZSBmb3VuZC4KK3N0YXRp
YyBIVE1MTWVkaWFFbGVtZW50KiB0b01lZGlhRWxlbWVudChOb2RlKiBub2RlKSB7CisgICAgTm9k
ZSogbWVkaWFOb2RlID0gbm9kZSA/IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpIDogMDsKKyAg
ICBpZiAoIW1lZGlhTm9kZSB8fCAoIW1lZGlhTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZp
ZGVvVGFnKSAmJiAhbWVkaWFOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcpKSkK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1lZGlh
RWxlbWVudCo+KG1lZGlhTm9kZSk7Cit9CisjZW5kaWYKKwogLy8gSW1wbGVtZW50IFdlYkNvcmU6
OnRoZW1lKCkgZm9yIGdldHRpbmcgdGhlIGdsb2JhbCBSZW5kZXJUaGVtZS4KIFJlbmRlclRoZW1l
KiB0aGVtZSgpCiB7CkBAIC0yNjQsNyArMjgyLDcgQEAgU3RyaW5nIFJlbmRlclRoZW1lQ2hyb21p
dW1XaW46OmV4dHJhUXVpcmtzU3R5bGVTaGVldCgpCiAjaWYgRU5BQkxFKFZJREVPKQogU3RyaW5n
IFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQog
ewotICAgIHJldHVybiBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNp
emVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkpOworICAgIHJldHVybiBTdHJp
bmcobWVkaWFDb250cm9sc0Nocm9taXVtVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlh
Q29udHJvbHNDaHJvbWl1bVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKIH0KICNlbmRpZgogCkBAIC01
NzIsNiArNTkwLDY0IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50TWVkaWFCdXR0b25JbnRl
cm5hbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdl
KiBpbWFnZSkKK3sKKyAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGRlZmF1bHRN
ZWRpYUNvbnRyb2xPcGFjaXR5KTsKKworICAgIC8vIERyYXcgYmFja2dyb3VuZC4KKyAgICBDb2xv
ciBvbGRGaWxsID0gY29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgQ29sb3Igb2xkU3Ryb2tlID0g
Y29udGV4dC0+c3Ryb2tlQ29sb3IoKTsKKworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xv
cigweDAwLDB4MDAsMHgwMCkpOworICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDB4
MDAsMHgwMCwweDAwKSk7CisgICAgY29udGV4dC0+ZHJhd1JlY3QocmVjdCk7CisKKyAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3Iob2xkRmlsbCk7CisgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
b2xkU3Ryb2tlKTsKKworICAgIC8vIENyZWF0ZSBhIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBmb3Ig
dGhlIGltYWdlIHRoYXQgaXMgY2VudGVyZWQgaW4gdGhlIGRyYXdpbmcgcmVjdGFuZ2xlLCByb3Vu
ZGVkIGxlZnQsIGFuZCBkb3duLgorICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gaW1hZ2UtPnJlY3Qo
KTsKKyAgICBpbWFnZVJlY3Quc2V0WShyZWN0LnkoKSArIChyZWN0LmhlaWdodCgpIC0gaW1hZ2Ut
PmhlaWdodCgpICsgMSkgLyAyKTsKKyAgICBpbWFnZVJlY3Quc2V0WChyZWN0LngoKSArIChyZWN0
LndpZHRoKCkgLSBpbWFnZS0+d2lkdGgoKSArIDEpIC8gMik7CisKKyAgICBjb250ZXh0LT5kcmF3
SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgQ29tcG9zaXRlU291cmNlQXRvcCk7CisgICAgY29udGV4
dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCA9IHRvTWVkaWFFbGVtZW50KG8tPm5vZGUoKSk7CisgICAgaWYgKCFtZWRp
YUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBJbWFnZSogbWVk
aWFQbGF5ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVBsYXkiKS5yZWxlYXNl
UmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBtZWRpYVBhdXNlID0gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtZWRpYVBhdXNlIikucmVsZWFzZVJlZigpOworCisgICAgcmV0dXJuIHBhaW50
TWVkaWFCdXR0b25JbnRlcm5hbChwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVtZW50
LT5wYXVzZWQoKSA/IG1lZGlhUGxheSA6IG1lZGlhUGF1c2UpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1l
ZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKFZJREVP
KQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvTWVkaWFFbGVtZW50KG8t
Pm5vZGUoKSk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHN0YXRpYyBJbWFnZSogc291bmRGdWxsID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJtZWRpYVNvdW5kRnVsbCIpLnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIHNv
dW5kTm9uZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWVkaWFTb3VuZE5vbmUiKS5y
ZWxlYXNlUmVmKCk7CisKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbkludGVybmFsKHBhaW50
SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYUVsZW1lbnQtPm11dGVkKCkgPyBzb3VuZE5vbmU6IHNv
dW5kRnVsbCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB2b2lkIFJl
bmRlclRoZW1lQ2hyb21pdW1XaW46OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAg
ICAvLyBIZWlnaHQgaXMgbG9ja2VkIHRvIGF1dG8gb24gYWxsIGJyb3dzZXJzLgpAQCAtNjgyLDcg
Kzc1OCw4IEBAIGludCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpidXR0b25JbnRlcm5hbFBhZGRp
bmdCb3R0b20oKSBjb25zdAogfQogCiAvLyBzdGF0aWMKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbjo6c2V0RGVmYXVsdEZvbnRTaXplKGludCBmb250U2l6ZSkgewordm9pZCBSZW5kZXJUaGVt
ZUNocm9taXVtV2luOjpzZXREZWZhdWx0Rm9udFNpemUoaW50IGZvbnRTaXplKQorewogICAgIGRl
ZmF1bHRGb250U2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihmb250U2l6ZSk7CiAKICAgICAvLyBS
ZXNldCBjYWNoZWQgZm9udHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtV2luLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
V2luLmgKaW5kZXggZWYwM2M5Yi4uNmJhNjU5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1XaW4uaApAQCAtMTA1LDYgKzEwNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAg
ICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgICAgIC8v
IE1lbnVMaXN0IHJlZmVycyB0byBhbiB1bnN0eWxlZCBtZW51bGlzdCAobWVhbmluZyBhIG1lbnVs
aXN0IHdpdGhvdXQKICAgICAgICAgLy8gYmFja2dyb3VuZC1jb2xvciBvciBib3JkZXIgc2V0KSBh
bmQgTWVudUxpc3RCdXR0b24gcmVmZXJzIHRvIGEgc3R5bGVkCiAgICAgICAgIC8vIG1lbnVsaXN0
IChhIG1lbnVsaXN0IHdpdGggYmFja2dyb3VuZC1jb2xvciBvciBib3JkZXIgc2V0KS4gVGhleSBo
YXZlCkBAIC0xNDUsNiArMTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUaGVt
ZURhdGEgZ2V0VGhlbWVEYXRhKFJlbmRlck9iamVjdCopOwogCiAgICAgICAgIGJvb2wgcGFpbnRU
ZXh0RmllbGRJbnRlcm5hbChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmLCBib29sKTsKKyAgICAgICAgYm9vbCBwYWludE1lZGlhQnV0
dG9uSW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIEltYWdlKik7CiAK
ICAgICAgICAgaW50IG1lbnVMaXN0SW50ZXJuYWxQYWRkaW5nKFJlbmRlclN0eWxlKiwgaW50IHBh
ZGRpbmdUeXBlKSBjb25zdDsKICAgICB9Owo=
</data>
<flag name="review"
          id="15453"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30570</attachid>
            <date>2009-05-21 17:28:05 -0700</date>
            <delta_ts>2009-05-21 18:07:59 -0700</delta_ts>
            <desc>Couple more style fixes.</desc>
            <filename>default_ui4.patch</filename>
            <type>text/plain</type>
            <size>19482</size>
            <attacher name="Albert J. Wong">ajwong</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTVmNTY2OC4uMzMxOGE3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wNS0yMCAgQWxiZXJ0IEouIFdv
bmcgIDxhandvbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGRlZmF1bHQgVUkgZm9yIGNocm9taXVtLiAg
QWRkIGEgc3R5bGUgc2hlZXQgZm9yIENocm9taXVtCisgICAgICAgIG1lZGlhIGNvbnRyb2xzIHdp
dGggZ29vZCBkZWZhdWx0cyBhbmQgaW1wbGVtZW50ZWQgYmFzaWMgZHJhdyBmdW5jdGlvbnMKKyAg
ICAgICAgZm9yIHBsYXkvcGF1c2UgJiBtdXRlIGJ1dHRvbnMuCisKKyAgICAgICAgKiBjc3MvbWVk
aWFDb250cm9sc0Nocm9taXVtLmNzczogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFCdXR0b25JbnRlcm5hbCk6IFBh
aW50CisgICAgICAgIGJ1dHRvbnMgcmVzcGVjdGluZyBjaHJvbWl1bSBtZWRpYSBjb250cm9scyBj
b2xvciBzY2hlbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50TWVkaWFQbGF5QnV0dG9uKTogUGFpbnQgbG9naWMKKyAgICAgICAgc3BlY2lmaWMgdG8g
cGxheS9wYXVzZSBidXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQKKyAgICAgICAgc3BlY2lmaWMgdG8g
bXV0ZSBidXR0b24uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51
eC5oOiBBcHByb3ByaWF0ZSBoZWFkZXIgY2hhbmdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwpOiBQYWlu
dAorICAgICAgICBidXR0b25zIHJlc3BlY3RpbmcgY2hyb21pdW0gbWVkaWEgY29udHJvbHMgY29s
b3Igc2NoZW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFp
bnRNZWRpYVBsYXlCdXR0b24pOiBQYWludCBsb2dpYworICAgICAgICBzcGVjaWZpYyB0byBwbGF5
L3BhdXNlIGJ1dHRvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQgc3BlY2lmaWMKKyAgICAgICAgdG8gbXV0ZSBi
dXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpzZXREZWZh
dWx0Rm9udFNpemUpOiBBcHByb3ByaWF0ZQorICAgICAgICBoZWFkZXIgY2hhbmdlcy4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oOgorCiAyMDA5LTA1LTIwICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNDaHJvbWl1
bS5jc3MgYi9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZWNhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCkBAIC0wLDAgKzEsMTY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8qIENocm9taXVtIGRlZmF1bHQgbWVkaWEgY29u
dHJvbHMgKi8KKworYXVkaW8geworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDMycHg7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJTsKKyAgICB6LWluZGV4OiAwOworfQorCit2aWRlbzotd2Via2l0
LWZ1bGwtcGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgYm90
dG9tOiAtMTZweDsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0
b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLW11dGUtYnV0dG9uOworCisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogYXV0bzsKKyAgICBib3R0b206IDA7CisgICAgcmlnaHQ6IDA7CisgICAg
bGVmdDogYXV0bzsKKworICAgIHdpZHRoOiAzNHB4OworICAgIGhlaWdodDogMzJweDsKKworICAg
IGJhY2tncm91bmQ6IHJnYmEoMTIzLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxheS1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247
CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
MDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IGF1dG87CisKKyAgICB3aWR0aDogMzBweDsK
KyAgICBoZWlnaHQ6IDMycHg7CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDIyMSwgMCwgMC42
KTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdGltZWxpbmUtY29udGFpbmVyOworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiBhdXRvOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAzMHB4OworICAgIHJpZ2h0OiAzNHB4
OworCisgICAgd2lkdGg6IGF1dG87CisgICAgaGVpZ2h0OiAzMnB4OworCisgICAgYmFja2dyb3Vu
ZDogcmdiYSgwLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1jdXJyZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3Vy
cmVudC10aW1lLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY3VycmVu
dC10aW1lLWRpc3BsYXk7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKKyAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGN1cnNvcjog
ZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhlaWdodDogMjFw
eDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDogYXV0bzsKKyAg
ICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0OHB4OworCisg
ICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsKKyAgICBmb250
LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOworICAgIGRpc3BsYXk6IG5vbmU7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAg
IGN1cnNvcjogZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhl
aWdodDogMjFweDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDog
YXV0bzsKKyAgICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0
OHB4OworCisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsK
KyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lbGluZSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBzbGlkZXItaG9yaXpvbnRh
bDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
OXB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogNTBweDsKKyAgICBoZWlnaHQ6IDEzcHg7
CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7Cit9CisKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtc2Vlay1iYWNrLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLXNlZWstZm9yd2FyZC1idXR0b247CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24sIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uOworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXgu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRl
eCBhZjg2Y2I4Li5iMDNiMmUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1MaW51eC5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAjaW5jbHVkZSAiQ2hyb21pdW1C
cmlkZ2UuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC01Miw3ICs1NSwxMSBAQCBz
dGF0aWMgY29uc3QgaW50IHN0eWxlZE1lbnVMaXN0SW50ZXJuYWxQYWRkaW5nWzRdID0geyAxLCA0
LCAxLCA0IH07CiAvLyBUaGUgZGVmYXVsdCB2YXJpYWJsZS13aWR0aCBmb250IHNpemUuICBXZSB1
c2UgdGhpcyBhcyB0aGUgZGVmYXVsdCBmb250CiAvLyBzaXplIGZvciB0aGUgInN5c3RlbSBmb250
IiwgYW5kIGFzIGEgYmFzZSBzaXplICh3aGljaCB3ZSB0aGVuIHNocmluaykgZm9yCiAvLyBmb3Jt
IGNvbnRyb2wgZm9udHMuCi1zdGF0aWMgY29uc3QgZmxvYXQgRGVmYXVsdEZvbnRTaXplID0gMTYu
MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Rm9udFNpemUgPSAxNi4wOworCisvLyBUaGUg
YmFja2dyb3VuZCBmb3IgdGhlIG1lZGlhIHBsYXllciBjb250cm9scyBzaG91bGQgYmUgYSA2MCUg
b3BhcXVlIGJsYWNrIHJlY3RhbmdsZS4gIFRoaXMKKy8vIG1hdGNoZXMgdGhlIFVJIG1vY2t1cHMg
Zm9yIHRoZSBkZWZhdWx0IFVJIHRoZW1lLgorc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRNZWRp
YUNvbnRyb2xPcGFjaXR5ID0gMC42ZjsKIAogLy8gVGhlc2UgdmFsdWVzIGFsbCBtYXRjaCBTYWZh
cmkvV2luLgogc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9
IDEzOwpAQCAtOTIsNiArOTksMjAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRHVUlGb250
KCkKICAgICByZXR1cm4gIkFyaWFsIjsKIH0KIAorI2lmIEVOQUJMRShWSURFTykKKy8vIEF0dGVt
cHQgdG8gcmV0cmlldmUgYSBIVE1MTWVkaWFFbGVtZW50IGZyb20gYSBOb2RlLiAgUmV0dXJucyBO
VUxMIGlmIG9uZSBjYW5ub3QgYmUgZm91bmQuCitzdGF0aWMgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50UGFyZW50KE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBOb2RlKiBtZWRpYU5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUo
KTsKKyAgICBpZiAoIW1lZGlhTm9kZSB8fCAoIW1lZGlhTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnZpZGVvVGFnKSAmJiAhbWVkaWFOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9U
YWcpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1l
ZGlhRWxlbWVudCo+KG1lZGlhTm9kZSk7Cit9CisjZW5kaWYKKwogUmVuZGVyVGhlbWUqIHRoZW1l
KCkKIHsKICAgICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IHRoZW1lOwpAQCAtMTEz
LDYgKzEzNCwxMyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpleHRyYVF1aXJr
c1N0eWxlU2hlZXQoKQogICAgIHJldHVybiBTdHJpbmcodGhlbWVXaW5RdWlya3NVc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YodGhlbWVXaW5RdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiB9
CiAKKyNpZiBFTkFCTEUoVklERU8pCitTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpl
eHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKG1lZGlh
Q29udHJvbHNDaHJvbWl1bVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xz
Q2hyb21pdW1Vc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisjZW5kaWYKKwogYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1cyhzdHlsZS0+YXBwZWFyYW5j
ZSgpKTsKQEAgLTE1Niw3ICsxODQsNyBAQCBkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpjYXJldEJsaW5rSW50ZXJ2YWwoKSBjb25zdAogCiB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6c3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbikgY29uc3QKIHsKLSAgICBmbG9hdCBmb250U2l6ZSA9IERlZmF1bHRGb250U2l6ZTsKKyAg
ICBmbG9hdCBmb250U2l6ZSA9IGRlZmF1bHRGb250U2l6ZTsKIAogICAgIHN3aXRjaCAocHJvcElk
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbmlDb250cm9sOgpAQCAtMzk1LDYgKzQyMyw2
NCBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbWFnZSkK
K3sKKyAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGRlZmF1bHRNZWRpYUNvbnRy
b2xPcGFjaXR5KTsKKworICAgIC8vIERyYXcgYmFja2dyb3VuZC4KKyAgICBDb2xvciBvbGRGaWxs
ID0gY29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgQ29sb3Igb2xkU3Ryb2tlID0gY29udGV4dC0+
c3Ryb2tlQ29sb3IoKTsKKworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigweDAwLCAw
eDAwLCAweDAwKSk7CisgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMHgwMCwgMHgw
MCwgMHgwMCkpOworICAgIGNvbnRleHQtPmRyYXdSZWN0KHJlY3QpOworCisgICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKG9sZEZpbGwpOworICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG9sZFN0
cm9rZSk7CisKKyAgICAvLyBDcmVhdGUgYSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgZm9yIHRoZSBp
bWFnZSB0aGF0IGlzIGNlbnRlcmVkIGluIHRoZSBkcmF3aW5nIHJlY3RhbmdsZSwgcm91bmRlZCBs
ZWZ0LCBhbmQgZG93bi4KKyAgICBJbnRSZWN0IGltYWdlUmVjdCA9IGltYWdlLT5yZWN0KCk7Cisg
ICAgaW1hZ2VSZWN0LnNldFkocmVjdC55KCkgKyAocmVjdC5oZWlnaHQoKSAtIGltYWdlLT5oZWln
aHQoKSArIDEpIC8gMik7CisgICAgaW1hZ2VSZWN0LnNldFgocmVjdC54KCkgKyAocmVjdC53aWR0
aCgpIC0gaW1hZ2UtPndpZHRoKCkgKyAxKSAvIDIpOworCisgICAgY29udGV4dC0+ZHJhd0ltYWdl
KGltYWdlLCBpbWFnZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUF0b3ApOworICAgIGNvbnRleHQtPmVu
ZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudFBhcmVudChvLT5ub2RlKCkpOworICAgIGlmICghbWVk
aWFFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG1l
ZGlhUGxheSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWVkaWFQbGF5IikucmVsZWFz
ZVJlZigpOworICAgIHN0YXRpYyBJbWFnZSogbWVkaWFQYXVzZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgibWVkaWFQYXVzZSIpLnJlbGVhc2VSZWYoKTsKKworICAgIHJldHVybiBwYWlu
dE1lZGlhQnV0dG9uSW50ZXJuYWwocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVu
dC0+cGF1c2VkKCkgPyBtZWRpYVBsYXkgOiBtZWRpYVBhdXNlKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKFZJ
REVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudFBh
cmVudChvLT5ub2RlKCkpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIHNvdW5kRnVsbCA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgibWVkaWFTb3VuZEZ1bGwiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIElt
YWdlKiBzb3VuZE5vbmUgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1lZGlhU291bmRO
b25lIikucmVsZWFzZVJlZigpOworCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b25JbnRlcm5h
bChwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVtZW50LT5tdXRlZCgpID8gc291bmRO
b25lOiBzb3VuZEZ1bGwpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwog
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgV2ViQ29yZTo6RWxlbWVu
dCogZSkgY29uc3QKIHsKICAgICAvLyBIZWlnaHQgaXMgbG9ja2VkIHRvIGF1dG8gb24gYWxsIGJy
b3dzZXJzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaApp
bmRleCBmYmY5OTBmLi43ODM4NTA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTGludXguaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaApAQCAtMzksNiArMzksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKKyNpZiBFTkFCTEUoVklE
RU8pCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQo
KTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhlbWUncyBj
b250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQuCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQpAQCAtODUsNiArODgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAorICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKwogICAgICAgICAvLyBNZW51
TGlzdCByZWZlcnMgdG8gYW4gdW5zdHlsZWQgbWVudWxpc3QgKG1lYW5pbmcgYSBtZW51bGlzdCB3
aXRob3V0CiAgICAgICAgIC8vIGJhY2tncm91bmQtY29sb3Igb3IgYm9yZGVyIHNldCkgYW5kIE1l
bnVMaXN0QnV0dG9uIHJlZmVycyB0byBhIHN0eWxlZAogICAgICAgICAvLyBtZW51bGlzdCAoYSBt
ZW51bGlzdCB3aXRoIGJhY2tncm91bmQtY29sb3Igb3IgYm9yZGVyIHNldCkuIFRoZXkgaGF2ZQpA
QCAtMTI0LDYgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGludCBtZW51TGlzdEludGVybmFsUGFkZGluZyhSZW5kZXJTdHlsZSosIGludCBwYWRk
aW5nVHlwZSkgY29uc3Q7CisgICAgICAgIGJvb2wgcGFpbnRNZWRpYUJ1dHRvbkludGVybmFsKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBJbWFnZSopOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbi5jcHAKaW5kZXggYTcyMzgwNi4uMmM2Y2IwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlICJG
b250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJGb250VXRpbHNDaHJvbWl1bVdpbi5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgog
I2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBAIC01NSw2ICs1OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8vIFRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgbWVkaWEgcGxh
eWVyIGNvbnRyb2xzIHNob3VsZCBiZSBhIDYwJSBvcGFxdWUgYmxhY2sgcmVjdGFuZ2xlLiAgVGhp
cworLy8gbWF0Y2hlcyB0aGUgVUkgbW9ja3VwcyBmb3IgdGhlIGRlZmF1bHQgVUkgdGhlbWUuCitz
dGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdE1lZGlhQ29udHJvbE9wYWNpdHkgPSAwLjZmOworCiAv
LyBUaGVzZSB2YWx1ZXMgYWxsIG1hdGNoIFNhZmFyaS9XaW4uCiBzdGF0aWMgY29uc3QgZmxvYXQg
ZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplID0gMTM7CiBzdGF0aWMgY29uc3QgZmxvYXQgZGVm
YXVsdENhbmNlbEJ1dHRvblNpemUgPSA5OwpAQCAtMjQ0LDYgKzI1MSwyMCBAQCBzdGF0aWMgZG91
YmxlIHF1ZXJ5U3lzdGVtQmxpbmtJbnRlcnZhbChkb3VibGUgZGVmYXVsdEludGVydmFsKQogICAg
IHJldHVybiBibGlua1RpbWUgLyAxMDAwLjA7CiB9CiAKKyNpZiBFTkFCTEUoVklERU8pCisvLyBB
dHRlbXB0IHRvIHJldHJpZXZlIGEgSFRNTE1lZGlhRWxlbWVudCBmcm9tIGEgTm9kZS4gIFJldHVy
bnMgTlVMTCBpZiBvbmUgY2Fubm90IGJlIGZvdW5kLgorc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudFBhcmVudChOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgTm9kZSogbWVkaWFOb2RlID0gbm9kZS0+c2hhZG93QW5jZXN0b3JO
b2RlKCk7CisgICAgaWYgKCFtZWRpYU5vZGUgfHwgKCFtZWRpYU5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjp2aWRlb1RhZykgJiYgIW1lZGlhTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmF1
ZGlvVGFnKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxNZWRpYUVsZW1lbnQqPihtZWRpYU5vZGUpOworfQorI2VuZGlmCisKIC8vIEltcGxlbWVudCBX
ZWJDb3JlOjp0aGVtZSgpIGZvciBnZXR0aW5nIHRoZSBnbG9iYWwgUmVuZGVyVGhlbWUuCiBSZW5k
ZXJUaGVtZSogdGhlbWUoKQogewpAQCAtMjY0LDcgKzI4NSw3IEBAIFN0cmluZyBSZW5kZXJUaGVt
ZUNocm9taXVtV2luOjpleHRyYVF1aXJrc1N0eWxlU2hlZXQoKQogI2lmIEVOQUJMRShWSURFTykK
IFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNo
ZWV0KCkKIHsKLSAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNo
ZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKKyAgICByZXR1
cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNDaHJvbWl1bVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVv
ZihtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiB9CiAjZW5kaWYK
IApAQCAtNTcyLDYgKzU5Myw2NCBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29ucwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhQnV0
dG9uSW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0
LCBJbWFnZSogaW1hZ2UpCit7CisgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihk
ZWZhdWx0TWVkaWFDb250cm9sT3BhY2l0eSk7CisKKyAgICAvLyBEcmF3IGJhY2tncm91bmQuCisg
ICAgQ29sb3Igb2xkRmlsbCA9IGNvbnRleHQtPmZpbGxDb2xvcigpOworICAgIENvbG9yIG9sZFN0
cm9rZSA9IGNvbnRleHQtPnN0cm9rZUNvbG9yKCk7CisKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3IoMHgwMCwgMHgwMCwgMHgwMCkpOworICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yKDB4MDAsIDB4MDAsIDB4MDApKTsKKyAgICBjb250ZXh0LT5kcmF3UmVjdChyZWN0KTsK
KworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihvbGRGaWxsKTsKKyAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcihvbGRTdHJva2UpOworCisgICAgLy8gQ3JlYXRlIGEgZGVzdGluYXRpb24gcmVj
dGFuZ2xlIGZvciB0aGUgaW1hZ2UgdGhhdCBpcyBjZW50ZXJlZCBpbiB0aGUgZHJhd2luZyByZWN0
YW5nbGUsIHJvdW5kZWQgbGVmdCwgYW5kIGRvd24uCisgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBp
bWFnZS0+cmVjdCgpOworICAgIGltYWdlUmVjdC5zZXRZKHJlY3QueSgpICsgKHJlY3QuaGVpZ2h0
KCkgLSBpbWFnZS0+aGVpZ2h0KCkgKyAxKSAvIDIpOworICAgIGltYWdlUmVjdC5zZXRYKHJlY3Qu
eCgpICsgKHJlY3Qud2lkdGgoKSAtIGltYWdlLT53aWR0aCgpICsgMSkgLyAyKTsKKworICAgIGNv
bnRleHQtPmRyYXdJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBDb21wb3NpdGVTb3VyY2VBdG9wKTsK
KyAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50TWVkaWFQbGF5QnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAgSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50UGFyZW50KG8tPm5vZGUoKSk7
CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0
YXRpYyBJbWFnZSogbWVkaWFQbGF5ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRp
YVBsYXkiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBtZWRpYVBhdXNlID0gSW1h
Z2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVBhdXNlIikucmVsZWFzZVJlZigpOworCisg
ICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChwYWludEluZm8uY29udGV4dCwgcmVj
dCwgbWVkaWFFbGVtZW50LT5wYXVzZWQoKSA/IG1lZGlhUGxheSA6IG1lZGlhUGF1c2UpOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtV2luOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisj
aWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IG1l
ZGlhRWxlbWVudFBhcmVudChvLT5ub2RlKCkpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIHNvdW5kRnVsbCA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWVkaWFTb3VuZEZ1bGwiKS5yZWxlYXNlUmVmKCk7Cisg
ICAgc3RhdGljIEltYWdlKiBzb3VuZE5vbmUgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
Im1lZGlhU291bmROb25lIikucmVsZWFzZVJlZigpOworCisgICAgcmV0dXJuIHBhaW50TWVkaWFC
dXR0b25JbnRlcm5hbChwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVtZW50LT5tdXRl
ZCgpID8gc291bmROb25lOiBzb3VuZEZ1bGwpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKwogdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjphZGp1c3RNZW51TGlzdFN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gSGVpZ2h0IGlzIGxvY2tlZCB0byBhdXRvIG9uIGFsbCBi
cm93c2Vycy4KQEAgLTY4Miw3ICs3NjEsOCBAQCBpbnQgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6
YnV0dG9uSW50ZXJuYWxQYWRkaW5nQm90dG9tKCkgY29uc3QKIH0KIAogLy8gc3RhdGljCi12b2lk
IFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnNldERlZmF1bHRGb250U2l6ZShpbnQgZm9udFNpemUp
IHsKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6c2V0RGVmYXVsdEZvbnRTaXplKGludCBm
b250U2l6ZSkKK3sKICAgICBkZWZhdWx0Rm9udFNpemUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oZm9u
dFNpemUpOwogCiAgICAgLy8gUmVzZXQgY2FjaGVkIGZvbnRzLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCmluZGV4IGVmMDNjOWIuLjZiYTY1OTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKQEAgLTEwNSw2ICsxMDUsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlC
dXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKwogICAgICAgICAvLyBNZW51TGlzdCByZWZlcnMgdG8gYW4gdW5zdHlsZWQgbWVudWxp
c3QgKG1lYW5pbmcgYSBtZW51bGlzdCB3aXRob3V0CiAgICAgICAgIC8vIGJhY2tncm91bmQtY29s
b3Igb3IgYm9yZGVyIHNldCkgYW5kIE1lbnVMaXN0QnV0dG9uIHJlZmVycyB0byBhIHN0eWxlZAog
ICAgICAgICAvLyBtZW51bGlzdCAoYSBtZW51bGlzdCB3aXRoIGJhY2tncm91bmQtY29sb3Igb3Ig
Ym9yZGVyIHNldCkuIFRoZXkgaGF2ZQpAQCAtMTQ1LDYgKzE0OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgVGhlbWVEYXRhIGdldFRoZW1lRGF0YShSZW5kZXJPYmplY3QqKTsKIAog
ICAgICAgICBib29sIHBhaW50VGV4dEZpZWxkSW50ZXJuYWwoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JiwgYm9vbCk7CisgICAgICAg
IGJvb2wgcGFpbnRNZWRpYUJ1dHRvbkludGVybmFsKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmLCBJbWFnZSopOwogCiAgICAgICAgIGludCBtZW51TGlzdEludGVybmFsUGFkZGluZyhS
ZW5kZXJTdHlsZSosIGludCBwYWRkaW5nVHlwZSkgY29uc3Q7CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30571</attachid>
            <date>2009-05-21 18:07:59 -0700</date>
            <delta_ts>2009-05-21 18:11:19 -0700</delta_ts>
            <desc>Normalize Color specification.</desc>
            <filename>default_ui5.patch</filename>
            <type>text/plain</type>
            <size>22135</size>
            <attacher name="Albert J. Wong">ajwong</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTVmNTY2OC4uMzMxOGE3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wNS0yMCAgQWxiZXJ0IEouIFdv
bmcgIDxhandvbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGRlZmF1bHQgVUkgZm9yIGNocm9taXVtLiAg
QWRkIGEgc3R5bGUgc2hlZXQgZm9yIENocm9taXVtCisgICAgICAgIG1lZGlhIGNvbnRyb2xzIHdp
dGggZ29vZCBkZWZhdWx0cyBhbmQgaW1wbGVtZW50ZWQgYmFzaWMgZHJhdyBmdW5jdGlvbnMKKyAg
ICAgICAgZm9yIHBsYXkvcGF1c2UgJiBtdXRlIGJ1dHRvbnMuCisKKyAgICAgICAgKiBjc3MvbWVk
aWFDb250cm9sc0Nocm9taXVtLmNzczogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFCdXR0b25JbnRlcm5hbCk6IFBh
aW50CisgICAgICAgIGJ1dHRvbnMgcmVzcGVjdGluZyBjaHJvbWl1bSBtZWRpYSBjb250cm9scyBj
b2xvciBzY2hlbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50TWVkaWFQbGF5QnV0dG9uKTogUGFpbnQgbG9naWMKKyAgICAgICAgc3BlY2lmaWMgdG8g
cGxheS9wYXVzZSBidXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQKKyAgICAgICAgc3BlY2lmaWMgdG8g
bXV0ZSBidXR0b24uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51
eC5oOiBBcHByb3ByaWF0ZSBoZWFkZXIgY2hhbmdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTogRXhwb3J0CisgICAgICAg
IG91ciBjdXN0b20gbWVkaWEgY29udHJvbHMgc3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwpOiBQYWlu
dAorICAgICAgICBidXR0b25zIHJlc3BlY3RpbmcgY2hyb21pdW0gbWVkaWEgY29udHJvbHMgY29s
b3Igc2NoZW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFp
bnRNZWRpYVBsYXlCdXR0b24pOiBQYWludCBsb2dpYworICAgICAgICBzcGVjaWZpYyB0byBwbGF5
L3BhdXNlIGJ1dHRvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50TWVkaWFNdXRlQnV0dG9uKTogUGFpbnQgc3BlY2lmaWMKKyAgICAgICAgdG8gbXV0ZSBi
dXR0b24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpzZXREZWZh
dWx0Rm9udFNpemUpOiBBcHByb3ByaWF0ZQorICAgICAgICBoZWFkZXIgY2hhbmdlcy4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oOgorCiAyMDA5LTA1LTIwICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNDaHJvbWl1
bS5jc3MgYi9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZWNhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCkBAIC0wLDAgKzEsMTY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8qIENocm9taXVtIGRlZmF1bHQgbWVkaWEgY29u
dHJvbHMgKi8KKworYXVkaW8geworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDMycHg7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJTsKKyAgICB6LWluZGV4OiAwOworfQorCit2aWRlbzotd2Via2l0
LWZ1bGwtcGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgYm90
dG9tOiAtMTZweDsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0
b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLW11dGUtYnV0dG9uOworCisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogYXV0bzsKKyAgICBib3R0b206IDA7CisgICAgcmlnaHQ6IDA7CisgICAg
bGVmdDogYXV0bzsKKworICAgIHdpZHRoOiAzNHB4OworICAgIGhlaWdodDogMzJweDsKKworICAg
IGJhY2tncm91bmQ6IHJnYmEoMTIzLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxheS1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247
CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
MDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IGF1dG87CisKKyAgICB3aWR0aDogMzBweDsK
KyAgICBoZWlnaHQ6IDMycHg7CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDIyMSwgMCwgMC42
KTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdGltZWxpbmUtY29udGFpbmVyOworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CisKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiBhdXRvOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAzMHB4OworICAgIHJpZ2h0OiAzNHB4
OworCisgICAgd2lkdGg6IGF1dG87CisgICAgaGVpZ2h0OiAzMnB4OworCisgICAgYmFja2dyb3Vu
ZDogcmdiYSgwLCAwLCAwLCAwLjYpOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1jdXJyZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3Vy
cmVudC10aW1lLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY3VycmVu
dC10aW1lLWRpc3BsYXk7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKKyAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGN1cnNvcjog
ZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhlaWdodDogMjFw
eDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDogYXV0bzsKKyAg
ICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0OHB4OworCisg
ICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsKKyAgICBmb250
LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOworICAgIGRpc3BsYXk6IG5vbmU7CisKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAg
IGN1cnNvcjogZGVmYXVsdDsKKworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsaW5lLWhl
aWdodDogMjFweDsKKyAgICB0b3A6IGF1dG87CisgICAgYm90dG9tOiA2cHg7CisgICAgbGVmdDog
YXV0bzsKKyAgICByaWdodDogMHB4OworCisgICAgaGVpZ2h0OiAyMHB4OworICAgIHdpZHRoOiA0
OHB4OworCisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsK
KyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2F1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lbGluZSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBzbGlkZXItaG9yaXpvbnRh
bDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiBhdXRvOworICAgIGJvdHRvbTog
OXB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogNTBweDsKKyAgICBoZWlnaHQ6IDEzcHg7
CisKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7Cit9CisKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtc2Vlay1iYWNrLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLXNlZWstZm9yd2FyZC1idXR0b247CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24sIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uOworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXgu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRl
eCBhZjg2Y2I4Li5kMDM0NzUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1MaW51eC5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAjaW5jbHVkZSAiQ2hyb21pdW1C
cmlkZ2UuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC01Miw3ICs1NSwxMSBAQCBz
dGF0aWMgY29uc3QgaW50IHN0eWxlZE1lbnVMaXN0SW50ZXJuYWxQYWRkaW5nWzRdID0geyAxLCA0
LCAxLCA0IH07CiAvLyBUaGUgZGVmYXVsdCB2YXJpYWJsZS13aWR0aCBmb250IHNpemUuICBXZSB1
c2UgdGhpcyBhcyB0aGUgZGVmYXVsdCBmb250CiAvLyBzaXplIGZvciB0aGUgInN5c3RlbSBmb250
IiwgYW5kIGFzIGEgYmFzZSBzaXplICh3aGljaCB3ZSB0aGVuIHNocmluaykgZm9yCiAvLyBmb3Jt
IGNvbnRyb2wgZm9udHMuCi1zdGF0aWMgY29uc3QgZmxvYXQgRGVmYXVsdEZvbnRTaXplID0gMTYu
MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Rm9udFNpemUgPSAxNi4wOworCisvLyBUaGUg
YmFja2dyb3VuZCBmb3IgdGhlIG1lZGlhIHBsYXllciBjb250cm9scyBzaG91bGQgYmUgYSA2MCUg
b3BhcXVlIGJsYWNrIHJlY3RhbmdsZS4gIFRoaXMKKy8vIG1hdGNoZXMgdGhlIFVJIG1vY2t1cHMg
Zm9yIHRoZSBkZWZhdWx0IFVJIHRoZW1lLgorc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRNZWRp
YUNvbnRyb2xPcGFjaXR5ID0gMC42ZjsKIAogLy8gVGhlc2UgdmFsdWVzIGFsbCBtYXRjaCBTYWZh
cmkvV2luLgogc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9
IDEzOwpAQCAtOTIsNiArOTksMjAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRHVUlGb250
KCkKICAgICByZXR1cm4gIkFyaWFsIjsKIH0KIAorI2lmIEVOQUJMRShWSURFTykKKy8vIEF0dGVt
cHQgdG8gcmV0cmlldmUgYSBIVE1MTWVkaWFFbGVtZW50IGZyb20gYSBOb2RlLiAgUmV0dXJucyBO
VUxMIGlmIG9uZSBjYW5ub3QgYmUgZm91bmQuCitzdGF0aWMgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50UGFyZW50KE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBOb2RlKiBtZWRpYU5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUo
KTsKKyAgICBpZiAoIW1lZGlhTm9kZSB8fCAoIW1lZGlhTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnZpZGVvVGFnKSAmJiAhbWVkaWFOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9U
YWcpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1l
ZGlhRWxlbWVudCo+KG1lZGlhTm9kZSk7Cit9CisjZW5kaWYKKwogUmVuZGVyVGhlbWUqIHRoZW1l
KCkKIHsKICAgICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IHRoZW1lOwpAQCAtMTEz
LDYgKzEzNCwxMyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpleHRyYVF1aXJr
c1N0eWxlU2hlZXQoKQogICAgIHJldHVybiBTdHJpbmcodGhlbWVXaW5RdWlya3NVc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YodGhlbWVXaW5RdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiB9
CiAKKyNpZiBFTkFCTEUoVklERU8pCitTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpl
eHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKG1lZGlh
Q29udHJvbHNDaHJvbWl1bVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xz
Q2hyb21pdW1Vc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisjZW5kaWYKKwogYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1cyhzdHlsZS0+YXBwZWFyYW5j
ZSgpKTsKQEAgLTEzMCw3ICsxNTgsNyBAQCBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogCiBDb2xv
ciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCk7CisgICAgcmV0
dXJuIENvbG9yOjpibGFjazsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpw
bGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKQEAgLTE1Niw3
ICsxODQsNyBAQCBkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjYXJldEJsaW5rSW50
ZXJ2YWwoKSBjb25zdAogCiB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c3lzdGVtRm9u
dChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKIHsK
LSAgICBmbG9hdCBmb250U2l6ZSA9IERlZmF1bHRGb250U2l6ZTsKKyAgICBmbG9hdCBmb250U2l6
ZSA9IGRlZmF1bHRGb250U2l6ZTsKIAogICAgIHN3aXRjaCAocHJvcElkKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZVdlYmtpdE1pbmlDb250cm9sOgpAQCAtMzk1LDYgKzQyMyw2NCBAQCBib29sIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVy
T2JqZWN0KiBvLCBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbWFnZSkKK3sKKyAgICBjb250ZXh0
LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGRlZmF1bHRNZWRpYUNvbnRyb2xPcGFjaXR5KTsKKwor
ICAgIC8vIERyYXcgYmFja2dyb3VuZC4KKyAgICBDb2xvciBvbGRGaWxsID0gY29udGV4dC0+Zmls
bENvbG9yKCk7CisgICAgQ29sb3Igb2xkU3Ryb2tlID0gY29udGV4dC0+c3Ryb2tlQ29sb3IoKTsK
KworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOworICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CisgICAgY29udGV4dC0+ZHJhd1JlY3QocmVj
dCk7CisKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Iob2xkRmlsbCk7CisgICAgY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3Iob2xkU3Ryb2tlKTsKKworICAgIC8vIENyZWF0ZSBhIGRlc3RpbmF0aW9u
IHJlY3RhbmdsZSBmb3IgdGhlIGltYWdlIHRoYXQgaXMgY2VudGVyZWQgaW4gdGhlIGRyYXdpbmcg
cmVjdGFuZ2xlLCByb3VuZGVkIGxlZnQsIGFuZCBkb3duLgorICAgIEludFJlY3QgaW1hZ2VSZWN0
ID0gaW1hZ2UtPnJlY3QoKTsKKyAgICBpbWFnZVJlY3Quc2V0WShyZWN0LnkoKSArIChyZWN0Lmhl
aWdodCgpIC0gaW1hZ2UtPmhlaWdodCgpICsgMSkgLyAyKTsKKyAgICBpbWFnZVJlY3Quc2V0WChy
ZWN0LngoKSArIChyZWN0LndpZHRoKCkgLSBpbWFnZS0+d2lkdGgoKSArIDEpIC8gMik7CisKKyAg
ICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgQ29tcG9zaXRlU291cmNlQXRv
cCk7CisgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFQbGF5
QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAg
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50UGFyZW50KG8tPm5v
ZGUoKSk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHN0YXRpYyBJbWFnZSogbWVkaWFQbGF5ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KCJtZWRpYVBsYXkiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBtZWRpYVBhdXNl
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVBhdXNlIikucmVsZWFzZVJlZigp
OworCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChwYWludEluZm8uY29udGV4
dCwgcmVjdCwgbWVkaWFFbGVtZW50LT5wYXVzZWQoKSA/IG1lZGlhUGxheSA6IG1lZGlhUGF1c2Up
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBSZW5kZXJUaGVt
ZUNocm9taXVtTGludXg6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50ID0gbWVkaWFFbGVtZW50UGFyZW50KG8tPm5vZGUoKSk7CisgICAgaWYgKCFtZWRpYUVsZW1l
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBJbWFnZSogc291bmRGdWxs
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVNvdW5kRnVsbCIpLnJlbGVhc2VS
ZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIHNvdW5kTm9uZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWVkaWFTb3VuZE5vbmUiKS5yZWxlYXNlUmVmKCk7CisKKyAgICByZXR1cm4gcGFp
bnRNZWRpYUJ1dHRvbkludGVybmFsKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYUVsZW1l
bnQtPm11dGVkKCkgPyBzb3VuZE5vbmU6IHNvdW5kRnVsbCk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCiB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0
TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBXZWJDb3JlOjpFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIEhlaWdodCBpcyBsb2Nr
ZWQgdG8gYXV0byBvbiBhbGwgYnJvd3NlcnMuCkBAIC00ODcsNyArNTczLDcgQEAgQ29sb3IgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKIAogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29sb3Io
MCwgMCwgMCk7CisgICAgcmV0dXJuIENvbG9yOjpibGFjazsKIH0KIAogQ29sb3IgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjppbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaApp
bmRleCBmYmY5OTBmLi43ODM4NTA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTGludXguaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaApAQCAtMzksNiArMzksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKKyNpZiBFTkFCTEUoVklE
RU8pCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQo
KTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhlbWUncyBj
b250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQuCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQpAQCAtODUsNiArODgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAorICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKwogICAgICAgICAvLyBNZW51
TGlzdCByZWZlcnMgdG8gYW4gdW5zdHlsZWQgbWVudWxpc3QgKG1lYW5pbmcgYSBtZW51bGlzdCB3
aXRob3V0CiAgICAgICAgIC8vIGJhY2tncm91bmQtY29sb3Igb3IgYm9yZGVyIHNldCkgYW5kIE1l
bnVMaXN0QnV0dG9uIHJlZmVycyB0byBhIHN0eWxlZAogICAgICAgICAvLyBtZW51bGlzdCAoYSBt
ZW51bGlzdCB3aXRoIGJhY2tncm91bmQtY29sb3Igb3IgYm9yZGVyIHNldCkuIFRoZXkgaGF2ZQpA
QCAtMTI0LDYgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGludCBtZW51TGlzdEludGVybmFsUGFkZGluZyhSZW5kZXJTdHlsZSosIGludCBwYWRk
aW5nVHlwZSkgY29uc3Q7CisgICAgICAgIGJvb2wgcGFpbnRNZWRpYUJ1dHRvbkludGVybmFsKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBJbWFnZSopOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbi5jcHAKaW5kZXggYTcyMzgwNi4uNjE3NDM2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlICJG
b250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJGb250VXRpbHNDaHJvbWl1bVdpbi5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgog
I2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBAIC01NSw2ICs1OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8vIFRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgbWVkaWEgcGxh
eWVyIGNvbnRyb2xzIHNob3VsZCBiZSBhIDYwJSBvcGFxdWUgYmxhY2sgcmVjdGFuZ2xlLiAgVGhp
cworLy8gbWF0Y2hlcyB0aGUgVUkgbW9ja3VwcyBmb3IgdGhlIGRlZmF1bHQgVUkgdGhlbWUuCitz
dGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdE1lZGlhQ29udHJvbE9wYWNpdHkgPSAwLjZmOworCiAv
LyBUaGVzZSB2YWx1ZXMgYWxsIG1hdGNoIFNhZmFyaS9XaW4uCiBzdGF0aWMgY29uc3QgZmxvYXQg
ZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplID0gMTM7CiBzdGF0aWMgY29uc3QgZmxvYXQgZGVm
YXVsdENhbmNlbEJ1dHRvblNpemUgPSA5OwpAQCAtMjQ0LDYgKzI1MSwyMCBAQCBzdGF0aWMgZG91
YmxlIHF1ZXJ5U3lzdGVtQmxpbmtJbnRlcnZhbChkb3VibGUgZGVmYXVsdEludGVydmFsKQogICAg
IHJldHVybiBibGlua1RpbWUgLyAxMDAwLjA7CiB9CiAKKyNpZiBFTkFCTEUoVklERU8pCisvLyBB
dHRlbXB0IHRvIHJldHJpZXZlIGEgSFRNTE1lZGlhRWxlbWVudCBmcm9tIGEgTm9kZS4gIFJldHVy
bnMgTlVMTCBpZiBvbmUgY2Fubm90IGJlIGZvdW5kLgorc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudFBhcmVudChOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgTm9kZSogbWVkaWFOb2RlID0gbm9kZS0+c2hhZG93QW5jZXN0b3JO
b2RlKCk7CisgICAgaWYgKCFtZWRpYU5vZGUgfHwgKCFtZWRpYU5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjp2aWRlb1RhZykgJiYgIW1lZGlhTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmF1
ZGlvVGFnKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxNZWRpYUVsZW1lbnQqPihtZWRpYU5vZGUpOworfQorI2VuZGlmCisKIC8vIEltcGxlbWVudCBX
ZWJDb3JlOjp0aGVtZSgpIGZvciBnZXR0aW5nIHRoZSBnbG9iYWwgUmVuZGVyVGhlbWUuCiBSZW5k
ZXJUaGVtZSogdGhlbWUoKQogewpAQCAtMjY0LDcgKzI4NSw3IEBAIFN0cmluZyBSZW5kZXJUaGVt
ZUNocm9taXVtV2luOjpleHRyYVF1aXJrc1N0eWxlU2hlZXQoKQogI2lmIEVOQUJMRShWSURFTykK
IFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNo
ZWV0KCkKIHsKLSAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNo
ZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKKyAgICByZXR1
cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNDaHJvbWl1bVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVv
ZihtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiB9CiAjZW5kaWYK
IApAQCAtMjgwLDI1ICszMDEsMjUgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpzdXBw
b3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiBDb2xvciBSZW5k
ZXJUaGVtZUNocm9taXVtV2luOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0CiB7CiAgICAgaWYgKENocm9taXVtQnJpZGdlOjpsYXlvdXRUZXN0TW9kZSgpKQot
ICAgICAgICByZXR1cm4gQ29sb3IoIiMwMDAwRkYiKTsgIC8vIFJveWFsIGJsdWUuCisgICAgICAg
IHJldHVybiBDb2xvcigweDAwLCAweDAwLCAweGZmKTsgIC8vIFJveWFsIGJsdWUuCiAgICAgQ09M
T1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihDT0xPUl9ISUdITElHSFQpOwotICAgIHJldHVybiBD
b2xvcihHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFsdWUoY29sb3Ip
LCAyNTUpOworICAgIHJldHVybiBDb2xvcihHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29s
b3IpLCBHZXRCVmFsdWUoY29sb3IpLCAweGZmKTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVDaHJv
bWl1bVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
CiB7CiAgICAgaWYgKENocm9taXVtQnJpZGdlOjpsYXlvdXRUZXN0TW9kZSgpKQotICAgICAgICBy
ZXR1cm4gQ29sb3IoIiM5OTk5OTkiKTsgIC8vIE1lZGl1bSBncmF5LgorICAgICAgICByZXR1cm4g
Q29sb3IoMHg5OSwgMHg5OSwgMHg5OSk7ICAvLyBNZWRpdW0gZ3JheS4KICAgICBDT0xPUlJFRiBj
b2xvciA9IEdldFN5c0NvbG9yKENPTE9SX0dSQVlURVhUKTsKLSAgICByZXR1cm4gQ29sb3IoR2V0
UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSwgMjU1KTsK
KyAgICByZXR1cm4gQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0
QlZhbHVlKGNvbG9yKSwgMHhmZik7CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBp
ZiAoQ2hyb21pdW1CcmlkZ2U6OmxheW91dFRlc3RNb2RlKCkpCi0gICAgICAgIHJldHVybiBDb2xv
cigiI0ZGRkZDQyIpOyAgLy8gUGFsZSB5ZWxsb3cuCisgICAgICAgIHJldHVybiBDb2xvcigweGZm
LCAweGZmLCAweGNjKTsgIC8vIFBhbGUgeWVsbG93LgogICAgIENPTE9SUkVGIGNvbG9yID0gR2V0
U3lzQ29sb3IoQ09MT1JfSElHSExJR0hUVEVYVCk7Ci0gICAgcmV0dXJuIENvbG9yKEdldFJWYWx1
ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xvciksIDI1NSk7CisgICAg
cmV0dXJuIENvbG9yKEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1
ZShjb2xvciksIDB4ZmYpOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKQEAgLTMwOCwxMiAr
MzI5LDEyIEBAIENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBsYXRmb3JtSW5hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogCiBDb2xvciBSZW5kZXJUaGVtZUNocm9t
aXVtV2luOjpwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIENvbG9yKDI1NSwgMTUwLCA1MCk7ICAvLyBPcmFuZ2UuCisgICAgcmV0dXJu
IENvbG9yKDB4ZmYsIDB4OTYsIDB4MzIpOyAgLy8gT3JhbmdlLgogfQogCiBDb2xvciBSZW5kZXJU
aGVtZUNocm9taXVtV2luOjpwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9y
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDE1MCk7IC8vIFllbGxvdy4K
KyAgICByZXR1cm4gQ29sb3IoMHhmZiwgMHhmZiwgMHg5Nik7IC8vIFllbGxvdy4KIH0KIAogZG91
YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmNhcmV0QmxpbmtJbnRlcnZhbCgpIGNvbnN0CkBA
IC01NzIsNiArNTkzLDY0IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50TWVkaWFCdXR0b25J
bnRlcm5hbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIElt
YWdlKiBpbWFnZSkKK3sKKyAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGRlZmF1
bHRNZWRpYUNvbnRyb2xPcGFjaXR5KTsKKworICAgIC8vIERyYXcgYmFja2dyb3VuZC4KKyAgICBD
b2xvciBvbGRGaWxsID0gY29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgQ29sb3Igb2xkU3Ryb2tl
ID0gY29udGV4dC0+c3Ryb2tlQ29sb3IoKTsKKworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2spOworICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7
CisgICAgY29udGV4dC0+ZHJhd1JlY3QocmVjdCk7CisKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3Iob2xkRmlsbCk7CisgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iob2xkU3Ryb2tlKTsKKwor
ICAgIC8vIENyZWF0ZSBhIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBmb3IgdGhlIGltYWdlIHRoYXQg
aXMgY2VudGVyZWQgaW4gdGhlIGRyYXdpbmcgcmVjdGFuZ2xlLCByb3VuZGVkIGxlZnQsIGFuZCBk
b3duLgorICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gaW1hZ2UtPnJlY3QoKTsKKyAgICBpbWFnZVJl
Y3Quc2V0WShyZWN0LnkoKSArIChyZWN0LmhlaWdodCgpIC0gaW1hZ2UtPmhlaWdodCgpICsgMSkg
LyAyKTsKKyAgICBpbWFnZVJlY3Quc2V0WChyZWN0LngoKSArIChyZWN0LndpZHRoKCkgLSBpbWFn
ZS0+d2lkdGgoKSArIDEpIC8gMik7CisKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIGlt
YWdlUmVjdCwgQ29tcG9zaXRlU291cmNlQXRvcCk7CisgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtV2luOjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7
CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9
IG1lZGlhRWxlbWVudFBhcmVudChvLT5ub2RlKCkpOworICAgIGlmICghbWVkaWFFbGVtZW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhUGxheSA9IElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWVkaWFQbGF5IikucmVsZWFzZVJlZigpOworICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFQYXVzZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
bWVkaWFQYXVzZSIpLnJlbGVhc2VSZWYoKTsKKworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9u
SW50ZXJuYWwocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+cGF1c2VkKCkg
PyBtZWRpYVBsYXkgOiBtZWRpYVBhdXNlKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRNZWRpYU11dGVCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworI2lmIEVOQUJMRShWSURFTykKKyAgICBIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnRQYXJlbnQoby0+bm9kZSgp
KTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
c3RhdGljIEltYWdlKiBzb3VuZEZ1bGwgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1l
ZGlhU291bmRGdWxsIikucmVsZWFzZVJlZigpOworICAgIHN0YXRpYyBJbWFnZSogc291bmROb25l
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtZWRpYVNvdW5kTm9uZSIpLnJlbGVhc2VS
ZWYoKTsKKworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uSW50ZXJuYWwocGFpbnRJbmZvLmNv
bnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+bXV0ZWQoKSA/IHNvdW5kTm9uZTogc291bmRGdWxs
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIHZvaWQgUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbjo6YWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIEhl
aWdodCBpcyBsb2NrZWQgdG8gYXV0byBvbiBhbGwgYnJvd3NlcnMuCkBAIC02ODIsNyArNzYxLDgg
QEAgaW50IFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmJ1dHRvbkludGVybmFsUGFkZGluZ0JvdHRv
bSgpIGNvbnN0CiB9CiAKIC8vIHN0YXRpYwotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpz
ZXREZWZhdWx0Rm9udFNpemUoaW50IGZvbnRTaXplKSB7Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21p
dW1XaW46OnNldERlZmF1bHRGb250U2l6ZShpbnQgZm9udFNpemUpCit7CiAgICAgZGVmYXVsdEZv
bnRTaXplID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZvbnRTaXplKTsKIAogICAgIC8vIFJlc2V0IGNh
Y2hlZCBmb250cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1XaW4uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaApp
bmRleCBlZjAzYzliLi42YmE2NTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtV2luLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbi5oCkBAIC0xMDUsNiArMTA1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKKyAgICAg
ICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKICAgICAgICAgLy8gTWVudUxp
c3QgcmVmZXJzIHRvIGFuIHVuc3R5bGVkIG1lbnVsaXN0IChtZWFuaW5nIGEgbWVudWxpc3Qgd2l0
aG91dAogICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yIG9yIGJvcmRlciBzZXQpIGFuZCBNZW51
TGlzdEJ1dHRvbiByZWZlcnMgdG8gYSBzdHlsZWQKICAgICAgICAgLy8gbWVudWxpc3QgKGEgbWVu
dWxpc3Qgd2l0aCBiYWNrZ3JvdW5kLWNvbG9yIG9yIGJvcmRlciBzZXQpLiBUaGV5IGhhdmUKQEAg
LTE0NSw2ICsxNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRoZW1lRGF0YSBn
ZXRUaGVtZURhdGEoUmVuZGVyT2JqZWN0Kik7CiAKICAgICAgICAgYm9vbCBwYWludFRleHRGaWVs
ZEludGVybmFsKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYsIGJvb2wpOworICAgICAgICBib29sIHBhaW50TWVkaWFCdXR0b25JbnRl
cm5hbChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKIAogICAgICAg
ICBpbnQgbWVudUxpc3RJbnRlcm5hbFBhZGRpbmcoUmVuZGVyU3R5bGUqLCBpbnQgcGFkZGluZ1R5
cGUpIGNvbnN0OwogICAgIH07Cg==
</data>
<flag name="review"
          id="15455"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>