<?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>22051</bug_id>
          
          <creation_ts>2008-11-03 11:40:57 -0800</creation_ts>
          <short_desc>renderthemes should be able to supply additional CSS rules to the core ones</short_desc>
          <delta_ts>2008-11-26 13:49:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Ojan Vafai">ojan</reporter>
          <assigned_to name="Matt Perry">mpComplete</assigned_to>
          <cc>bolsinga</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>hyatt</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97482</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2008-11-03 11:40:57 -0800</bug_when>
    <thetext>From #webkit:
&lt;othermaciej&gt; dhyatt: if we could split the UA stylesheet into core and theme-based that might be a good design
&lt;dhyatt&gt; othermaciej: i agree
&lt;dhyatt&gt; othermaciej: that&apos;s how XUL works... :)
&lt;dhyatt&gt; xul.css vs. theme/global.css
&lt;dhyatt&gt; then the rendertheme would be supplying additional rules
&lt;dhyatt&gt; as a String</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97736</commentid>
    <comment_count>1</comment_count>
      <attachid>24918</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-05 14:25:40 -0800</bug_when>
    <thetext>Created attachment 24918
initial pass at themable css sheets

I wasn&apos;t sure what to pull out of html4.css into theme-specific files, so I just kept the Windows-specific overrides for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97805</commentid>
    <comment_count>2</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-11-06 07:02:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/34297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97971</commentid>
    <comment_count>3</comment_count>
      <attachid>24973</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-07 15:06:07 -0800</bug_when>
    <thetext>Created attachment 24973
revised patch that merges with the Qt port&apos;s approach

I modified the patch to make Qt share the same approach.  I think it&apos;s a little cleaner now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97974</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-07 15:24:42 -0800</bug_when>
    <thetext>Sorry, ignore that patch.  I didn&apos;t realize CSSStyleSheet::parseString appended to the original, so I can do this patch a lot more simply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97977</commentid>
    <comment_count>5</comment_count>
      <attachid>24974</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-07 15:59:31 -0800</bug_when>
    <thetext>Created attachment 24974
patch that uses Qt&apos;s approach for Win

I originally thought Qt was overriding html4.css rather than appending.  Since that&apos;s not the case, the Win/Chromium port can use the same approach.  I expanded a bit on it so that:
- there&apos;s a method to add to quirks.css as well.
- the adjust* methods are virtual rather than static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98143</commentid>
    <comment_count>6</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-11-10 04:05:55 -0800</bug_when>
    <thetext>Good stuff. Maybe keep the platform-stylesheets in platform-subdirectories like win/qt/mac ? (The Qt one is in WebCore/platform/qt right now)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98233</commentid>
    <comment_count>7</comment_count>
      <attachid>25035</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-10 16:41:29 -0800</bug_when>
    <thetext>Created attachment 25035
same as above, with .css files in platform/win

I took Tor&apos;s suggestion and moved themeWin*.css into WebCore/platform/win, instead of WebCore/css.  The rest is unchanged from the above patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98234</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-10 16:43:37 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I took Tor&apos;s suggestion and moved themeWin*.css into WebCore/platform/win,
&gt; instead of WebCore/css.  The rest is unchanged from the above patch.

That&apos;s not the right place. The platform directory is lower level than CSS and shouldn&apos;t contain things like this -- backwards dependencies. This should go somewhere near the themes, maybe in the rendering directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98237</commentid>
    <comment_count>9</comment_count>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-10 16:57:42 -0800</bug_when>
    <thetext>Ok, if not platform/win, then should it just stay in css, alongside html4.css?  Patch #3 does that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98270</commentid>
    <comment_count>10</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-11-11 00:15:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; That&apos;s not the right place. The platform directory is lower level than CSS and
&gt; shouldn&apos;t contain things like this -- backwards dependencies. This should go
&gt; somewhere near the themes, maybe in the rendering directory.

The adjustment callback is passed the style in RenderThemeFoo::adjustDefaultStyleSheet(CSSStyleSheet* style). The fact that some themes choose to use a file to load the rules is an implementation detail private to the theme, so I would argue those files should stay close to the theme, as you say. The question then becomes, where should the themes be located? 

Currently Qt, GTK and Wx use WebCore/platform for RenderTheme and ScrollBarTheme, Mac and Win use WebCore/rendering. Should we move them all to rendering? If so in subdirectories for each platform? I have to say I like the approach of having platform independent code somehow separated out to it&apos;s easier to see what parts a port has to implement and maintain.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98278</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-11-11 03:01:21 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; That&apos;s not the right place. The platform directory is lower level than CSS and
&gt; &gt; shouldn&apos;t contain things like this -- backwards dependencies. This should go
&gt; &gt; somewhere near the themes, maybe in the rendering directory.
&gt; 
&gt; The adjustment callback is passed the style in
&gt; RenderThemeFoo::adjustDefaultStyleSheet(CSSStyleSheet* style). The fact that
&gt; some themes choose to use a file to load the rules is an implementation detail
&gt; private to the theme, so I would argue those files should stay close to the
&gt; theme, as you say. The question then becomes, where should the themes be
&gt; located? 
&gt; 
&gt; Currently Qt, GTK and Wx use WebCore/platform for RenderTheme and
&gt; ScrollBarTheme, Mac and Win use WebCore/rendering. Should we move them all to
&gt; rendering? If so in subdirectories for each platform? I have to say I like the
&gt; approach of having platform independent code somehow separated out to it&apos;s
&gt; easier to see what parts a port has to implement and maintain.

This sounds like a platform layering violation (see Bug 21354).

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98280</commentid>
    <comment_count>12</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-11-11 03:23:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; This sounds like a platform layering violation (see Bug 21354).

You&apos;re right. I&apos;ve sumbitted Bug 22176 to track this.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98300</commentid>
    <comment_count>13</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-11-11 10:23:18 -0800</bug_when>
    <thetext>Ultimately unique RenderTheme files are going to disappear.  You can see the beginnings of this with how the Mac theme is being refactored right now.

It would probably be more forward-thinking to have an API simply return a String and not use CSSStyleSheet.  Let the caller take the String and add it to the stylesheet.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98515</commentid>
    <comment_count>14</comment_count>
      <attachid>25103</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-12 13:50:25 -0800</bug_when>
    <thetext>Created attachment 25103
revised patch with dhyatt&apos;s suggestion

The API now returns a String.  The default is to return just the html4.css or quirks.css string.  The Win and Qt ports override this to concatenate their specific additions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100340</commentid>
    <comment_count>15</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-11-25 17:08:37 -0800</bug_when>
    <thetext>Repeating comments from IRC:

I think it would be better to make the API be a string of extra rules, not a string of all the rules. Otherwise, ever platform that adds extra rules is responsible for concatenating to the standard rules, but that should just be done by the core. That is sort of the approach that is taken for SVG rules as well. It&apos;s also more logical in a way - the theme doesn&apos;t own the style rules for HTML, it only owns certain theme-specific adjustments to the style rules.

I also think this is the intent of Hyatt&apos;s original suggestion: &quot;Let the caller take the String and add it to
the stylesheet.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100341</commentid>
    <comment_count>16</comment_count>
      <attachid>25103</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-11-25 17:09:27 -0800</bug_when>
    <thetext>Comment on attachment 25103
revised patch with dhyatt&apos;s suggestion

r- because of the above comment - however the patch looks excellent in every other way so please revise and repost. Will gladly r+ a version revised as noted above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100342</commentid>
    <comment_count>17</comment_count>
      <attachid>25103</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-25 17:10:37 -0800</bug_when>
    <thetext>Comment on attachment 25103
revised patch with dhyatt&apos;s suggestion

It&apos;s kinda strange that the default/quirks style sheet methods mention nothing about HTML in their name, but maybe that&apos;s a good thing.

I wonder what sort of performance impact there is in allocating two string buffers to hold the user agent style sheets.  I can&apos;t remember if they get loaded for every page or not.

+   making our form elements match Firefoxes. If we find other needs for this

Gecko&apos;s or Firefox&apos;s


This sentence is not needed:
If we find other needs for this
+   file we should seriously consider if this is the right place of them. 

WebKit (for better or worse) does not use the TODO() system, so all of these should be changed to:
FIXME:
+   TODO(ojan): Figure out how to support legacy input rendering. 

Why is it themeWin instead of ThemeWin?  Seems our style-guide would suggest it should be the latter?

This comment is mostly unneeded, and contains the same mispelling:
+/* These styles override the default styling for HTML elements in quirks-mode
+   as defined in WebCore/css/quirks.css. So far we have used this file exclusively for
+   making our form elements match Firefoxes. If we find other needs for this
+   file we should seriously consider if this is the right place of them. */

It seems we should consider (long-term) fixing UserAgentStyleSheets.h to generate a stylesheeName() function which returns a String version.  Saves typing the same &quot;String(name, sizeof(name))&quot; code everywhere each time.

This looks fine.  If you were a commiter, I&apos;d just ask you to make the changes as you landed, but since you aren&apos;t (yet!).  Either one of us will need to do so, or you&apos;ll need to post a new patch.  I&apos;ll volunteer to make the tiny changes and land this tomorrow when I&apos;m back in the office, if I fail to find time before t-day, we&apos;ll go with the second-patch approach. :)

Thanks again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100351</commentid>
    <comment_count>18</comment_count>
      <attachid>25103</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-11-25 17:53:21 -0800</bug_when>
    <thetext>Comment on attachment 25103
revised patch with dhyatt&apos;s suggestion

Oops, meant to say r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100378</commentid>
    <comment_count>19</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2008-11-25 23:37:03 -0800</bug_when>
    <thetext>I agree with Maciej about the caller merging the rules. If you add an updated patch for that I&apos;ll take care of the details Eric noted and land it. 

Good stuff!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100426</commentid>
    <comment_count>20</comment_count>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-26 11:45:32 -0800</bug_when>
    <thetext>I have a patch that takes Maciej&apos;s and Eric&apos;s suggestions.  I&apos;ll commit it as soon as I finish running the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100429</commentid>
    <comment_count>21</comment_count>
      <attachid>25526</attachid>
    <who name="Matt Perry">mpComplete</who>
    <bug_when>2008-11-26 12:18:18 -0800</bug_when>
    <thetext>Created attachment 25526
patch with maciej&apos;s+eric&apos;s suggestions

Oops - I don&apos;t have commit access just yet (it&apos;s in the pipeline).  If anyone wants to land this, here&apos;s the patch.  Otherwise, I&apos;ll do it when I get access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100433</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-26 13:07:13 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/38788</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100442</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-26 13:49:03 -0800</bug_when>
    <thetext>Qt bustage fix:
http://trac.webkit.org/changeset/38789
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24918</attachid>
            <date>2008-11-05 14:25:40 -0800</date>
            <delta_ts>2008-11-07 15:06:07 -0800</delta_ts>
            <desc>initial pass at themable css sheets</desc>
            <filename>theme.patch</filename>
            <type>text/plain</type>
            <size>10274</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDgtMTEtMDUgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDUxCisgICAgICAg
IFJlbmRlcnRoZW1lcyBzaG91bGQgYmUgYWJsZSB0byBzdXBwbHkgYWRkaXRpb25hbCBDU1MgcnVs
ZXMgdG8gdGhlIGNvcmUKKyAgICAgICAgb25lcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VVQVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRGdWxsRGVmYXVsdFN0
eWxlKToKKyAgICAgICAgKiBjc3MvdGhlbWVXaW4uY3NzOiBBZGRlZC4KKyAgICAgICAgKiBjc3Mv
dGhlbWVXaW5RdWlya3MuY3NzOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZVVBU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cXVpcmtzVUFTdHlsZVNoZWV0KToKKwog
MjAwOC0xMS0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDM4
MTE3KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01
MDQsNyArNTA0LDcgQEAgWFBhdGhHcmFtbWFyLmNwcCA6IHhtbC9YUGF0aEdyYW1tYXIueSAkKAog
CiAjIHVzZXIgYWdlbnQgc3R5bGUgc2hlZXRzCiAKLVVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTID0g
JChXZWJDb3JlKS9jc3MvaHRtbDQuY3NzICQoV2ViQ29yZSkvY3NzL3F1aXJrcy5jc3MgJChXZWJD
b3JlKS9jc3Mvdmlldy1zb3VyY2UuY3NzICQoV2ViQ29yZSkvY3NzL3N2Zy5jc3MgCitVU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUyA9ICQoV2ViQ29yZSkvY3NzL2h0bWw0LmNzcyAkKFdlYkNvcmUpL2Nz
cy9xdWlya3MuY3NzICQoV2ViQ29yZSkvY3NzL3ZpZXctc291cmNlLmNzcyAkKFdlYkNvcmUpL2Nz
cy9zdmcuY3NzICQoV2ViQ29yZSkvY3NzL3RoZW1lV2luLmNzcyAkKFdlYkNvcmUpL2Nzcy90aGVt
ZVdpblF1aXJrcy5jc3MKIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmls
ZS1hcnJheXMucGwgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8ICRAIFVzZXJB
Z2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIApJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MiwxMyArNDcyLDE4
IEBAIENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNlbGVjdG9yKCkKICAgICBtX2tleWZyYW1l
c1J1bGVNYXAuY2xlYXIoKTsKIH0KIAotc3RhdGljIENTU1N0eWxlU2hlZXQqIHBhcnNlVUFTaGVl
dChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzaXplKQorc3RhdGljIENTU1N0eWxl
U2hlZXQqIHBhcnNlVUFTaGVldChjb25zdCBTdHJpbmcmIHN0cikKIHsKICAgICBDU1NTdHlsZVNo
ZWV0KiBzaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsgLy8gbGVh
ayB0aGUgc2hlZXQgb24gcHVycG9zZQotICAgIHNoZWV0LT5wYXJzZVN0cmluZyhTdHJpbmcoY2hh
cmFjdGVycywgc2l6ZSkpOworICAgIHNoZWV0LT5wYXJzZVN0cmluZyhzdHIpOwogICAgIHJldHVy
biBzaGVldDsKIH0KIAorc3RhdGljIENTU1N0eWxlU2hlZXQqIHBhcnNlVUFTaGVldChjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzaXplKQoreworICAgIHJldHVybiBwYXJzZVVBU2hl
ZXQoU3RyaW5nKGNoYXJhY3RlcnMsIHNpemUpKTsKK30KKwogc3RhdGljIHZvaWQgbG9hZEZ1bGxE
ZWZhdWx0U3R5bGUoKQogewogICAgIGlmIChzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCkgewpAQCAt
NTAyLDYgKzUwNywxNCBAQCBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAKICAg
ICAvLyBRdWlya3MtbW9kZSBydWxlcy4KICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KHBhcnNlVUFTaGVldChxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2Yo
cXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpLCBzY3JlZW5FdmFsKCkpOworCisgICAgLy8gVGhl
bWUtc3BlY2lmaWMgcnVsZXMuCisgICAgQ1NTU3R5bGVTaGVldCogdGhlbWVTaGVldCA9IHBhcnNl
VUFTaGVldCh0aGVtZSgpLT50aGVtZVVBU3R5bGVTaGVldCgpKTsKKyAgICBkZWZhdWx0U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KHRoZW1lU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgZGVmYXVs
dFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHRoZW1lU2hlZXQsIHByaW50RXZhbCgpKTsK
KworICAgIENTU1N0eWxlU2hlZXQqIHRoZW1lUXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQodGhl
bWUoKS0+cXVpcmtzVUFTdHlsZVNoZWV0KCkpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQodGhlbWVRdWlya3NTaGVldCwgc2NyZWVuRXZhbCgpKTsKIH0KICAgICAK
IHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQpJbmRleDogV2ViQ29yZS9jc3Mv
dGhlbWVXaW4uY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL3RoZW1lV2luLmNzcwkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL3RoZW1lV2luLmNzcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyogVGhlc2Ugc3R5bGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHN0eWxpbmcg
Zm9yIEhUTUwgZWxlbWVudHMgYXMgZGVmaW5lZCBpbgorICAgV2ViQ29yZS9jc3MvaHRtbDQuY3Nz
LiBTbyBmYXIgd2UgaGF2ZSB1c2VkIHRoaXMgZmlsZSBleGNsdXNpdmVseSBmb3IKKyAgIG1ha2lu
ZyBvdXIgZm9ybSBlbGVtZW50cyBtYXRjaCBGaXJlZm94ZXMuIElmIHdlIGZpbmQgb3RoZXIgbmVl
ZHMgZm9yIHRoaXMKKyAgIGZpbGUgd2Ugc2hvdWxkIHNlcmlvdXNseSBjb25zaWRlciBpZiB0aGlz
IGlzIHRoZSByaWdodCBwbGFjZSBvZiB0aGVtLiAqLworCitpbnB1dDpub3QoW3R5cGVdKSwgCitp
bnB1dFt0eXBlPSJ0ZXh0Il0sCitpbnB1dFt0eXBlPSJwYXNzd29yZCJdLAoraW5wdXRbdHlwZT0i
c2VhcmNoIl0geworICAgIG1hcmdpbjowOworICAgIHBhZGRpbmc6MXB4IDA7Cit9CisKK2lucHV0
W3R5cGU9ImNoZWNrYm94Il0geworICAgIG1hcmdpbjozcHggM3B4IDNweCA0cHg7Cit9CisKK2lu
cHV0W3R5cGU9InJhZGlvIl0geworICAgIG1hcmdpbjozcHggM3B4IDAgNXB4OworfQorCisvKiBO
b3Qgc3VyZSB0aGlzIGlzIHRoZSByaWdodCBjb2xvci4gI0VCRUJFNCBpcyB3aGF0IEZpcmVmb3gg
dXNlcy4KKyAgIFRPRE8ob2phbik6IEZpZ3VyZSBvdXQgaG93IHRvIHN1cHBvcnQgbGVnYWN5IGlu
cHV0IHJlbmRlcmluZy4gCisgICBUT0RPKG9qYW4pOiBBZGQgaW5wdXRbdHlwZT0iZmlsZSJdIG9u
Y2Ugd2UgZmlndXJlIG91dCBvdXIgZmlsZSBpbnB1dHMuCisgICBUT0RPKG9qYW4pOiBBZGQgaW5w
dXRbdHlwZT0iaW1hZ2UiXSBvbmNlIHdlIGZpZ3VyZSBvdXQgb3VyIGltYWdlIGlucHV0cy4KKyAg
IFRPRE8ob2phbik6IFdlIHByb2JhYmx5IGRvIHRoZSB3cm9uZyB0aGluZyBpZiB5b3UgcHV0IGFu
IGludmFsaWQgaW5wdXQgdHlwZS4KKyAgICAgICAgICAgICAgIGRvIHdlIGNhcmU/CisqLwordGV4
dGFyZWE6ZGlzYWJsZWQsCitpbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCwgCitpbnB1dFt0eXBl
PSJ0ZXh0Il06ZGlzYWJsZWQsCitpbnB1dFt0eXBlPSJwYXNzd29yZCJdOmRpc2FibGVkLAoraW5w
dXRbdHlwZT0ic2VhcmNoIl06ZGlzYWJsZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNFQkVC
RTQ7IAorfQorCisvKiBXaW5kb3dzIHNob3VsZCByZW5kZXIgaW5wdXRbdHlwZT0ic2VhcmNoIl0g
dGhlIHNhbWUgYXMgaW5wdXQgd2l0aCBubyB0eXBlLgorICAgVGhpcyBzZWFyY2ggdGhpbmcgaXMg
YW4gQXBwbGUtaXNtIHRvIGdldCBtYWMgc3R5bGUgc2VhcmNoIGlucHV0cy4gKi8KK2lucHV0W3R5
cGU9InNlYXJjaCJdIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsKKyAgICAt
d2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OworfQorCitpbnB1dFt0eXBlPSJidXR0b24i
XSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0sIGlucHV0W3R5cGU9
ImZpbGUiXTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24sIGJ1dHRvbiB7CisgICAgLyogTWF0
Y2hlcyBGaXJlZm94ICovCisgICAgcGFkZGluZzogMCA2cHg7CisgICAgbWFyZ2luOiAwOworfQor
CisvKiBXaW5kb3dzIHNlbGVjdHMgYXJlIG5vdCByb3VuZGVkLiBDdXN0b20gYm9yZGVycyBmb3Ig
dGhlbSBzaG91bGRuJ3QgYmUgZWl0aGVyLiAqLwora2V5Z2VuLCAKK3NlbGVjdCwgCitzZWxlY3Rb
c2l6ZT0iMCJdLAorc2VsZWN0W3NpemU9IjEiXSB7CisgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVz
OiAwOworICAgIG1hcmdpbjogMDsKK30KKwordGV4dGFyZWEgeworICBmb250LWZhbWlseTogbW9u
b3NwYWNlOworICBtYXJnaW46IDFweCAwOworCisgIC8qIE1hdGNoZXMgSUUgKi8KKyAgcGFkZGlu
ZzogMnB4OworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9jc3MvdGhlbWVXaW4uY3Nz
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUv
Y3NzL3RoZW1lV2luUXVpcmtzLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy90aGVtZVdp
blF1aXJrcy5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy90aGVtZVdpblF1aXJrcy5j
c3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qIFRoZXNlIHN0eWxlcyBvdmVycmlk
ZSB0aGUgZGVmYXVsdCBzdHlsaW5nIGZvciBIVE1MIGVsZW1lbnRzIGluIHF1aXJrcy1tb2RlCisg
ICBhcyBkZWZpbmVkIGluIFdlYkNvcmUvY3NzL3F1aXJrcy5jc3MuIFNvIGZhciB3ZSBoYXZlIHVz
ZWQgdGhpcyBmaWxlIGV4Y2x1c2l2ZWx5IGZvcgorICAgbWFraW5nIG91ciBmb3JtIGVsZW1lbnRz
IG1hdGNoIEZpcmVmb3hlcy4gSWYgd2UgZmluZCBvdGhlciBuZWVkcyBmb3IgdGhpcworICAgZmls
ZSB3ZSBzaG91bGQgc2VyaW91c2x5IGNvbnNpZGVyIGlmIHRoaXMgaXMgdGhlIHJpZ2h0IHBsYWNl
IG9mIHRoZW0uICovCisKK3RleHRhcmVhIHsKKyAgLyogTWF0Y2hlcyBJRSdzIHRleHQgb2Zmc2V0
cyBpbiBxdWlya3Ntb2RlIChjYXVzZXMgdGV4dCB0byB3cmFwIHRoZSBzYW1lIGFzIElFKS4gKi8K
KyAgcGFkZGluZzogMnB4IDAgMCAycHg7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3Jl
L2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUK
ICAgKyAqCgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAzODExNykKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcmVtYWluaW5nIG1ldGhvZHMgc2hvdWxkIGJl
IGltcGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBwb3J0aW9uIG9mIHRoZSB0aGVt
ZSwgZS5nLiwKICAgICAvLyBSZW5kZXJUaGVtZU1hYy5jcHAgZm9yIE1hYyBPUyBYLgogCisgICAg
Ly8gVGhlc2UgbWV0aG9kcyByZXR1cm4gdGhlIHRoZW1lLXNwZWNpZmljIG92ZXJyaWRlcyBmb3Ig
dGhlIGRlZmF1bHQgQ1NTLgorICAgIHZpcnR1YWwgU3RyaW5nIHRoZW1lVUFTdHlsZVNoZWV0KCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBxdWlya3NVQVN0
eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorCiAgICAgLy8gQSBtZXRob2Qg
dG8gb2J0YWluIHRoZSBiYXNlbGluZSBwb3NpdGlvbiBmb3IgYSAibGVhZiIgY29udHJvbC4gIFRo
aXMgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYSBiYXNlbGluZQogICAgIC8vIHBvc2l0aW9uIGNhbm5v
dCBiZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBjb250ZW50LiBDaGVja2JveGVzIGFu
ZCByYWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgogICAgIC8vIGNvbnRyb2xzIHRoYXQgbmVl
ZCB0byBkbyB0aGlzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24973</attachid>
            <date>2008-11-07 15:06:07 -0800</date>
            <delta_ts>2008-11-07 15:59:31 -0800</delta_ts>
            <desc>revised patch that merges with the Qt port&apos;s approach</desc>
            <filename>theme2.patch</filename>
            <type>text/plain</type>
            <size>13440</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODIzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDgtMTEtMDcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDUxCisgICAgICAg
IFJlbmRlcnRoZW1lcyBzaG91bGQgYmUgYWJsZSB0byBzdXBwbHkgYWRkaXRpb25hbCBDU1MgcnVs
ZXMgdG8gdGhlIGNvcmUKKyAgICAgICAgb25lcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VVQVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRGdWxsRGVmYXVsdFN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAg
ICAqIGNzcy90aGVtZVdpbi5jc3M6IEFkZGVkLgorICAgICAgICAqIGNzcy90aGVtZVdpblF1aXJr
cy5jc3M6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6ZGVmYXVsdFVBU3R5bGVTaGVldCk6Cisg
ICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGVmYXVs
dFVBU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cXVpcmtzVUFT
dHlsZVNoZWV0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKwogMjAwOC0x
MS0wNyAgQWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIHdp
dGggYmxlZWRpbmcgZWRnZSBHVEsrIHZlcnNpb25zLiBHVEsrIGFuZCBvdGhlciBsaWJyYXJpZXMK
SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsNyArNTA0LDcgQEAgWFBhdGhHcmFt
bWFyLmNwcCA6IHhtbC9YUGF0aEdyYW1tYXIueSAkKAogCiAjIHVzZXIgYWdlbnQgc3R5bGUgc2hl
ZXRzCiAKLVVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTID0gJChXZWJDb3JlKS9jc3MvaHRtbDQuY3Nz
ICQoV2ViQ29yZSkvY3NzL3F1aXJrcy5jc3MgJChXZWJDb3JlKS9jc3Mvdmlldy1zb3VyY2UuY3Nz
ICQoV2ViQ29yZSkvY3NzL3N2Zy5jc3MgCitVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9ICQoV2Vi
Q29yZSkvY3NzL2h0bWw0LmNzcyAkKFdlYkNvcmUpL2Nzcy9xdWlya3MuY3NzICQoV2ViQ29yZSkv
Y3NzL3ZpZXctc291cmNlLmNzcyAkKFdlYkNvcmUpL2Nzcy9zdmcuY3NzICQoV2ViQ29yZSkvY3Nz
L3RoZW1lV2luLmNzcyAkKFdlYkNvcmUpL2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKIFVzZXJBZ2Vu
dFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FHRU5U
X1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAg
JChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3MiwxMyArNDcyLDE4IEBAIENTU1N0eWxlU2VsZWN0b3I6On5D
U1NTdHlsZVNlbGVjdG9yKCkKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuY2xlYXIoKTsKIH0KIAot
c3RhdGljIENTU1N0eWxlU2hlZXQqIHBhcnNlVUFTaGVldChjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBzaXplKQorc3RhdGljIENTU1N0eWxlU2hlZXQqIHBhcnNlVUFTaGVldChjb25z
dCBTdHJpbmcmIHN0cikKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzaGVldCA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsgLy8gbGVhayB0aGUgc2hlZXQgb24gcHVycG9zZQot
ICAgIHNoZWV0LT5wYXJzZVN0cmluZyhTdHJpbmcoY2hhcmFjdGVycywgc2l6ZSkpOworICAgIHNo
ZWV0LT5wYXJzZVN0cmluZyhzdHIpOwogICAgIHJldHVybiBzaGVldDsKIH0KIAorc3RhdGljIENT
U1N0eWxlU2hlZXQqIHBhcnNlVUFTaGVldChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBzaXplKQoreworICAgIHJldHVybiBwYXJzZVVBU2hlZXQoU3RyaW5nKGNoYXJhY3RlcnMsIHNp
emUpKTsKK30KKwogc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogewogICAgIGlm
IChzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCkgewpAQCAtNDk1LDEzICs1MDAsMTIgQEAgc3RhdGlj
IHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAgIH0KIAogICAgIC8vIFN0cmljdC1tb2Rl
IHJ1bGVzLgotICAgIENTU1N0eWxlU2hlZXQqIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldCho
dG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQp
KTsKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoZGVmYXVsdFNoZWV0
KTsKKyAgICBDU1NTdHlsZVNoZWV0KiBkZWZhdWx0U2hlZXQgPSBwYXJzZVVBU2hlZXQodGhlbWUo
KS0+ZGVmYXVsdFVBU3R5bGVTaGVldCgpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KGRlZmF1bHRTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICBkZWZhdWx0UHJpbnRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBwcmludEV2YWwoKSk7CiAKICAgICAv
LyBRdWlya3MtbW9kZSBydWxlcy4KLSAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KHBhcnNlVUFTaGVldChxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVp
cmtzVXNlckFnZW50U3R5bGVTaGVldCkpLCBzY3JlZW5FdmFsKCkpOworICAgIGRlZmF1bHRRdWly
a3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFyc2VVQVNoZWV0KHRoZW1lKCktPnF1aXJrc1VB
U3R5bGVTaGVldCgpKSwgc2NyZWVuRXZhbCgpKTsKIH0KICAgICAKIHN0YXRpYyB2b2lkIGxvYWRT
aW1wbGVEZWZhdWx0U3R5bGUoKQpAQCAtNTE0LDcgKzUxOCw2IEBAIHN0YXRpYyB2b2lkIGxvYWRT
aW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG5ldyBDU1NSdWxl
U2V0OwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoc2ltcGxl
VXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsK
LSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2ltcGxlRGVm
YXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgCiAgICAgLy8gTm8gbmVlZCB0byBp
bml0aWFsaXplIHF1aXJrcyBzaGVldCB5ZXQgYXMgdGhlcmUgYXJlIG5vIHF1aXJrIHJ1bGVzIGZv
ciBlbGVtZW50cyBhbGxvd2VkIGluIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgpJbmRleDogV2ViQ29y
ZS9jc3MvdGhlbWVXaW4uY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL3RoZW1lV2luLmNz
cwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL3RoZW1lV2luLmNzcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyogVGhlc2Ugc3R5bGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHN0
eWxpbmcgZm9yIEhUTUwgZWxlbWVudHMgYXMgZGVmaW5lZCBpbgorICAgV2ViQ29yZS9jc3MvaHRt
bDQuY3NzLiBTbyBmYXIgd2UgaGF2ZSB1c2VkIHRoaXMgZmlsZSBleGNsdXNpdmVseSBmb3IKKyAg
IG1ha2luZyBvdXIgZm9ybSBlbGVtZW50cyBtYXRjaCBGaXJlZm94ZXMuIElmIHdlIGZpbmQgb3Ro
ZXIgbmVlZHMgZm9yIHRoaXMKKyAgIGZpbGUgd2Ugc2hvdWxkIHNlcmlvdXNseSBjb25zaWRlciBp
ZiB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSBvZiB0aGVtLiAqLworCitpbnB1dDpub3QoW3R5cGVd
KSwgCitpbnB1dFt0eXBlPSJ0ZXh0Il0sCitpbnB1dFt0eXBlPSJwYXNzd29yZCJdLAoraW5wdXRb
dHlwZT0ic2VhcmNoIl0geworICAgIG1hcmdpbjowOworICAgIHBhZGRpbmc6MXB4IDA7Cit9CisK
K2lucHV0W3R5cGU9ImNoZWNrYm94Il0geworICAgIG1hcmdpbjozcHggM3B4IDNweCA0cHg7Cit9
CisKK2lucHV0W3R5cGU9InJhZGlvIl0geworICAgIG1hcmdpbjozcHggM3B4IDAgNXB4OworfQor
CisvKiBOb3Qgc3VyZSB0aGlzIGlzIHRoZSByaWdodCBjb2xvci4gI0VCRUJFNCBpcyB3aGF0IEZp
cmVmb3ggdXNlcy4KKyAgIFRPRE8ob2phbik6IEZpZ3VyZSBvdXQgaG93IHRvIHN1cHBvcnQgbGVn
YWN5IGlucHV0IHJlbmRlcmluZy4gCisgICBUT0RPKG9qYW4pOiBBZGQgaW5wdXRbdHlwZT0iZmls
ZSJdIG9uY2Ugd2UgZmlndXJlIG91dCBvdXIgZmlsZSBpbnB1dHMuCisgICBUT0RPKG9qYW4pOiBB
ZGQgaW5wdXRbdHlwZT0iaW1hZ2UiXSBvbmNlIHdlIGZpZ3VyZSBvdXQgb3VyIGltYWdlIGlucHV0
cy4KKyAgIFRPRE8ob2phbik6IFdlIHByb2JhYmx5IGRvIHRoZSB3cm9uZyB0aGluZyBpZiB5b3Ug
cHV0IGFuIGludmFsaWQgaW5wdXQgdHlwZS4KKyAgICAgICAgICAgICAgIGRvIHdlIGNhcmU/Cisq
LwordGV4dGFyZWE6ZGlzYWJsZWQsCitpbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCwgCitpbnB1
dFt0eXBlPSJ0ZXh0Il06ZGlzYWJsZWQsCitpbnB1dFt0eXBlPSJwYXNzd29yZCJdOmRpc2FibGVk
LAoraW5wdXRbdHlwZT0ic2VhcmNoIl06ZGlzYWJsZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6
ICNFQkVCRTQ7IAorfQorCisvKiBXaW5kb3dzIHNob3VsZCByZW5kZXIgaW5wdXRbdHlwZT0ic2Vh
cmNoIl0gdGhlIHNhbWUgYXMgaW5wdXQgd2l0aCBubyB0eXBlLgorICAgVGhpcyBzZWFyY2ggdGhp
bmcgaXMgYW4gQXBwbGUtaXNtIHRvIGdldCBtYWMgc3R5bGUgc2VhcmNoIGlucHV0cy4gKi8KK2lu
cHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsK
KyAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OworfQorCitpbnB1dFt0eXBlPSJi
dXR0b24iXSwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9InJlc2V0Il0sIGlucHV0
W3R5cGU9ImZpbGUiXTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24sIGJ1dHRvbiB7CisgICAg
LyogTWF0Y2hlcyBGaXJlZm94ICovCisgICAgcGFkZGluZzogMCA2cHg7CisgICAgbWFyZ2luOiAw
OworfQorCisvKiBXaW5kb3dzIHNlbGVjdHMgYXJlIG5vdCByb3VuZGVkLiBDdXN0b20gYm9yZGVy
cyBmb3IgdGhlbSBzaG91bGRuJ3QgYmUgZWl0aGVyLiAqLwora2V5Z2VuLCAKK3NlbGVjdCwgCitz
ZWxlY3Rbc2l6ZT0iMCJdLAorc2VsZWN0W3NpemU9IjEiXSB7CisgICAgLXdlYmtpdC1ib3JkZXIt
cmFkaXVzOiAwOworICAgIG1hcmdpbjogMDsKK30KKwordGV4dGFyZWEgeworICBmb250LWZhbWls
eTogbW9ub3NwYWNlOworICBtYXJnaW46IDFweCAwOworCisgIC8qIE1hdGNoZXMgSUUgKi8KKyAg
cGFkZGluZzogMnB4OworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9jc3MvdGhlbWVX
aW4uY3NzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdl
YkNvcmUvY3NzL3RoZW1lV2luUXVpcmtzLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy90
aGVtZVdpblF1aXJrcy5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy90aGVtZVdpblF1
aXJrcy5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qIFRoZXNlIHN0eWxlcyBv
dmVycmlkZSB0aGUgZGVmYXVsdCBzdHlsaW5nIGZvciBIVE1MIGVsZW1lbnRzIGluIHF1aXJrcy1t
b2RlCisgICBhcyBkZWZpbmVkIGluIFdlYkNvcmUvY3NzL3F1aXJrcy5jc3MuIFNvIGZhciB3ZSBo
YXZlIHVzZWQgdGhpcyBmaWxlIGV4Y2x1c2l2ZWx5IGZvcgorICAgbWFraW5nIG91ciBmb3JtIGVs
ZW1lbnRzIG1hdGNoIEZpcmVmb3hlcy4gSWYgd2UgZmluZCBvdGhlciBuZWVkcyBmb3IgdGhpcwor
ICAgZmlsZSB3ZSBzaG91bGQgc2VyaW91c2x5IGNvbnNpZGVyIGlmIHRoaXMgaXMgdGhlIHJpZ2h0
IHBsYWNlIG9mIHRoZW0uICovCisKK3RleHRhcmVhIHsKKyAgLyogTWF0Y2hlcyBJRSdzIHRleHQg
b2Zmc2V0cyBpbiBxdWlya3Ntb2RlIChjYXVzZXMgdGV4dCB0byB3cmFwIHRoZSBzYW1lIGFzIElF
KS4gKi8KKyAgcGFkZGluZzogMnB4IDAgMCAycHg7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBX
ZWJDb3JlL2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1
dGFibGUKICAgKyAqCgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCShy
ZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc1NCwxMyArNzU0LDE0IEBAIENvbnRyb2xQYXJ0IFJlbmRlclRo
ZW1lUXQ6OmFwcGx5VGhlbWUoUVMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFJlbmRl
clRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkKK1N0
cmluZyBSZW5kZXJUaGVtZVF0OjpkZWZhdWx0VUFTdHlsZVNoZWV0KCkgY29uc3QKIHsKICAgICBR
RmlsZSBwbGF0Zm9ybVN0eWxlU2hlZXQoIjovd2ViY29yZS9yZXNvdXJjZXMvaHRtbDQtYWRqdXN0
bWVudHMtcXQuY3NzIik7CiAgICAgaWYgKHBsYXRmb3JtU3R5bGVTaGVldC5vcGVuKFFGaWxlOjpS
ZWFkT25seSkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBzaGVldERhdGEgPSBwbGF0Zm9ybVN0eWxl
U2hlZXQucmVhZEFsbCgpOwotICAgICAgICBzdHlsZS0+cGFyc2VTdHJpbmcoUVN0cmluZzo6ZnJv
bVV0Zjgoc2hlZXREYXRhLmNvbnN0RGF0YSgpLCBzaGVldERhdGEubGVuZ3RoKCkpKTsKKyAgICAg
ICAgcmV0dXJuIFFTdHJpbmc6OmZyb21VdGY4KHNoZWV0RGF0YS5jb25zdERhdGEoKSwgc2hlZXRE
YXRhLmxlbmd0aCgpKTsKICAgICB9CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpkZWZhdWx0VUFT
dHlsZVNoZWV0KCk7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0
L1JlbmRlclRoZW1lUXQuaAkocmV2aXNpb24gMzgxMTcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0
L1JlbmRlclRoZW1lUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6
CiAgICAgUmVuZGVyVGhlbWVRdCgpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lUXQoKTsKIAor
ICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1bHRVQVN0eWxlU2hlZXQoKSBjb25zdDsKKwogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkg
Y29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDM4MTE3
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNlbGVj
dGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJB
Z2VudFN0eWxlU2hlZXRzLmgiCiAKIC8vIFRoZSBtZXRob2RzIGluIHRoaXMgZmlsZSBhcmUgc2hh
cmVkIGJ5IGFsbCB0aGVtZXMgb24gZXZlcnkgcGxhdGZvcm0uCiAKQEAgLTE5OCwxMSArMTk5LDE1
IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2UKICAgICB9CiB9CiAK
LSNpZiAhUExBVEZPUk0oUVQpCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVT
aGVldChDU1NTdHlsZVNoZWV0KikKK1N0cmluZyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFVBU3R5bGVT
aGVldCgpIGNvbnN0CiB7CisgICAgcmV0dXJuIFN0cmluZyhodG1sNFVzZXJBZ2VudFN0eWxlU2hl
ZXQsIHNpemVvZihodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKK30KKworU3RyaW5nIFJlbmRl
clRoZW1lOjpxdWlya3NVQVN0eWxlU2hlZXQoKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmco
cXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hl
ZXQpKTsKIH0KLSNlbmRpZgogCiBib29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCiB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgJKHJldmlzaW9uIDM4MTE3KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjQs
NiArNjQsMTEgQEAgcHVibGljOgogICAgIC8vIFRoZSByZW1haW5pbmcgbWV0aG9kcyBzaG91bGQg
YmUgaW1wbGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHBvcnRpb24gb2YgdGhlIHRo
ZW1lLCBlLmcuLAogICAgIC8vIFJlbmRlclRoZW1lTWFjLmNwcCBmb3IgTWFjIE9TIFguCiAKKyAg
ICAvLyBUaGVzZSBtZXRob2RzIHJldHVybiB0aGUgdGhlbWUtc3BlY2lmaWMgdmVyc2lvbnMgb2Yg
dGhlIFVBIHN0eWxlCisgICAgLy8gc2hlZXRzLgorICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1bHRV
QVN0eWxlU2hlZXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBxdWlya3NVQVN0eWxlU2hl
ZXQoKSBjb25zdDsKKwogICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9z
aXRpb24gZm9yIGEgImxlYWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2VkIGlmIGEg
YmFzZWxpbmUKICAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBleGFtaW5p
bmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhhbXBs
ZXMgb2YKICAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24974</attachid>
            <date>2008-11-07 15:59:31 -0800</date>
            <delta_ts>2008-11-10 16:41:29 -0800</delta_ts>
            <desc>patch that uses Qt&apos;s approach for Win</desc>
            <filename>theme3.patch</filename>
            <type>text/plain</type>
            <size>14932</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODIzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDgtMTEtMDcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDUxCisgICAgICAg
IFJlbmRlcnRoZW1lcyBzaG91bGQgYmUgYWJsZSB0byBzdXBwbHkgYWRkaXRpb25hbCBDU1MgcnVs
ZXMgdG8gdGhlIGNvcmUKKyAgICAgICAgb25lcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFNpbXBs
ZURlZmF1bHRTdHlsZSk6CisgICAgICAgICogY3NzL3RoZW1lV2luLmNzczogQWRkZWQuCisgICAg
ICAgICogY3NzL3RoZW1lV2luUXVpcmtzLmNzczogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
cXQvUmVuZGVyVGhlbWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0Ojph
ZGp1c3REZWZhdWx0U3R5bGVTaGVldCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhl
bWVRdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OmFkanVzdFF1aXJrc1N0eWxlU2hlZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6YWRqdXN0RGVmYXVs
dFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFF1
aXJrc1N0eWxlU2hlZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oOgor
CiAyMDA4LTExLTA3ICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBGaXgg
YnVpbGQgd2l0aCBibGVlZGluZyBlZGdlIEdUSysgdmVyc2lvbnMuIEdUSysgYW5kIG90aGVyIGxp
YnJhcmllcwpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMzgxMTcpCisrKyBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUwNCw3ICs1MDQsNyBAQCBY
UGF0aEdyYW1tYXIuY3BwIDogeG1sL1hQYXRoR3JhbW1hci55ICQoCiAKICMgdXNlciBhZ2VudCBz
dHlsZSBzaGVldHMKIAotVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSAkKFdlYkNvcmUpL2Nzcy9o
dG1sNC5jc3MgJChXZWJDb3JlKS9jc3MvcXVpcmtzLmNzcyAkKFdlYkNvcmUpL2Nzcy92aWV3LXNv
dXJjZS5jc3MgJChXZWJDb3JlKS9jc3Mvc3ZnLmNzcyAKK1VTRVJfQUdFTlRfU1RZTEVfU0hFRVRT
ID0gJChXZWJDb3JlKS9jc3MvaHRtbDQuY3NzICQoV2ViQ29yZSkvY3NzL3F1aXJrcy5jc3MgJChX
ZWJDb3JlKS9jc3Mvdmlldy1zb3VyY2UuY3NzICQoV2ViQ29yZSkvY3NzL3N2Zy5jc3MgJChXZWJD
b3JlKS9jc3MvdGhlbWVXaW4uY3NzICQoV2ViQ29yZSkvY3NzL3RoZW1lV2luUXVpcmtzLmNzcwog
VXNlckFnZW50U3R5bGVTaGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCAkKFVT
RVJfQUdFTlRfU1RZTEVfU0hFRVRTKQogCXBlcmwgJDwgJEAgVXNlckFnZW50U3R5bGVTaGVldHNE
YXRhLmNwcCAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKQogCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAkocmV2aXNpb24gMzgxMTcpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk2LDEyICs0OTYsMTQgQEAgc3RhdGljIHZvaWQg
bG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCiAgICAg
Q1NTU3R5bGVTaGVldCogZGVmYXVsdFNoZWV0ID0gcGFyc2VVQVNoZWV0KGh0bWw0VXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCkpOwotICAgIFJlbmRl
clRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChkZWZhdWx0U2hlZXQpOworICAgIHRoZW1l
KCktPmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KGRlZmF1bHRTaGVldCk7CiAgICAgZGVmYXVsdFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAg
ZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRF
dmFsKCkpOwogCiAgICAgLy8gUXVpcmtzLW1vZGUgcnVsZXMuCi0gICAgZGVmYXVsdFF1aXJrc1N0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYXJzZVVBU2hlZXQocXVpcmtzVXNlckFnZW50U3R5bGVT
aGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSwgc2NyZWVuRXZhbCgpKTsK
KyAgICBDU1NTdHlsZVNoZWV0KiBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NVc2Vy
QWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpOworICAg
IHRoZW1lKCktPmFkanVzdFF1aXJrc1N0eWxlU2hlZXQocXVpcmtzU2hlZXQpOworICAgIGRlZmF1
bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwo
KSk7CiB9CiAgICAgCiBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKQEAgLTUx
NCw3ICs1MTYsNiBAQCBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKICAgICBk
ZWZhdWx0UXVpcmtzU3R5bGUgPSBuZXcgQ1NTUnVsZVNldDsKIAogICAgIHNpbXBsZURlZmF1bHRT
dHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQsIHN0cmxl
bihzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Ci0gICAgUmVuZGVyVGhlbWU6OmFkanVzdERl
ZmF1bHRTdHlsZVNoZWV0KHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKICAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFs
KCkpOwogICAgIAogICAgIC8vIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBxdWlya3Mgc2hlZXQgeWV0
IGFzIHRoZXJlIGFyZSBubyBxdWlyayBydWxlcyBmb3IgZWxlbWVudHMgYWxsb3dlZCBpbiBzaW1w
bGUgZGVmYXVsdCBzdHlsZS4KSW5kZXg6IFdlYkNvcmUvY3NzL3RoZW1lV2luLmNzcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy90aGVtZVdpbi5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2Nzcy90aGVtZVdpbi5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qIFRoZXNl
IHN0eWxlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBzdHlsaW5nIGZvciBIVE1MIGVsZW1lbnRzIGFz
IGRlZmluZWQgaW4KKyAgIFdlYkNvcmUvY3NzL2h0bWw0LmNzcy4gU28gZmFyIHdlIGhhdmUgdXNl
ZCB0aGlzIGZpbGUgZXhjbHVzaXZlbHkgZm9yCisgICBtYWtpbmcgb3VyIGZvcm0gZWxlbWVudHMg
bWF0Y2ggRmlyZWZveGVzLiBJZiB3ZSBmaW5kIG90aGVyIG5lZWRzIGZvciB0aGlzCisgICBmaWxl
IHdlIHNob3VsZCBzZXJpb3VzbHkgY29uc2lkZXIgaWYgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2Ug
b2YgdGhlbS4gKi8KKworaW5wdXQ6bm90KFt0eXBlXSksIAoraW5wdXRbdHlwZT0idGV4dCJdLAor
aW5wdXRbdHlwZT0icGFzc3dvcmQiXSwKK2lucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICBtYXJn
aW46MDsKKyAgICBwYWRkaW5nOjFweCAwOworfQorCitpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsK
KyAgICBtYXJnaW46M3B4IDNweCAzcHggNHB4OworfQorCitpbnB1dFt0eXBlPSJyYWRpbyJdIHsK
KyAgICBtYXJnaW46M3B4IDNweCAwIDVweDsKK30KKworLyogTm90IHN1cmUgdGhpcyBpcyB0aGUg
cmlnaHQgY29sb3IuICNFQkVCRTQgaXMgd2hhdCBGaXJlZm94IHVzZXMuCisgICBUT0RPKG9qYW4p
OiBGaWd1cmUgb3V0IGhvdyB0byBzdXBwb3J0IGxlZ2FjeSBpbnB1dCByZW5kZXJpbmcuIAorICAg
VE9ETyhvamFuKTogQWRkIGlucHV0W3R5cGU9ImZpbGUiXSBvbmNlIHdlIGZpZ3VyZSBvdXQgb3Vy
IGZpbGUgaW5wdXRzLgorICAgVE9ETyhvamFuKTogQWRkIGlucHV0W3R5cGU9ImltYWdlIl0gb25j
ZSB3ZSBmaWd1cmUgb3V0IG91ciBpbWFnZSBpbnB1dHMuCisgICBUT0RPKG9qYW4pOiBXZSBwcm9i
YWJseSBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgeW91IHB1dCBhbiBpbnZhbGlkIGlucHV0IHR5cGUu
CisgICAgICAgICAgICAgICBkbyB3ZSBjYXJlPworKi8KK3RleHRhcmVhOmRpc2FibGVkLAoraW5w
dXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsIAoraW5wdXRbdHlwZT0idGV4dCJdOmRpc2FibGVkLAor
aW5wdXRbdHlwZT0icGFzc3dvcmQiXTpkaXNhYmxlZCwKK2lucHV0W3R5cGU9InNlYXJjaCJdOmRp
c2FibGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUJFQkU0OyAKK30KKworLyogV2luZG93
cyBzaG91bGQgcmVuZGVyIGlucHV0W3R5cGU9InNlYXJjaCJdIHRoZSBzYW1lIGFzIGlucHV0IHdp
dGggbm8gdHlwZS4KKyAgIFRoaXMgc2VhcmNoIHRoaW5nIGlzIGFuIEFwcGxlLWlzbSB0byBnZXQg
bWFjIHN0eWxlIHNlYXJjaCBpbnB1dHMuICovCitpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CisgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBj
b250ZW50LWJveDsKK30KKworaW5wdXRbdHlwZT0iYnV0dG9uIl0sIGlucHV0W3R5cGU9InN1Ym1p
dCJdLCBpbnB1dFt0eXBlPSJyZXNldCJdLCBpbnB1dFt0eXBlPSJmaWxlIl06Oi13ZWJraXQtZmls
ZS11cGxvYWQtYnV0dG9uLCBidXR0b24geworICAgIC8qIE1hdGNoZXMgRmlyZWZveCAqLworICAg
IHBhZGRpbmc6IDAgNnB4OworICAgIG1hcmdpbjogMDsKK30KKworLyogV2luZG93cyBzZWxlY3Rz
IGFyZSBub3Qgcm91bmRlZC4gQ3VzdG9tIGJvcmRlcnMgZm9yIHRoZW0gc2hvdWxkbid0IGJlIGVp
dGhlci4gKi8KK2tleWdlbiwgCitzZWxlY3QsIAorc2VsZWN0W3NpemU9IjAiXSwKK3NlbGVjdFtz
aXplPSIxIl0geworICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKKyAgICBtYXJnaW46IDA7
Cit9CisKK3RleHRhcmVhIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgbWFyZ2luOiAx
cHggMDsKKworICAvKiBNYXRjaGVzIElFICovCisgIHBhZGRpbmc6IDJweDsKK30KClByb3BlcnR5
IGNoYW5nZXMgb246IFdlYkNvcmUvY3NzL3RoZW1lV2luLmNzcwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJDb3JlL2Nzcy90aGVtZVdpblF1aXJrcy5j
c3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvdGhlbWVXaW5RdWlya3MuY3NzCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9jc3MvdGhlbWVXaW5RdWlya3MuY3NzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvKiBUaGVzZSBzdHlsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgc3R5bGlu
ZyBmb3IgSFRNTCBlbGVtZW50cyBpbiBxdWlya3MtbW9kZQorICAgYXMgZGVmaW5lZCBpbiBXZWJD
b3JlL2Nzcy9xdWlya3MuY3NzLiBTbyBmYXIgd2UgaGF2ZSB1c2VkIHRoaXMgZmlsZSBleGNsdXNp
dmVseSBmb3IKKyAgIG1ha2luZyBvdXIgZm9ybSBlbGVtZW50cyBtYXRjaCBGaXJlZm94ZXMuIElm
IHdlIGZpbmQgb3RoZXIgbmVlZHMgZm9yIHRoaXMKKyAgIGZpbGUgd2Ugc2hvdWxkIHNlcmlvdXNs
eSBjb25zaWRlciBpZiB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSBvZiB0aGVtLiAqLworCit0ZXh0
YXJlYSB7CisgIC8qIE1hdGNoZXMgSUUncyB0ZXh0IG9mZnNldHMgaW4gcXVpcmtzbW9kZSAoY2F1
c2VzIHRleHQgdG8gd3JhcCB0aGUgc2FtZSBhcyBJRSkuICovCisgIHBhZGRpbmc6IDJweCAwIDAg
MnB4OworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9jc3MvdGhlbWVXaW5RdWlya3Mu
Y3NzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAkocmV2aXNpb24gMzgxMTcpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTQsNyAr
NzU0LDcgQEAgQ29udHJvbFBhcnQgUmVuZGVyVGhlbWVRdDo6YXBwbHlUaGVtZShRUwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNo
ZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlKQordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3REZWZh
dWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkKIHsKICAgICBRRmlsZSBwbGF0Zm9y
bVN0eWxlU2hlZXQoIjovd2ViY29yZS9yZXNvdXJjZXMvaHRtbDQtYWRqdXN0bWVudHMtcXQuY3Nz
Iik7CiAgICAgaWYgKHBsYXRmb3JtU3R5bGVTaGVldC5vcGVuKFFGaWxlOjpSZWFkT25seSkpIHsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCShyZXZpc2lvbiAzODExNykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUaGVtZVF0KCk7CiAgICAgdmlydHVhbCB+
UmVuZGVyVGhlbWVRdCgpOwogCisgICAgdmlydHVhbCB2b2lkIGFkanVzdERlZmF1bHRTdHlsZVNo
ZWV0KENTU1N0eWxlU2hlZXQqKTsKKwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNv
bnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXNS
aW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMTIgKzE5OCw2IEBAIHZvaWQgUmVu
ZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2UKICAgICB9CiB9CiAKLSNpZiAhUExBVEZP
Uk0oUVQpCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHls
ZVNoZWV0KikKLXsKLX0KLSNlbmRpZgotCiBib29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgLy8gSWYgcGFpbnRpbmcgaXMgZGlzYWJsZWQsIGJ1dCB3ZSBh
cmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywgdGhlbiBqdXN0IGJhaWwuCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmgJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCosICBib29sIFVBSGFzQXBwZWFyYW5jZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEJvcmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yKTsKIAotICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIENTU1N0eWxl
U2VsZWN0b3I6OmxvYWREZWZhdWx0U3R5bGUoKSwgdG8gbGV0IGVhY2ggcGxhdGZvcm0gYWRqdXN0
Ci0gICAgLy8gdGhlIGRlZmF1bHQgQ1NTIHJ1bGVzIGluIGh0bWw0LmNzcy4KLSAgICBzdGF0aWMg
dm9pZCBhZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0Kik7Ci0KICAgICAvLyBU
aGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gcGFpbnQgdGhlIHdpZGdldCBhcyBhIGJhY2tncm91bmQg
b2YgdGhlIFJlbmRlck9iamVjdC4gIEEgd2lkZ2V0J3MgZm9yZWdyb3VuZCwgZS5nLiwgdGhlCiAg
ICAgLy8gdGV4dCBvZiBhIGJ1dHRvbiwgaXMgYWx3YXlzIHJlbmRlcmVkIGJ5IHRoZSBlbmdpbmUg
aXRzZWxmLiAgVGhlIGJvb2xlYW4gcmV0dXJuIHZhbHVlIGluZGljYXRlcwogICAgIC8vIHdoZXRo
ZXIgdGhlIENTUyBib3JkZXIvYmFja2dyb3VuZCBzaG91bGQgYWxzbyBiZSBwYWludGVkLgpAQCAt
NjQsNiArNjAsMTEgQEAgcHVibGljOgogICAgIC8vIFRoZSByZW1haW5pbmcgbWV0aG9kcyBzaG91
bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHBvcnRpb24gb2YgdGhl
IHRoZW1lLCBlLmcuLAogICAgIC8vIFJlbmRlclRoZW1lTWFjLmNwcCBmb3IgTWFjIE9TIFguCiAK
KyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgb25jZSwgZnJvbSBDU1NTdHlsZVNlbGVj
dG9yOjpsb2FkRGVmYXVsdFN0eWxlKCksIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVzdAorICAg
IC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sNC5jc3Mgb3IgcXVpcmtzLmNzcy4KKyAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopIHt9
CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFF1aXJrc1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCop
IHt9CisKICAgICAvLyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZv
ciBhICJsZWFmIiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5l
CiAgICAgLy8gcG9zaXRpb24gY2Fubm90IGJlIGRldGVybWluZWQgYnkgZXhhbWluaW5nIGNoaWxk
IGNvbnRlbnQuIENoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgYXJlIGV4YW1wbGVzIG9mCiAg
ICAgLy8gY29udHJvbHMgdGhhdCBuZWVkIHRvIGRvIHRoaXMuCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVXaW4uY3BwCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lV2luLmgiCiAKKyNpbmNsdWRl
ICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0yOSw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2lu
Y2x1ZGUgIlNvZnRMaW5raW5nLmgiCisjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIK
IAogI2luY2x1ZGUgPHRjaGFyLmg+CiAKQEAgLTE3OCw2ICsxODAsMTYgQEAgdm9pZCBSZW5kZXJU
aGVtZVdpbjo6dGhlbWVDaGFuZ2VkKCkKICAgICBjbG9zZSgpOwogfQogCit2b2lkIFJlbmRlclRo
ZW1lV2luOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkKK3sK
KyAgICBzdHlsZS0+cGFyc2VTdHJpbmcoU3RyaW5nKHRoZW1lV2luVXNlckFnZW50U3R5bGVTaGVl
dCwgc2l6ZW9mKHRoZW1lV2luVXNlckFnZW50U3R5bGVTaGVldCkpKTsKK30KKwordm9pZCBSZW5k
ZXJUaGVtZVdpbjo6YWRqdXN0UXVpcmtzU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkK
K3sKKyAgICBzdHlsZS0+cGFyc2VTdHJpbmcoU3RyaW5nKHRoZW1lV2luUXVpcmtzVXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpKTsK
K30KKwogYm9vbCBSZW5kZXJUaGVtZVdpbjo6c3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHls
ZSopIGNvbnN0CiB7CiAgICAgLy8gVGhlIENsYXNzaWMvMmsgbG9vayBoYXMgbm8gaG92ZXIgZWZm
ZWN0cy4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAkocmV2aXNpb24gMzgxMTcp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCwxMCBAQCBjbGFzcyBSZW5kZXJUaGVtZVdpbiA6IHB1YmxpYyBSZW5kZXJUaGVt
CiBwdWJsaWM6CiAgICAgUmVuZGVyVGhlbWVXaW4oKTsKICAgICB+UmVuZGVyVGhlbWVXaW4oKTsK
LSAgICAgICAKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0Kik7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFF1aXJrc1N0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCopOworCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSB0aGVtZSdzIGNv
bnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3aW5nIHdoZW4gaG92ZXJlZC4KICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25035</attachid>
            <date>2008-11-10 16:41:29 -0800</date>
            <delta_ts>2008-11-12 13:50:25 -0800</delta_ts>
            <desc>same as above, with .css files in platform/win</desc>
            <filename>theme4.patch</filename>
            <type>text/plain</type>
            <size>15043</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODI3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDgtMTEtMTAgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDUxCisgICAgICAg
IFJlbmRlcnRoZW1lcyBzaG91bGQgYmUgYWJsZSB0byBzdXBwbHkgYWRkaXRpb25hbCBDU1MgcnVs
ZXMgdG8gdGhlIGNvcmUKKyAgICAgICAgb25lcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFNpbXBs
ZURlZmF1bHRTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjphZGp1c3REZWZhdWx0U3R5bGVTaGVl
dCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi90aGVtZVdpbi5jc3M6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi90
aGVtZVdpblF1aXJrcy5jc3M6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFF1aXJrc1N0eWxlU2hlZXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVdpbjo6YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdFF1aXJrc1N0eWxlU2hlZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5oOgorCiAyMDA4LTExLTEwICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggQnVnIDIyMTYxOiBBc3NlcnRpb24gZmFpbHVyZSBpbiBSZW5k
ZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3Igd2hlbgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMzgxMTcpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTUwNCw3ICs1MDQsNyBAQCBYUGF0aEdyYW1tYXIuY3BwIDogeG1sL1hQYXRoR3JhbW1hci55
ICQoCiAKICMgdXNlciBhZ2VudCBzdHlsZSBzaGVldHMKIAotVVNFUl9BR0VOVF9TVFlMRV9TSEVF
VFMgPSAkKFdlYkNvcmUpL2Nzcy9odG1sNC5jc3MgJChXZWJDb3JlKS9jc3MvcXVpcmtzLmNzcyAk
KFdlYkNvcmUpL2Nzcy92aWV3LXNvdXJjZS5jc3MgJChXZWJDb3JlKS9jc3Mvc3ZnLmNzcyAKK1VT
RVJfQUdFTlRfU1RZTEVfU0hFRVRTID0gJChXZWJDb3JlKS9jc3MvaHRtbDQuY3NzICQoV2ViQ29y
ZSkvY3NzL3F1aXJrcy5jc3MgJChXZWJDb3JlKS9jc3Mvdmlldy1zb3VyY2UuY3NzICQoV2ViQ29y
ZSkvY3NzL3N2Zy5jc3MgJChXZWJDb3JlKS9wbGF0Zm9ybS93aW4vdGhlbWVXaW4uY3NzICQoV2Vi
Q29yZSkvcGxhdGZvcm0vd2luL3RoZW1lV2luUXVpcmtzLmNzcwogVXNlckFnZW50U3R5bGVTaGVl
dHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCAkKFVTRVJfQUdFTlRfU1RZTEVfU0hF
RVRTKQogCXBlcmwgJDwgJEAgVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCAkKFVTRVJfQUdF
TlRfU1RZTEVfU0hFRVRTKQogCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNp
b24gMzgxMTcpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDk2LDEyICs0OTYsMTQgQEAgc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5
bGUoKQogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCiAgICAgQ1NTU3R5bGVTaGVldCogZGVm
YXVsdFNoZWV0ID0gcGFyc2VVQVNoZWV0KGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9m
KGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCkpOwotICAgIFJlbmRlclRoZW1lOjphZGp1c3REZWZh
dWx0U3R5bGVTaGVldChkZWZhdWx0U2hlZXQpOworICAgIHRoZW1lKCktPmFkanVzdERlZmF1bHRT
dHlsZVNoZWV0KGRlZmF1bHRTaGVldCk7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldChkZWZhdWx0U2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRFdmFsKCkpOwogCiAgICAgLy8g
UXVpcmtzLW1vZGUgcnVsZXMuCi0gICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldChwYXJzZVVBU2hlZXQocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJr
c1VzZXJBZ2VudFN0eWxlU2hlZXQpKSwgc2NyZWVuRXZhbCgpKTsKKyAgICBDU1NTdHlsZVNoZWV0
KiBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpOworICAgIHRoZW1lKCktPmFkanVzdFF1
aXJrc1N0eWxlU2hlZXQocXVpcmtzU2hlZXQpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiB9CiAgICAgCiBzdGF0
aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKQEAgLTUxNCw3ICs1MTYsNiBAQCBzdGF0
aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUg
PSBuZXcgQ1NTUnVsZVNldDsKIAogICAgIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VV
QVNoZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQsIHN0cmxlbihzaW1wbGVVc2VyQWdlbnRT
dHlsZVNoZWV0KSk7Ci0gICAgUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KHNp
bXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgIAogICAgIC8v
IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBxdWlya3Mgc2hlZXQgeWV0IGFzIHRoZXJlIGFyZSBubyBx
dWlyayBydWxlcyBmb3IgZWxlbWVudHMgYWxsb3dlZCBpbiBzaW1wbGUgZGVmYXVsdCBzdHlsZS4K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAkocmV2aXNpb24gMzgxMTcp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NTQsNyArNzU0LDcgQEAgQ29udHJvbFBhcnQgUmVuZGVyVGhlbWVRdDo6YXBwbHlUaGVt
ZShRUwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdERl
ZmF1bHRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlKQordm9pZCBSZW5kZXJUaGVtZVF0
OjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkKIHsKICAgICBR
RmlsZSBwbGF0Zm9ybVN0eWxlU2hlZXQoIjovd2ViY29yZS9yZXNvdXJjZXMvaHRtbDQtYWRqdXN0
bWVudHMtcXQuY3NzIik7CiAgICAgaWYgKHBsYXRmb3JtU3R5bGVTaGVldC5vcGVuKFFGaWxlOjpS
ZWFkT25seSkpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCShyZXZpc2lv
biAzODExNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUaGVtZVF0KCk7CiAg
ICAgdmlydHVhbCB+UmVuZGVyVGhlbWVRdCgpOwogCisgICAgdmlydHVhbCB2b2lkIGFkanVzdERl
ZmF1bHRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKKwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3Q7CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vd2luL3RoZW1lV2luLmNzcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL3dpbi90aGVtZVdpbi5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL3dpbi90aGVtZVdpbi5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qIFRo
ZXNlIHN0eWxlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBzdHlsaW5nIGZvciBIVE1MIGVsZW1lbnRz
IGFzIGRlZmluZWQgaW4KKyAgIFdlYkNvcmUvY3NzL2h0bWw0LmNzcy4gU28gZmFyIHdlIGhhdmUg
dXNlZCB0aGlzIGZpbGUgZXhjbHVzaXZlbHkgZm9yCisgICBtYWtpbmcgb3VyIGZvcm0gZWxlbWVu
dHMgbWF0Y2ggRmlyZWZveGVzLiBJZiB3ZSBmaW5kIG90aGVyIG5lZWRzIGZvciB0aGlzCisgICBm
aWxlIHdlIHNob3VsZCBzZXJpb3VzbHkgY29uc2lkZXIgaWYgdGhpcyBpcyB0aGUgcmlnaHQgcGxh
Y2Ugb2YgdGhlbS4gKi8KKworaW5wdXQ6bm90KFt0eXBlXSksIAoraW5wdXRbdHlwZT0idGV4dCJd
LAoraW5wdXRbdHlwZT0icGFzc3dvcmQiXSwKK2lucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICBt
YXJnaW46MDsKKyAgICBwYWRkaW5nOjFweCAwOworfQorCitpbnB1dFt0eXBlPSJjaGVja2JveCJd
IHsKKyAgICBtYXJnaW46M3B4IDNweCAzcHggNHB4OworfQorCitpbnB1dFt0eXBlPSJyYWRpbyJd
IHsKKyAgICBtYXJnaW46M3B4IDNweCAwIDVweDsKK30KKworLyogTm90IHN1cmUgdGhpcyBpcyB0
aGUgcmlnaHQgY29sb3IuICNFQkVCRTQgaXMgd2hhdCBGaXJlZm94IHVzZXMuCisgICBUT0RPKG9q
YW4pOiBGaWd1cmUgb3V0IGhvdyB0byBzdXBwb3J0IGxlZ2FjeSBpbnB1dCByZW5kZXJpbmcuIAor
ICAgVE9ETyhvamFuKTogQWRkIGlucHV0W3R5cGU9ImZpbGUiXSBvbmNlIHdlIGZpZ3VyZSBvdXQg
b3VyIGZpbGUgaW5wdXRzLgorICAgVE9ETyhvamFuKTogQWRkIGlucHV0W3R5cGU9ImltYWdlIl0g
b25jZSB3ZSBmaWd1cmUgb3V0IG91ciBpbWFnZSBpbnB1dHMuCisgICBUT0RPKG9qYW4pOiBXZSBw
cm9iYWJseSBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgeW91IHB1dCBhbiBpbnZhbGlkIGlucHV0IHR5
cGUuCisgICAgICAgICAgICAgICBkbyB3ZSBjYXJlPworKi8KK3RleHRhcmVhOmRpc2FibGVkLAor
aW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsIAoraW5wdXRbdHlwZT0idGV4dCJdOmRpc2FibGVk
LAoraW5wdXRbdHlwZT0icGFzc3dvcmQiXTpkaXNhYmxlZCwKK2lucHV0W3R5cGU9InNlYXJjaCJd
OmRpc2FibGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUJFQkU0OyAKK30KKworLyogV2lu
ZG93cyBzaG91bGQgcmVuZGVyIGlucHV0W3R5cGU9InNlYXJjaCJdIHRoZSBzYW1lIGFzIGlucHV0
IHdpdGggbm8gdHlwZS4KKyAgIFRoaXMgc2VhcmNoIHRoaW5nIGlzIGFuIEFwcGxlLWlzbSB0byBn
ZXQgbWFjIHN0eWxlIHNlYXJjaCBpbnB1dHMuICovCitpbnB1dFt0eXBlPSJzZWFyY2giXSB7Cisg
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CisgICAgLXdlYmtpdC1ib3gtc2l6aW5n
OiBjb250ZW50LWJveDsKK30KKworaW5wdXRbdHlwZT0iYnV0dG9uIl0sIGlucHV0W3R5cGU9InN1
Ym1pdCJdLCBpbnB1dFt0eXBlPSJyZXNldCJdLCBpbnB1dFt0eXBlPSJmaWxlIl06Oi13ZWJraXQt
ZmlsZS11cGxvYWQtYnV0dG9uLCBidXR0b24geworICAgIC8qIE1hdGNoZXMgRmlyZWZveCAqLwor
ICAgIHBhZGRpbmc6IDAgNnB4OworICAgIG1hcmdpbjogMDsKK30KKworLyogV2luZG93cyBzZWxl
Y3RzIGFyZSBub3Qgcm91bmRlZC4gQ3VzdG9tIGJvcmRlcnMgZm9yIHRoZW0gc2hvdWxkbid0IGJl
IGVpdGhlci4gKi8KK2tleWdlbiwgCitzZWxlY3QsIAorc2VsZWN0W3NpemU9IjAiXSwKK3NlbGVj
dFtzaXplPSIxIl0geworICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKKyAgICBtYXJnaW46
IDA7Cit9CisKK3RleHRhcmVhIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgbWFyZ2lu
OiAxcHggMDsKKworICAvKiBNYXRjaGVzIElFICovCisgIHBhZGRpbmc6IDJweDsKK30KClByb3Bl
cnR5IGNoYW5nZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vd2luL3RoZW1lV2luLmNzcwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L3dpbi90aGVtZVdpblF1aXJrcy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93
aW4vdGhlbWVXaW5RdWlya3MuY3NzCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93
aW4vdGhlbWVXaW5RdWlya3MuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKiBU
aGVzZSBzdHlsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgc3R5bGluZyBmb3IgSFRNTCBlbGVtZW50
cyBpbiBxdWlya3MtbW9kZQorICAgYXMgZGVmaW5lZCBpbiBXZWJDb3JlL2Nzcy9xdWlya3MuY3Nz
LiBTbyBmYXIgd2UgaGF2ZSB1c2VkIHRoaXMgZmlsZSBleGNsdXNpdmVseSBmb3IKKyAgIG1ha2lu
ZyBvdXIgZm9ybSBlbGVtZW50cyBtYXRjaCBGaXJlZm94ZXMuIElmIHdlIGZpbmQgb3RoZXIgbmVl
ZHMgZm9yIHRoaXMKKyAgIGZpbGUgd2Ugc2hvdWxkIHNlcmlvdXNseSBjb25zaWRlciBpZiB0aGlz
IGlzIHRoZSByaWdodCBwbGFjZSBvZiB0aGVtLiAqLworCit0ZXh0YXJlYSB7CisgIC8qIE1hdGNo
ZXMgSUUncyB0ZXh0IG9mZnNldHMgaW4gcXVpcmtzbW9kZSAoY2F1c2VzIHRleHQgdG8gd3JhcCB0
aGUgc2FtZSBhcyBJRSkuICovCisgIHBhZGRpbmc6IDJweCAwIDAgMnB4OworfQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogV2ViQ29yZS9wbGF0Zm9ybS93aW4vdGhlbWVXaW5RdWlya3MuY3NzCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMTIgKzE5OCw2IEBAIHZvaWQgUmVuZGVy
VGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2UKICAgICB9CiB9CiAKLSNpZiAhUExBVEZPUk0o
UVQpCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNo
ZWV0KikKLXsKLX0KLSNlbmRpZgotCiBib29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IElu
dFJlY3QmIHIpCiB7CiAgICAgLy8gSWYgcGFpbnRpbmcgaXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVu
J3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywgdGhlbiBqdXN0IGJhaWwuCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmgJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgcHVibGljOgogICAg
IHZvaWQgYWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCosICBib29sIFVBSGFzQXBwZWFyYW5jZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJv
cmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9y
KTsKIAotICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIENTU1N0eWxlU2Vs
ZWN0b3I6OmxvYWREZWZhdWx0U3R5bGUoKSwgdG8gbGV0IGVhY2ggcGxhdGZvcm0gYWRqdXN0Ci0g
ICAgLy8gdGhlIGRlZmF1bHQgQ1NTIHJ1bGVzIGluIGh0bWw0LmNzcy4KLSAgICBzdGF0aWMgdm9p
ZCBhZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0Kik7Ci0KICAgICAvLyBUaGlz
IG1ldGhvZCBpcyBjYWxsZWQgdG8gcGFpbnQgdGhlIHdpZGdldCBhcyBhIGJhY2tncm91bmQgb2Yg
dGhlIFJlbmRlck9iamVjdC4gIEEgd2lkZ2V0J3MgZm9yZWdyb3VuZCwgZS5nLiwgdGhlCiAgICAg
Ly8gdGV4dCBvZiBhIGJ1dHRvbiwgaXMgYWx3YXlzIHJlbmRlcmVkIGJ5IHRoZSBlbmdpbmUgaXRz
ZWxmLiAgVGhlIGJvb2xlYW4gcmV0dXJuIHZhbHVlIGluZGljYXRlcwogICAgIC8vIHdoZXRoZXIg
dGhlIENTUyBib3JkZXIvYmFja2dyb3VuZCBzaG91bGQgYWxzbyBiZSBwYWludGVkLgpAQCAtNjQs
NiArNjAsMTEgQEAgcHVibGljOgogICAgIC8vIFRoZSByZW1haW5pbmcgbWV0aG9kcyBzaG91bGQg
YmUgaW1wbGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHBvcnRpb24gb2YgdGhlIHRo
ZW1lLCBlLmcuLAogICAgIC8vIFJlbmRlclRoZW1lTWFjLmNwcCBmb3IgTWFjIE9TIFguCiAKKyAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgb25jZSwgZnJvbSBDU1NTdHlsZVNlbGVjdG9y
Ojpsb2FkRGVmYXVsdFN0eWxlKCksIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVzdAorICAgIC8v
IHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sNC5jc3Mgb3IgcXVpcmtzLmNzcy4KKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopIHt9Cisg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFF1aXJrc1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopIHt9
CisKICAgICAvLyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBh
ICJsZWFmIiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCiAg
ICAgLy8gcG9zaXRpb24gY2Fubm90IGJlIGRldGVybWluZWQgYnkgZXhhbWluaW5nIGNoaWxkIGNv
bnRlbnQuIENoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgYXJlIGV4YW1wbGVzIG9mCiAgICAg
Ly8gY29udHJvbHMgdGhhdCBuZWVkIHRvIGRvIHRoaXMuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lV2luLmgiCiAKKyNpbmNsdWRlICJD
U1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0yOSw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1
ZGUgIlNvZnRMaW5raW5nLmgiCisjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKIAog
I2luY2x1ZGUgPHRjaGFyLmg+CiAKQEAgLTE3OCw2ICsxODAsMTYgQEAgdm9pZCBSZW5kZXJUaGVt
ZVdpbjo6dGhlbWVDaGFuZ2VkKCkKICAgICBjbG9zZSgpOwogfQogCit2b2lkIFJlbmRlclRoZW1l
V2luOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkKK3sKKyAg
ICBzdHlsZS0+cGFyc2VTdHJpbmcoU3RyaW5nKHRoZW1lV2luVXNlckFnZW50U3R5bGVTaGVldCwg
c2l6ZW9mKHRoZW1lV2luVXNlckFnZW50U3R5bGVTaGVldCkpKTsKK30KKwordm9pZCBSZW5kZXJU
aGVtZVdpbjo6YWRqdXN0UXVpcmtzU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkKK3sK
KyAgICBzdHlsZS0+cGFyc2VTdHJpbmcoU3RyaW5nKHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5
bGVTaGVldCwgc2l6ZW9mKHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpKTsKK30K
KwogYm9vbCBSZW5kZXJUaGVtZVdpbjo6c3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSop
IGNvbnN0CiB7CiAgICAgLy8gVGhlIENsYXNzaWMvMmsgbG9vayBoYXMgbm8gaG92ZXIgZWZmZWN0
cy4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAkocmV2aXNpb24gMzgxMTcpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCwxMCBAQCBjbGFzcyBSZW5kZXJUaGVtZVdpbiA6IHB1YmxpYyBSZW5kZXJUaGVtCiBw
dWJsaWM6CiAgICAgUmVuZGVyVGhlbWVXaW4oKTsKICAgICB+UmVuZGVyVGhlbWVXaW4oKTsKLSAg
ICAgICAKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHls
ZVNoZWV0Kik7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFF1aXJrc1N0eWxlU2hlZXQoQ1NTU3R5
bGVTaGVldCopOworCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSB0aGVtZSdzIGNvbnRy
b2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3aW5nIHdoZW4gaG92ZXJlZC4KICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25103</attachid>
            <date>2008-11-12 13:50:25 -0800</date>
            <delta_ts>2008-11-26 12:18:18 -0800</delta_ts>
            <desc>revised patch with dhyatt&apos;s suggestion</desc>
            <filename>theme5.patch</filename>
            <type>text/plain</type>
            <size>16644</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODM0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDgtMTEtMTIgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDUxCisgICAgICAg
IFJlbmRlcnRoZW1lcyBzaG91bGQgYmUgYWJsZSB0byBzdXBwbHkgYWRkaXRpb25hbCBDU1MgcnVs
ZXMgdG8gdGhlIGNvcmUKKyAgICAgICAgb25lcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VVQVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRGdWxsRGVmYXVsdFN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVRdDo6ZGVmYXVsdFN0eWxlU2hlZXQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Jl
bmRlclRoZW1lUXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vdGhlbWVXaW4uY3NzOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vdGhlbWVXaW5RdWlya3MuY3NzOiBBZGRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OmRlZmF1bHRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjpxdWlya3NTdHlsZVNoZWV0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVXaW46OmRlZmF1bHRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lV2luOjpxdWlya3NTdHlsZVNoZWV0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uaDoKKwogMjAwOC0xMS0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CkluZGV4
OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNTA0LDcgKzUwNCw3IEBAIFhQYXRoR3JhbW1hci5j
cHAgOiB4bWwvWFBhdGhHcmFtbWFyLnkgJCgKIAogIyB1c2VyIGFnZW50IHN0eWxlIHNoZWV0cwog
Ci1VU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9ICQoV2ViQ29yZSkvY3NzL2h0bWw0LmNzcyAkKFdl
YkNvcmUpL2Nzcy9xdWlya3MuY3NzICQoV2ViQ29yZSkvY3NzL3ZpZXctc291cmNlLmNzcyAkKFdl
YkNvcmUpL2Nzcy9zdmcuY3NzIAorVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSAkKFdlYkNvcmUp
L2Nzcy9odG1sNC5jc3MgJChXZWJDb3JlKS9jc3MvcXVpcmtzLmNzcyAkKFdlYkNvcmUpL2Nzcy92
aWV3LXNvdXJjZS5jc3MgJChXZWJDb3JlKS9jc3Mvc3ZnLmNzcyAkKFdlYkNvcmUpL3BsYXRmb3Jt
L3dpbi90aGVtZVdpbi5jc3MgJChXZWJDb3JlKS9wbGF0Zm9ybS93aW4vdGhlbWVXaW5RdWlya3Mu
Y3NzCiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIDogY3NzL21ha2UtY3NzLWZpbGUtYXJyYXlzLnBs
ICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAJcGVybCAkPCAkQCBVc2VyQWdlbnRTdHlsZVNo
ZWV0c0RhdGEuY3BwICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsMTMgKzQ3MiwxOCBAQCBDU1NTdHls
ZVNlbGVjdG9yOjp+Q1NTU3R5bGVTZWxlY3RvcigpCiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLmNs
ZWFyKCk7CiB9CiAKLXN0YXRpYyBDU1NTdHlsZVNoZWV0KiBwYXJzZVVBU2hlZXQoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgc2l6ZSkKK3N0YXRpYyBDU1NTdHlsZVNoZWV0KiBwYXJz
ZVVBU2hlZXQoY29uc3QgU3RyaW5nJiBzdHIpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogc2hlZXQg
PSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7IC8vIGxlYWsgdGhlIHNoZWV0
IG9uIHB1cnBvc2UKLSAgICBzaGVldC0+cGFyc2VTdHJpbmcoU3RyaW5nKGNoYXJhY3RlcnMsIHNp
emUpKTsKKyAgICBzaGVldC0+cGFyc2VTdHJpbmcoc3RyKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9
CiAKK3N0YXRpYyBDU1NTdHlsZVNoZWV0KiBwYXJzZVVBU2hlZXQoY29uc3QgY2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgc2l6ZSkKK3sKKyAgICByZXR1cm4gcGFyc2VVQVNoZWV0KFN0cmluZyhj
aGFyYWN0ZXJzLCBzaXplKSk7Cit9CisKIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxl
KCkKIHsKICAgICBpZiAoc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQpIHsKQEAgLTQ5NSwxNSArNTAw
LDE1IEBAIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICB9CiAKICAgICAv
LyBTdHJpY3QtbW9kZSBydWxlcy4KLSAgICBDU1NTdHlsZVNoZWV0KiBkZWZhdWx0U2hlZXQgPSBw
YXJzZVVBU2hlZXQoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaHRtbDRVc2VyQWdl
bnRTdHlsZVNoZWV0KSk7Ci0gICAgUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0
KGRlZmF1bHRTaGVldCk7CisgICAgQ1NTU3R5bGVTaGVldCogZGVmYXVsdFNoZWV0ID0gcGFyc2VV
QVNoZWV0KHRoZW1lKCktPmRlZmF1bHRTdHlsZVNoZWV0KCkpOwogICAgIGRlZmF1bHRTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgIGRlZmF1
bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsIHByaW50RXZhbCgp
KTsKIAogICAgIC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgotICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQocGFyc2VVQVNoZWV0KHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQs
IHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSksIHNjcmVlbkV2YWwoKSk7CisgICAg
Q1NTU3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQodGhlbWUoKS0+cXVpcmtz
U3R5bGVTaGVldCgpKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOwogfQotICAgIAorCiBzdGF0aWMgdm9pZCBsb2Fk
U2ltcGxlRGVmYXVsdFN0eWxlKCkKIHsKICAgICBBU1NFUlQoIWRlZmF1bHRTdHlsZSk7CkBAIC01
MTQsNyArNTE5LDYgQEAgc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiAgICAg
ZGVmYXVsdFF1aXJrc1N0eWxlID0gbmV3IENTU1J1bGVTZXQ7CiAKICAgICBzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0LCBzdHJs
ZW4oc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCkpOwotICAgIFJlbmRlclRoZW1lOjphZGp1c3RE
ZWZhdWx0U3R5bGVTaGVldChzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCk7CiAgICAgZGVmYXVsdFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZh
bCgpKTsKICAgICAKICAgICAvLyBObyBuZWVkIHRvIGluaXRpYWxpemUgcXVpcmtzIHNoZWV0IHll
dCBhcyB0aGVyZSBhcmUgbm8gcXVpcmsgcnVsZXMgZm9yIGVsZW1lbnRzIGFsbG93ZWQgaW4gc2lt
cGxlIGRlZmF1bHQgc3R5bGUuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5j
cHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU0LDEzICs3NTQsMTYgQEAgQ29udHJvbFBhcnQgUmVu
ZGVyVGhlbWVRdDo6YXBwbHlUaGVtZShRUwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxl
KQorU3RyaW5nIFJlbmRlclRoZW1lUXQ6OmRlZmF1bHRTdHlsZVNoZWV0KCkKIHsKICAgICBRRmls
ZSBwbGF0Zm9ybVN0eWxlU2hlZXQoIjovd2ViY29yZS9yZXNvdXJjZXMvaHRtbDQtYWRqdXN0bWVu
dHMtcXQuY3NzIik7CiAgICAgaWYgKHBsYXRmb3JtU3R5bGVTaGVldC5vcGVuKFFGaWxlOjpSZWFk
T25seSkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBzaGVldERhdGEgPSBwbGF0Zm9ybVN0eWxlU2hl
ZXQucmVhZEFsbCgpOwotICAgICAgICBzdHlsZS0+cGFyc2VTdHJpbmcoUVN0cmluZzo6ZnJvbVV0
Zjgoc2hlZXREYXRhLmNvbnN0RGF0YSgpLCBzaGVldERhdGEubGVuZ3RoKCkpKTsKKyAgICAgICAg
cmV0dXJuIFN0cmluZyhodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1sNFVzZXJB
Z2VudFN0eWxlU2hlZXQpKSArCisgICAgICAgICAgICBRU3RyaW5nOjpmcm9tVXRmOChzaGVldERh
dGEuY29uc3REYXRhKCksIHNoZWV0RGF0YS5sZW5ndGgoKSk7CiAgICAgfQorCisgICAgcmV0dXJu
IFN0cmluZyhodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1sNFVzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQv
UmVuZGVyVGhlbWVRdC5oCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQv
UmVuZGVyVGhlbWVRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoK
ICAgICBSZW5kZXJUaGVtZVF0KCk7CiAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVRdCgpOwogCisg
ICAgdmlydHVhbCBTdHJpbmcgZGVmYXVsdFN0eWxlU2hlZXQoKTsKKwogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3Q7CiAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL3RoZW1lV2luLmNzcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3dpbi90aGVtZVdpbi5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3dpbi90aGVtZVdpbi5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qIFRoZXNlIHN0eWxlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBzdHlsaW5nIGZvciBIVE1MIGVs
ZW1lbnRzIGFzIGRlZmluZWQgaW4KKyAgIFdlYkNvcmUvY3NzL2h0bWw0LmNzcy4gU28gZmFyIHdl
IGhhdmUgdXNlZCB0aGlzIGZpbGUgZXhjbHVzaXZlbHkgZm9yCisgICBtYWtpbmcgb3VyIGZvcm0g
ZWxlbWVudHMgbWF0Y2ggRmlyZWZveGVzLiBJZiB3ZSBmaW5kIG90aGVyIG5lZWRzIGZvciB0aGlz
CisgICBmaWxlIHdlIHNob3VsZCBzZXJpb3VzbHkgY29uc2lkZXIgaWYgdGhpcyBpcyB0aGUgcmln
aHQgcGxhY2Ugb2YgdGhlbS4gKi8KKworaW5wdXQ6bm90KFt0eXBlXSksIAoraW5wdXRbdHlwZT0i
dGV4dCJdLAoraW5wdXRbdHlwZT0icGFzc3dvcmQiXSwKK2lucHV0W3R5cGU9InNlYXJjaCJdIHsK
KyAgICBtYXJnaW46MDsKKyAgICBwYWRkaW5nOjFweCAwOworfQorCitpbnB1dFt0eXBlPSJjaGVj
a2JveCJdIHsKKyAgICBtYXJnaW46M3B4IDNweCAzcHggNHB4OworfQorCitpbnB1dFt0eXBlPSJy
YWRpbyJdIHsKKyAgICBtYXJnaW46M3B4IDNweCAwIDVweDsKK30KKworLyogTm90IHN1cmUgdGhp
cyBpcyB0aGUgcmlnaHQgY29sb3IuICNFQkVCRTQgaXMgd2hhdCBGaXJlZm94IHVzZXMuCisgICBU
T0RPKG9qYW4pOiBGaWd1cmUgb3V0IGhvdyB0byBzdXBwb3J0IGxlZ2FjeSBpbnB1dCByZW5kZXJp
bmcuIAorICAgVE9ETyhvamFuKTogQWRkIGlucHV0W3R5cGU9ImZpbGUiXSBvbmNlIHdlIGZpZ3Vy
ZSBvdXQgb3VyIGZpbGUgaW5wdXRzLgorICAgVE9ETyhvamFuKTogQWRkIGlucHV0W3R5cGU9Imlt
YWdlIl0gb25jZSB3ZSBmaWd1cmUgb3V0IG91ciBpbWFnZSBpbnB1dHMuCisgICBUT0RPKG9qYW4p
OiBXZSBwcm9iYWJseSBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgeW91IHB1dCBhbiBpbnZhbGlkIGlu
cHV0IHR5cGUuCisgICAgICAgICAgICAgICBkbyB3ZSBjYXJlPworKi8KK3RleHRhcmVhOmRpc2Fi
bGVkLAoraW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsIAoraW5wdXRbdHlwZT0idGV4dCJdOmRp
c2FibGVkLAoraW5wdXRbdHlwZT0icGFzc3dvcmQiXTpkaXNhYmxlZCwKK2lucHV0W3R5cGU9InNl
YXJjaCJdOmRpc2FibGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUJFQkU0OyAKK30KKwor
LyogV2luZG93cyBzaG91bGQgcmVuZGVyIGlucHV0W3R5cGU9InNlYXJjaCJdIHRoZSBzYW1lIGFz
IGlucHV0IHdpdGggbm8gdHlwZS4KKyAgIFRoaXMgc2VhcmNoIHRoaW5nIGlzIGFuIEFwcGxlLWlz
bSB0byBnZXQgbWFjIHN0eWxlIHNlYXJjaCBpbnB1dHMuICovCitpbnB1dFt0eXBlPSJzZWFyY2gi
XSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CisgICAgLXdlYmtpdC1ib3gt
c2l6aW5nOiBjb250ZW50LWJveDsKK30KKworaW5wdXRbdHlwZT0iYnV0dG9uIl0sIGlucHV0W3R5
cGU9InN1Ym1pdCJdLCBpbnB1dFt0eXBlPSJyZXNldCJdLCBpbnB1dFt0eXBlPSJmaWxlIl06Oi13
ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uLCBidXR0b24geworICAgIC8qIE1hdGNoZXMgRmlyZWZv
eCAqLworICAgIHBhZGRpbmc6IDAgNnB4OworICAgIG1hcmdpbjogMDsKK30KKworLyogV2luZG93
cyBzZWxlY3RzIGFyZSBub3Qgcm91bmRlZC4gQ3VzdG9tIGJvcmRlcnMgZm9yIHRoZW0gc2hvdWxk
bid0IGJlIGVpdGhlci4gKi8KK2tleWdlbiwgCitzZWxlY3QsIAorc2VsZWN0W3NpemU9IjAiXSwK
K3NlbGVjdFtzaXplPSIxIl0geworICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKKyAgICBt
YXJnaW46IDA7Cit9CisKK3RleHRhcmVhIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAg
bWFyZ2luOiAxcHggMDsKKworICAvKiBNYXRjaGVzIElFICovCisgIHBhZGRpbmc6IDJweDsKK30K
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vd2luL3RoZW1lV2luLmNzcwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL3dpbi90aGVtZVdpblF1aXJrcy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS93aW4vdGhlbWVXaW5RdWlya3MuY3NzCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS93aW4vdGhlbWVXaW5RdWlya3MuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvKiBUaGVzZSBzdHlsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgc3R5bGluZyBmb3IgSFRNTCBl
bGVtZW50cyBpbiBxdWlya3MtbW9kZQorICAgYXMgZGVmaW5lZCBpbiBXZWJDb3JlL2Nzcy9xdWly
a3MuY3NzLiBTbyBmYXIgd2UgaGF2ZSB1c2VkIHRoaXMgZmlsZSBleGNsdXNpdmVseSBmb3IKKyAg
IG1ha2luZyBvdXIgZm9ybSBlbGVtZW50cyBtYXRjaCBGaXJlZm94ZXMuIElmIHdlIGZpbmQgb3Ro
ZXIgbmVlZHMgZm9yIHRoaXMKKyAgIGZpbGUgd2Ugc2hvdWxkIHNlcmlvdXNseSBjb25zaWRlciBp
ZiB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSBvZiB0aGVtLiAqLworCit0ZXh0YXJlYSB7CisgIC8q
IE1hdGNoZXMgSUUncyB0ZXh0IG9mZnNldHMgaW4gcXVpcmtzbW9kZSAoY2F1c2VzIHRleHQgdG8g
d3JhcCB0aGUgc2FtZSBhcyBJRSkuICovCisgIHBhZGRpbmc6IDJweCAwIDAgMnB4OworfQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9wbGF0Zm9ybS93aW4vdGhlbWVXaW5RdWlya3MuY3Nz
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAKIC8v
IFRoZSBtZXRob2RzIGluIHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJ5IGFsbCB0aGVtZXMgb24gZXZl
cnkgcGxhdGZvcm0uCiAKQEAgLTE5OCwxMiArMTk5LDYgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRq
dXN0U3R5bGUoQ1NTU3R5bGVTZQogICAgIH0KIH0KIAotI2lmICFQTEFURk9STShRVCkKLXZvaWQg
UmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKQotewot
fQotI2VuZGlmCi0KIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikK
IHsKICAgICAvLyBJZiBwYWludGluZyBpcyBkaXNhYmxlZCwgYnV0IHdlIGFyZW4ndCB1cGRhdGlu
ZyBjb250cm9sIHRpbnRzLCB0aGVuIGp1c3QgYmFpbC4KQEAgLTQyNiw2ICs0MjEsMTYgQEAgQ29s
b3IgUmVuZGVyVGhlbWU6OmluYWN0aXZlTGlzdEJveFNlbGVjdAogICAgIHJldHVybiBDb2xvcigw
LCAwLCAwKTsKIH0KIAorU3RyaW5nIFJlbmRlclRoZW1lOjpkZWZhdWx0U3R5bGVTaGVldCgpCit7
CisgICAgcmV0dXJuIFN0cmluZyhodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1s
NFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKK30KKworU3RyaW5nIFJlbmRlclRoZW1lOjpxdWlya3NT
dHlsZVNoZWV0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hl
ZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisKIGludCBSZW5kZXJU
aGVtZTo6YmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7CiAj
aWYgVVNFKE5FV19USEVNRSkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkocmV2aXNpb24g
MzgxMTcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCwxMCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGp1c3RTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KiwgIGJvb2wgVUFIYXNBcHBlYXJhbmNl
LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXll
ciYsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgLy8gVGhpcyBtZXRob2Qg
aXMgY2FsbGVkIG9uY2UsIGZyb20gQ1NTU3R5bGVTZWxlY3Rvcjo6bG9hZERlZmF1bHRTdHlsZSgp
LCB0byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKLSAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVs
ZXMgaW4gaHRtbDQuY3NzLgotICAgIHN0YXRpYyB2b2lkIGFkanVzdERlZmF1bHRTdHlsZVNoZWV0
KENTU1N0eWxlU2hlZXQqKTsKLQogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0byBwYWlu
dCB0aGUgd2lkZ2V0IGFzIGEgYmFja2dyb3VuZCBvZiB0aGUgUmVuZGVyT2JqZWN0LiAgQSB3aWRn
ZXQncyBmb3JlZ3JvdW5kLCBlLmcuLCB0aGUKICAgICAvLyB0ZXh0IG9mIGEgYnV0dG9uLCBpcyBh
bHdheXMgcmVuZGVyZWQgYnkgdGhlIGVuZ2luZSBpdHNlbGYuICBUaGUgYm9vbGVhbiByZXR1cm4g
dmFsdWUgaW5kaWNhdGVzCiAgICAgLy8gd2hldGhlciB0aGUgQ1NTIGJvcmRlci9iYWNrZ3JvdW5k
IHNob3VsZCBhbHNvIGJlIHBhaW50ZWQuCkBAIC02NCw2ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAg
Ly8gVGhlIHJlbWFpbmluZyBtZXRob2RzIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgcGxh
dGZvcm0tc3BlY2lmaWMgcG9ydGlvbiBvZiB0aGUgdGhlbWUsIGUuZy4sCiAgICAgLy8gUmVuZGVy
VGhlbWVNYWMuY3BwIGZvciBNYWMgT1MgWC4KIAorICAgIC8vIFRoZXNlIG1ldGhvZHMgcmV0dXJu
IHRoZSBzdHlsZSBzaGVldHMsIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVzdAorICAgIC8vIHRo
ZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sNC5jc3Mgb3IgcXVpcmtzLmNzcy4KKyAgICB2aXJ0
dWFsIFN0cmluZyBkZWZhdWx0U3R5bGVTaGVldCgpOworICAgIHZpcnR1YWwgU3RyaW5nIHF1aXJr
c1N0eWxlU2hlZXQoKTsKKwogICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUg
cG9zaXRpb24gZm9yIGEgImxlYWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2VkIGlm
IGEgYmFzZWxpbmUKICAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBleGFt
aW5pbmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhh
bXBsZXMgb2YKICAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVXaW4uaCIK
IAorI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
QEAgLTI5LDYgKzMwLDcgQEAKICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xp
ZGVyLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKKyNpbmNsdWRlICJVc2VyQWdlbnRTdHls
ZVNoZWV0cy5oIgogCiAjaW5jbHVkZSA8dGNoYXIuaD4KIApAQCAtMTc4LDYgKzE4MCwxOCBAQCB2
b2lkIFJlbmRlclRoZW1lV2luOjp0aGVtZUNoYW5nZWQoKQogICAgIGNsb3NlKCk7CiB9CiAKK1N0
cmluZyBSZW5kZXJUaGVtZVdpbjo6ZGVmYXVsdFN0eWxlU2hlZXQoKQoreworICAgIHJldHVybiBT
dHJpbmcoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaHRtbDRVc2VyQWdlbnRTdHls
ZVNoZWV0KSkgKworICAgICAgICBTdHJpbmcodGhlbWVXaW5Vc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YodGhlbWVXaW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisKK1N0cmluZyBSZW5kZXJU
aGVtZVdpbjo6cXVpcmtzU3R5bGVTaGVldCgpCit7CisgICAgcmV0dXJuIFN0cmluZyhxdWlya3NV
c2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsK
KyAgICAgICAgU3RyaW5nKHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9m
KHRoZW1lV2luUXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpOworfQorCiBib29sIFJlbmRlclRo
ZW1lV2luOjpzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3QKIHsKICAgICAv
LyBUaGUgQ2xhc3NpYy8yayBsb29rIGhhcyBubyBob3ZlciBlZmZlY3RzLgpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5oCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDEwIEBAIGNs
YXNzIFJlbmRlclRoZW1lV2luIDogcHVibGljIFJlbmRlclRoZW0KIHB1YmxpYzoKICAgICBSZW5k
ZXJUaGVtZVdpbigpOwogICAgIH5SZW5kZXJUaGVtZVdpbigpOwotICAgICAgIAorCisgICAgdmly
dHVhbCBTdHJpbmcgZGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBxdWly
a3NTdHlsZVNoZWV0KCk7CisKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1lJ3Mg
Y29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAK
</data>
<flag name="review"
          id="11554"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25526</attachid>
            <date>2008-11-26 12:18:18 -0800</date>
            <delta_ts>2008-11-26 12:18:18 -0800</delta_ts>
            <desc>patch with maciej&apos;s+eric&apos;s suggestions</desc>
            <filename>theme6.patch</filename>
            <type>text/plain</type>
            <size>15747</size>
            <attacher name="Matt Perry">mpComplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODc3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDgtMTEtMjUgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDUxCisgICAgICAg
IFJlbmRlcnRoZW1lcyBzaG91bGQgYmUgYWJsZSB0byBzdXBwbHkgYWRkaXRpb25hbCBDU1MgcnVs
ZXMgdG8gdGhlIGNvcmUKKyAgICAgICAgb25lcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VVQVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRGdWxsRGVmYXVsdFN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAg
ICAqIGNzcy90aGVtZVdpbi5jc3M6IEFkZGVkLgorICAgICAgICAqIGNzcy90aGVtZVdpblF1aXJr
cy5jc3M6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZXh0cmFRdWlya3NTdHlsZVNoZWV0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW46OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVXaW46OmV4dHJhUXVpcmtzU3R5bGVTaGVldCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmg6CisKIDIwMDgtMTEtMjUgIERhcmluIEZpc2hlciAg
PGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggYnVzdGFnZS4KSW5kZXg6IFdlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC01MDQsNyArNTA0LDcgQEAgWFBhdGhHcmFtbWFyLmNwcCA6IHht
bC9YUGF0aEdyYW1tYXIueSAkKAogCiAjIHVzZXIgYWdlbnQgc3R5bGUgc2hlZXRzCiAKLVVTRVJf
QUdFTlRfU1RZTEVfU0hFRVRTID0gJChXZWJDb3JlKS9jc3MvaHRtbDQuY3NzICQoV2ViQ29yZSkv
Y3NzL3F1aXJrcy5jc3MgJChXZWJDb3JlKS9jc3Mvdmlldy1zb3VyY2UuY3NzICQoV2ViQ29yZSkv
Y3NzL3N2Zy5jc3MgCitVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9ICQoV2ViQ29yZSkvY3NzL2h0
bWw0LmNzcyAkKFdlYkNvcmUpL2Nzcy9xdWlya3MuY3NzICQoV2ViQ29yZSkvY3NzL3ZpZXctc291
cmNlLmNzcyAkKFdlYkNvcmUpL2Nzcy9zdmcuY3NzICQoV2ViQ29yZSkvY3NzL3RoZW1lV2luLmNz
cyAkKFdlYkNvcmUpL2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKIFVzZXJBZ2VudFN0eWxlU2hlZXRz
LmggOiBjc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVU
UykKIAlwZXJsICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgJChVU0VSX0FHRU5U
X1NUWUxFX1NIRUVUUykKIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDM4MTE3KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3MiwxMyArNDcyLDE4IEBAIENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNlbGVj
dG9yKCkKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuY2xlYXIoKTsKIH0KIAotc3RhdGljIENTU1N0
eWxlU2hlZXQqIHBhcnNlVUFTaGVldChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBz
aXplKQorc3RhdGljIENTU1N0eWxlU2hlZXQqIHBhcnNlVUFTaGVldChjb25zdCBTdHJpbmcmIHN0
cikKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZSgp
LnJlbGVhc2VSZWYoKTsgLy8gbGVhayB0aGUgc2hlZXQgb24gcHVycG9zZQotICAgIHNoZWV0LT5w
YXJzZVN0cmluZyhTdHJpbmcoY2hhcmFjdGVycywgc2l6ZSkpOworICAgIHNoZWV0LT5wYXJzZVN0
cmluZyhzdHIpOwogICAgIHJldHVybiBzaGVldDsKIH0KIAorc3RhdGljIENTU1N0eWxlU2hlZXQq
IHBhcnNlVUFTaGVldChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzaXplKQorewor
ICAgIHJldHVybiBwYXJzZVVBU2hlZXQoU3RyaW5nKGNoYXJhY3RlcnMsIHNpemUpKTsKK30KKwog
c3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogewogICAgIGlmIChzaW1wbGVEZWZh
dWx0U3R5bGVTaGVldCkgewpAQCAtNDk1LDE1ICs1MDAsMTcgQEAgc3RhdGljIHZvaWQgbG9hZEZ1
bGxEZWZhdWx0U3R5bGUoKQogICAgIH0KIAogICAgIC8vIFN0cmljdC1tb2RlIHJ1bGVzLgotICAg
IENTU1N0eWxlU2hlZXQqIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldChodG1sNFVzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZihodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKLSAgICBSZW5k
ZXJUaGVtZTo6YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoZGVmYXVsdFNoZWV0KTsKKyAgICBTdHJp
bmcgZGVmYXVsdFJ1bGVzID0gU3RyaW5nKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9m
KGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVT
aGVldCgpOworICAgIENTU1N0eWxlU2hlZXQqIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldChk
ZWZhdWx0UnVsZXMpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVs
dFNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zy
b21TaGVldChkZWZhdWx0U2hlZXQsIHByaW50RXZhbCgpKTsKIAogICAgIC8vIFF1aXJrcy1tb2Rl
IHJ1bGVzLgotICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFyc2VV
QVNoZWV0KHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRT
dHlsZVNoZWV0KSksIHNjcmVlbkV2YWwoKSk7CisgICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3Ry
aW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHls
ZVNoZWV0KSkgKyB0aGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKKyAgICBDU1NTdHls
ZVNoZWV0KiBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NSdWxlcyk7CisgICAgZGVm
YXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwgc2NyZWVuRXZh
bCgpKTsKIH0KLSAgICAKKwogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiB7
CiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwpAQCAtNTE0LDcgKzUyMSw2IEBAIHN0YXRpYyB2
b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG5l
dyBDU1NSdWxlU2V0OwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hl
ZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0eWxl
U2hlZXQpKTsKLSAgICBSZW5kZXJUaGVtZTo6YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoc2ltcGxl
RGVmYXVsdFN0eWxlU2hlZXQpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
c2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgCiAgICAgLy8gTm8g
bmVlZCB0byBpbml0aWFsaXplIHF1aXJrcyBzaGVldCB5ZXQgYXMgdGhlcmUgYXJlIG5vIHF1aXJr
IHJ1bGVzIGZvciBlbGVtZW50cyBhbGxvd2VkIGluIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgpJbmRl
eDogV2ViQ29yZS9jc3MvdGhlbWVXaW4uY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL3Ro
ZW1lV2luLmNzcwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL3RoZW1lV2luLmNzcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyogVGhlc2Ugc3R5bGVzIG92ZXJyaWRlIHRoZSBk
ZWZhdWx0IHN0eWxpbmcgZm9yIEhUTUwgZWxlbWVudHMgYXMgZGVmaW5lZCBpbgorICAgV2ViQ29y
ZS9jc3MvaHRtbDQuY3NzLiBTbyBmYXIgd2UgaGF2ZSB1c2VkIHRoaXMgZmlsZSBleGNsdXNpdmVs
eSBmb3IKKyAgIG1ha2luZyBvdXIgZm9ybSBlbGVtZW50cyBtYXRjaCBGaXJlZm94J3MuICovCisK
K2lucHV0Om5vdChbdHlwZV0pLCAKK2lucHV0W3R5cGU9InRleHQiXSwKK2lucHV0W3R5cGU9InBh
c3N3b3JkIl0sCitpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAgbWFyZ2luOjA7CisgICAgcGFk
ZGluZzoxcHggMDsKK30KKworaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CisgICAgbWFyZ2luOjNw
eCAzcHggM3B4IDRweDsKK30KKworaW5wdXRbdHlwZT0icmFkaW8iXSB7CisgICAgbWFyZ2luOjNw
eCAzcHggMCA1cHg7Cit9CisKKy8qIE5vdCBzdXJlIHRoaXMgaXMgdGhlIHJpZ2h0IGNvbG9yLiAj
RUJFQkU0IGlzIHdoYXQgRmlyZWZveCB1c2VzLgorICAgRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRv
IHN1cHBvcnQgbGVnYWN5IGlucHV0IHJlbmRlcmluZy4gCisgICBGSVhNRTogQWRkIGlucHV0W3R5
cGU9ImZpbGUiXSBvbmNlIHdlIGZpZ3VyZSBvdXQgb3VyIGZpbGUgaW5wdXRzLgorICAgRklYTUU6
IEFkZCBpbnB1dFt0eXBlPSJpbWFnZSJdIG9uY2Ugd2UgZmlndXJlIG91dCBvdXIgaW1hZ2UgaW5w
dXRzLgorICAgRklYTUU6IFdlIHByb2JhYmx5IGRvIHRoZSB3cm9uZyB0aGluZyBpZiB5b3UgcHV0
IGFuIGludmFsaWQgaW5wdXQgdHlwZS4KKyAgICAgICAgICBkbyB3ZSBjYXJlPworKi8KK3RleHRh
cmVhOmRpc2FibGVkLAoraW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQsIAoraW5wdXRbdHlwZT0i
dGV4dCJdOmRpc2FibGVkLAoraW5wdXRbdHlwZT0icGFzc3dvcmQiXTpkaXNhYmxlZCwKK2lucHV0
W3R5cGU9InNlYXJjaCJdOmRpc2FibGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUJFQkU0
OyAKK30KKworLyogV2luZG93cyBzaG91bGQgcmVuZGVyIGlucHV0W3R5cGU9InNlYXJjaCJdIHRo
ZSBzYW1lIGFzIGlucHV0IHdpdGggbm8gdHlwZS4KKyAgIFRoaXMgc2VhcmNoIHRoaW5nIGlzIGFu
IEFwcGxlLWlzbSB0byBnZXQgbWFjIHN0eWxlIHNlYXJjaCBpbnB1dHMuICovCitpbnB1dFt0eXBl
PSJzZWFyY2giXSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CisgICAgLXdl
YmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKK30KKworaW5wdXRbdHlwZT0iYnV0dG9uIl0s
IGlucHV0W3R5cGU9InN1Ym1pdCJdLCBpbnB1dFt0eXBlPSJyZXNldCJdLCBpbnB1dFt0eXBlPSJm
aWxlIl06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uLCBidXR0b24geworICAgIC8qIE1hdGNo
ZXMgRmlyZWZveCAqLworICAgIHBhZGRpbmc6IDAgNnB4OworICAgIG1hcmdpbjogMDsKK30KKwor
LyogV2luZG93cyBzZWxlY3RzIGFyZSBub3Qgcm91bmRlZC4gQ3VzdG9tIGJvcmRlcnMgZm9yIHRo
ZW0gc2hvdWxkbid0IGJlIGVpdGhlci4gKi8KK2tleWdlbiwgCitzZWxlY3QsIAorc2VsZWN0W3Np
emU9IjAiXSwKK3NlbGVjdFtzaXplPSIxIl0geworICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czog
MDsKKyAgICBtYXJnaW46IDA7Cit9CisKK3RleHRhcmVhIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9z
cGFjZTsKKyAgbWFyZ2luOiAxcHggMDsKKworICAvKiBNYXRjaGVzIElFICovCisgIHBhZGRpbmc6
IDJweDsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvY3NzL3RoZW1lV2luLmNzcwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJDb3JlL2Nz
cy90aGVtZVdpblF1aXJrcy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvdGhlbWVXaW5R
dWlya3MuY3NzCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvdGhlbWVXaW5RdWlya3MuY3Nz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKiBUaGVzZSBzdHlsZXMgb3ZlcnJpZGUg
dGhlIGRlZmF1bHQgc3R5bGluZyBmb3IgSFRNTCBlbGVtZW50cyBpbiBxdWlya3MtbW9kZQorICAg
YXMgZGVmaW5lZCBpbiBXZWJDb3JlL2Nzcy9xdWlya3MuY3NzLiBTbyBmYXIgd2UgaGF2ZSB1c2Vk
IHRoaXMgZmlsZSBleGNsdXNpdmVseSBmb3IKKyAgIG1ha2luZyBvdXIgZm9ybSBlbGVtZW50cyBt
YXRjaCBGaXJlZm94J3MuICovCisKK3RleHRhcmVhIHsKKyAgLyogTWF0Y2hlcyBJRSdzIHRleHQg
b2Zmc2V0cyBpbiBxdWlya3Ntb2RlIChjYXVzZXMgdGV4dCB0byB3cmFwIHRoZSBzYW1lIGFzIElF
KS4gKi8KKyAgcGFkZGluZzogMnB4IDAgMCAycHg7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBX
ZWJDb3JlL2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1
dGFibGUKICAgKyAqCgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCShy
ZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc1NCwxMyArNzU0LDE1IEBAIENvbnRyb2xQYXJ0IFJlbmRlclRo
ZW1lUXQ6OmFwcGx5VGhlbWUoUVMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFJlbmRl
clRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZSkKK1N0
cmluZyBSZW5kZXJUaGVtZVF0OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKIHsKICAgICBRRmls
ZSBwbGF0Zm9ybVN0eWxlU2hlZXQoIjovd2ViY29yZS9yZXNvdXJjZXMvaHRtbDQtYWRqdXN0bWVu
dHMtcXQuY3NzIik7CiAgICAgaWYgKHBsYXRmb3JtU3R5bGVTaGVldC5vcGVuKFFGaWxlOjpSZWFk
T25seSkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBzaGVldERhdGEgPSBwbGF0Zm9ybVN0eWxlU2hl
ZXQucmVhZEFsbCgpOwotICAgICAgICBzdHlsZS0+cGFyc2VTdHJpbmcoUVN0cmluZzo6ZnJvbVV0
Zjgoc2hlZXREYXRhLmNvbnN0RGF0YSgpLCBzaGVldERhdGEubGVuZ3RoKCkpKTsKKyAgICAgICAg
cmV0dXJuIFFTdHJpbmc6OmZyb21VdGY4KHNoZWV0RGF0YS5jb25zdERhdGEoKSwgc2hlZXREYXRh
Lmxlbmd0aCgpKTsKICAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKGh0bWw0VXNlckFnZW50U3R5
bGVTaGVldCwgc2l6ZW9mKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCkpOwogfQogCiAjaWYgRU5B
QkxFKFZJREVPKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgJKHJldmlzaW9u
IDM4MTE3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIFJlbmRlclRoZW1lUXQoKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVF0KCk7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYURl
ZmF1bHRTdHlsZVNoZWV0KCk7CisKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25z
dCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzUmlu
Zyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDEyICsxOTgsNiBAQCB2b2lkIFJlbmRl
clRoZW1lOjphZGp1c3RTdHlsZShDU1NTdHlsZVNlCiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JN
KFFUKQotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoQ1NTU3R5bGVT
aGVldCopCi17Ci19Ci0jZW5kaWYKLQogYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByKQogewogICAgIC8vIElmIHBhaW50aW5nIGlzIGRpc2FibGVkLCBidXQgd2UgYXJl
bid0IHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIHRoZW4ganVzdCBiYWlsLgpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAzODExNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkanVzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqLCAgYm9vbCBVQUhhc0FwcGVhcmFuY2UsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBC
b3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xv
cik7CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25jZSwgZnJvbSBDU1NTdHlsZVNl
bGVjdG9yOjpsb2FkRGVmYXVsdFN0eWxlKCksIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVzdAot
ICAgIC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sNC5jc3MuCi0gICAgc3RhdGljIHZv
aWQgYWRqdXN0RGVmYXVsdFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwotCiAgICAgLy8gVGhp
cyBtZXRob2QgaXMgY2FsbGVkIHRvIHBhaW50IHRoZSB3aWRnZXQgYXMgYSBiYWNrZ3JvdW5kIG9m
IHRoZSBSZW5kZXJPYmplY3QuICBBIHdpZGdldCdzIGZvcmVncm91bmQsIGUuZy4sIHRoZQogICAg
IC8vIHRleHQgb2YgYSBidXR0b24sIGlzIGFsd2F5cyByZW5kZXJlZCBieSB0aGUgZW5naW5lIGl0
c2VsZi4gIFRoZSBib29sZWFuIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKICAgICAvLyB3aGV0aGVy
IHRoZSBDU1MgYm9yZGVyL2JhY2tncm91bmQgc2hvdWxkIGFsc28gYmUgcGFpbnRlZC4KQEAgLTY0
LDYgKzYwLDExIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcmVtYWluaW5nIG1ldGhvZHMgc2hvdWxk
IGJlIGltcGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBwb3J0aW9uIG9mIHRoZSB0
aGVtZSwgZS5nLiwKICAgICAvLyBSZW5kZXJUaGVtZU1hYy5jcHAgZm9yIE1hYyBPUyBYLgogCisg
ICAgLy8gVGhlc2UgbWV0aG9kcyByZXR1cm4gdGhlIHRoZW1lJ3MgZXh0cmEgc3R5bGUgc2hlZXRz
IHJ1bGVzLCB0byBsZXQgZWFjaAorICAgIC8vIHBsYXRmb3JtIGFkanVzdCB0aGUgZGVmYXVsdCBD
U1MgcnVsZXMgaW4gaHRtbDQuY3NzIG9yIHF1aXJrcy5jc3MuCisgICAgdmlydHVhbCBTdHJpbmcg
ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVh
bCBTdHJpbmcgZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KKwog
ICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9zaXRpb24gZm9yIGEgImxl
YWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKICAgICAv
LyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgY2hpbGQgY29udGVu
dC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhhbXBsZXMgb2YKICAgICAvLyBj
b250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5jcHAJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVXaW4uaCIKIAorI2luY2x1ZGUgIkNTU1N0
eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTI5LDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKKyNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogCiAjaW5j
bHVkZSA8dGNoYXIuaD4KIApAQCAtMTc4LDYgKzE4MCwxNiBAQCB2b2lkIFJlbmRlclRoZW1lV2lu
Ojp0aGVtZUNoYW5nZWQoKQogICAgIGNsb3NlKCk7CiB9CiAKK1N0cmluZyBSZW5kZXJUaGVtZVdp
bjo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpCit7CisgICAgcmV0dXJuIFN0cmluZyh0aGVtZVdp
blVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZih0aGVtZVdpblVzZXJBZ2VudFN0eWxlU2hlZXQp
KTsKK30KKworU3RyaW5nIFJlbmRlclRoZW1lV2luOjpleHRyYVF1aXJrc1N0eWxlU2hlZXQoKQor
eworICAgIHJldHVybiBTdHJpbmcodGhlbWVXaW5RdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YodGhlbWVXaW5RdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisKIGJvb2wgUmVu
ZGVyVGhlbWVXaW46OnN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdAogewog
ICAgIC8vIFRoZSBDbGFzc2ljLzJrIGxvb2sgaGFzIG5vIGhvdmVyIGVmZmVjdHMuCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgJKHJldmlzaW9uIDM4MTE3KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsMTAg
QEAgY2xhc3MgUmVuZGVyVGhlbWVXaW4gOiBwdWJsaWMgUmVuZGVyVGhlbQogcHVibGljOgogICAg
IFJlbmRlclRoZW1lV2luKCk7CiAgICAgflJlbmRlclRoZW1lV2luKCk7Ci0gICAgICAgCisKKyAg
ICB2aXJ0dWFsIFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgdmlydHVhbCBT
dHJpbmcgZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CisKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcg
aWYgdGhlIHRoZW1lJ3MgY29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcgd2hl
biBob3ZlcmVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0
eWxlKikgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>