<?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>27651</bug_id>
          
          <creation_ts>2009-07-24 06:51:16 -0700</creation_ts>
          <short_desc>[Qt] QWebPluginDatabase API</short_desc>
          <delta_ts>2009-11-08 16:23:30 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakub Wieczorek">jwieczorek</reporter>
          <assigned_to name="Jakub Wieczorek">jwieczorek</assigned_to>
          <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134530</commentid>
    <comment_count>0</comment_count>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 06:51:16 -0700</bug_when>
    <thetext>Following https://bugs.webkit.org/show_bug.cgi?id=27210 and after the decision made during IRC discussions, I wrote a new class, QWebPluginDatabase, that provides a basic API for managing Netscape plugins picked up by WebKit. 

Currently it allows:
- getting a list of plugins picked up by WebKit, with information about supported MIME types
- changing the search paths
- disabling particular plugins
- choosing a preferred plugin for a MIME type

Some of the features required changes in the PluginDatabase and PluginPackage classes, hence I&apos;ve separated the general patches from the Qt-specific one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134532</commentid>
    <comment_count>1</comment_count>
      <attachid>33435</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 06:56:25 -0700</bug_when>
    <thetext>Created attachment 33435
When clearing the plugin database, clear also the timestamp map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134534</commentid>
    <comment_count>2</comment_count>
      <attachid>33436</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 07:02:31 -0700</bug_when>
    <thetext>Created attachment 33436
Allow to enable/disable particular plugin packages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134538</commentid>
    <comment_count>3</comment_count>
      <attachid>33438</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 07:10:51 -0700</bug_when>
    <thetext>Created attachment 33438
Allow to explicitly choose a preferred plugin for a mimetype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134541</commentid>
    <comment_count>4</comment_count>
      <attachid>33440</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 07:15:22 -0700</bug_when>
    <thetext>Created attachment 33440
Expose the PluginDatabase::pluginForMIMEType() function as public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134544</commentid>
    <comment_count>5</comment_count>
      <attachid>33441</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 07:19:05 -0700</bug_when>
    <thetext>Created attachment 33441
Expose the default plugin directories and the current directory set of the plugin database as public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134545</commentid>
    <comment_count>6</comment_count>
      <attachid>33442</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 07:26:06 -0700</bug_when>
    <thetext>Created attachment 33442
Fix style in PluginPackage and PluginDatabase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134547</commentid>
    <comment_count>7</comment_count>
      <attachid>33443</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-24 07:30:19 -0700</bug_when>
    <thetext>Created attachment 33443
Add QWebPluginDatabase class to the Qt API.

And this is the main, Qt-specific patch that adds the QWebPluginDatabase API.

It&apos;s not ready for review yet, first it needs some more API review and it needs docs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135018</commentid>
    <comment_count>8</comment_count>
      <attachid>33435</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-07-27 14:22:11 -0700</bug_when>
    <thetext>Comment on attachment 33435
When clearing the plugin database, clear also the timestamp map.

Landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135143</commentid>
    <comment_count>9</comment_count>
      <attachid>33435</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-28 02:30:40 -0700</bug_when>
    <thetext>Comment on attachment 33435
When clearing the plugin database, clear also the timestamp map.

Clearing review on this one as it has been landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135281</commentid>
    <comment_count>10</comment_count>
      <attachid>33442</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-28 11:04:42 -0700</bug_when>
    <thetext>Comment on attachment 33442
Fix style in PluginPackage and PluginDatabase.

Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135350</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-28 13:31:15 -0700</bug_when>
    <thetext>Fix style in PluginPackage and PluginDatabase is landed in 46499.

Please someone remove the r+ as I&apos;m not authorized to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135536</commentid>
    <comment_count>12</comment_count>
      <attachid>33704</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-29 02:30:16 -0700</bug_when>
    <thetext>Created attachment 33704
Add QWebPluginDatabase class to the Qt API (with API docs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135568</commentid>
    <comment_count>13</comment_count>
      <attachid>33442</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-29 05:39:48 -0700</bug_when>
    <thetext>Comment on attachment 33442
Fix style in PluginPackage and PluginDatabase.

Clearing review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135574</commentid>
    <comment_count>14</comment_count>
      <attachid>33436</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-07-29 06:34:21 -0700</bug_when>
    <thetext>Comment on attachment 33436
Allow to enable/disable particular plugin packages.

&gt; +        bool isEnabled() const { return m_isEnabled; }
&gt; +        void setEnabled(bool enabled);

Minor nit: &quot;Leave meaningless variable names out of function declarations.&quot;  from style guide...

r+ with this minor change which can be made upon landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135579</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-29 07:38:03 -0700</bug_when>
    <thetext>https://bugs.webkit.org/attachment.cgi?id=33436 was landed in 46540. Please clear flags as I do not have access to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135580</commentid>
    <comment_count>16</comment_count>
      <attachid>33440</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-29 07:41:37 -0700</bug_when>
    <thetext>Comment on attachment 33440
Expose the PluginDatabase::pluginForMIMEType() function as public API.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135581</commentid>
    <comment_count>17</comment_count>
      <attachid>33441</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-29 07:41:58 -0700</bug_when>
    <thetext>Comment on attachment 33441
Expose the default plugin directories and the current directory set of the plugin database as public API.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135583</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-29 07:44:55 -0700</bug_when>
    <thetext>https://bugs.webkit.org/attachment.cgi?id=33438

You introduce a new hashmap, should be cleared in clear(). r- if I could review :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135584</commentid>
    <comment_count>19</comment_count>
      <attachid>33438</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-29 07:49:49 -0700</bug_when>
    <thetext>Comment on attachment 33438
Allow to explicitly choose a preferred plugin for a mimetype.

The patch looks good, but I think there&apos;s one bug left: The m_preferredPlugins hash keeps PluginPackage instances alife, through the use of RefPtr. When calling clear() as well as refresh() we may have to free the references to these plugins, to allow the pluginpackage objects to be freed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135585</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-29 07:55:53 -0700</bug_when>
    <thetext>https://bugs.webkit.org/attachment.cgi?id=33440 landed in 46541.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135616</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-29 10:09:41 -0700</bug_when>
    <thetext>https://bugs.webkit.org/attachment.cgi?id=33441 landed in 46546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135640</commentid>
    <comment_count>22</comment_count>
      <attachid>33730</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-29 12:16:21 -0700</bug_when>
    <thetext>Created attachment 33730
Allow to explicitly choose a preferred plugin for a mimetype - r2.

(In reply to comment #19)
&gt; (From update of attachment 33438 [details])
&gt; The patch looks good, but I think there&apos;s one bug left: The m_preferredPlugins
&gt; hash keeps PluginPackage instances alife, through the use of RefPtr. When
&gt; calling clear() as well as refresh() we may have to free the references to
&gt; these plugins, to allow the pluginpackage objects to be freed.

Fixed, thanks. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135803</commentid>
    <comment_count>23</comment_count>
      <attachid>33766</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-30 03:43:16 -0700</bug_when>
    <thetext>Created attachment 33766
Allow to explicitly choose a preferred plugin for a mimetype - r3.

ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135827</commentid>
    <comment_count>24</comment_count>
      <attachid>33766</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-30 05:51:07 -0700</bug_when>
    <thetext>Comment on attachment 33766
Allow to explicitly choose a preferred plugin for a mimetype - r3.

r=me

+    if (plugin &amp;&amp; !plugin-&gt;mimeToExtensions().contains(mimeType))

I would formulate this one the other way around:

if (!plugin || plugin-&gt;mimeToExtension().contains(mimeType))
    return;

What do you think?

The rest looks good to me :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135830</commentid>
    <comment_count>25</comment_count>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-30 05:57:59 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 33766 [details])
&gt; r=me
&gt; 
&gt; +    if (plugin &amp;&amp; !plugin-&gt;mimeToExtensions().contains(mimeType))
&gt; 
&gt; I would formulate this one the other way around:
&gt; 
&gt; if (!plugin || plugin-&gt;mimeToExtension().contains(mimeType))
&gt;     return;
&gt; 
&gt; What do you think?

That was not the purpose. We want to set the plugin only if it supports the given mime type or is null (because that will reset the setting).

Or did you mean:

if (!plugin || plugin-&gt;mimeToExtension().contains(mimeType))
    m_preferredPlugins.set(mimeType.lower(), plugin);

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136221</commentid>
    <comment_count>26</comment_count>
      <attachid>33894</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-31 13:01:24 -0700</bug_when>
    <thetext>Created attachment 33894
Add normalizePath() function to the FileSystem files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136222</commentid>
    <comment_count>27</comment_count>
      <attachid>33895</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-07-31 13:01:52 -0700</bug_when>
    <thetext>Created attachment 33895
Don&apos;t clear the plugin database when changing search paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136487</commentid>
    <comment_count>28</comment_count>
      <attachid>33941</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-01 13:34:10 -0700</bug_when>
    <thetext>Created attachment 33941
Add QWebPluginDatabase class to the Qt API - r3.

Update the patch with more test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136750</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-03 13:00:16 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 33766 [details] [details])
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; +    if (plugin &amp;&amp; !plugin-&gt;mimeToExtensions().contains(mimeType))
&gt; &gt; 
&gt; &gt; I would formulate this one the other way around:
&gt; &gt; 
&gt; &gt; if (!plugin || plugin-&gt;mimeToExtension().contains(mimeType))
&gt; &gt;     return;
&gt; &gt; 
&gt; &gt; What do you think?
&gt; 
&gt; That was not the purpose. We want to set the plugin only if it supports the
&gt; given mime type or is null (because that will reset the setting).
&gt; 
&gt; Or did you mean:
&gt; 
&gt; if (!plugin || plugin-&gt;mimeToExtension().contains(mimeType))
&gt;     m_preferredPlugins.set(mimeType.lower(), plugin);
&gt; 
&gt; ?

Ahh, yes and no. I think what I found strange was that it would allow for a null plugin pointer to be passed, which doesn&apos;t seem intentional. Perhaps it would make sense to separate the null pointer check from the extension check, i.e. make the method return if (!plugin) regardless. Does that make any sense? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136784</commentid>
    <comment_count>30</comment_count>
      <attachid>33941</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-03 14:34:32 -0700</bug_when>
    <thetext>Comment on attachment 33941
Add QWebPluginDatabase class to the Qt API - r3.

r=me. There&apos;s a few things that would be nice to clean up in follow-up patches.

&gt; +bool QWebPlugin::MimeType::operator==(const MimeType&amp; other) const
&gt; +{
&gt; +    return name == other.name
&gt; +           &amp;&amp; description == other.description
&gt; +           &amp;&amp; fileExtensions == other.fileExtensions;
&gt; +}

We really should also have an operator!= if we offer operator==.

&gt; +/*!
&gt; +    Constructs a null QWebPlugin.
&gt; +*/
&gt; +QWebPlugin::QWebPlugin()
&gt; +    : d(new QWebPluginPrivate(0))
&gt; +{
&gt; +}

It would be nice if this class could be constructed without a malloc, i.e. if the null QWebPlugin would be null due to it&apos;s null d pointer. That makes it cheaper and avoids unnecessary mallocs.
In fact I would even go as far as having a private d-pointer but also the plugin pointer directly as member, similar to QWebElement, to reduce the number of mallocs even more.

&gt; +/*!
&gt; +    Returns a list of MIME types that are supported by the plugin.
&gt; +
&gt; +    \sa supportsMimeType()
&gt; +*/
&gt; +QList&lt;QWebPlugin::MimeType&gt; QWebPlugin::mimeTypes() const
&gt; +{
&gt; +    if (!d-&gt;plugin)
&gt; +        return QList&lt;MimeType&gt;();
&gt; +
&gt; +    QList&lt;MimeType&gt; mimeTypes;
&gt; +    const MIMEToDescriptionsMap&amp; mimeToDescriptions = d-&gt;plugin-&gt;mimeToDescriptions();
&gt; +    MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end();
&gt; +    for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) {
&gt; +        MimeType mimeType;
&gt; +        mimeType.name = it-&gt;first;
&gt; +        mimeType.description = it-&gt;second;
&gt; +
&gt; +        QStringList fileExtensions;
&gt; +        Vector&lt;String&gt; extensions = d-&gt;plugin-&gt;mimeToExtensions().get(mimeType.name);
&gt; +
&gt; +        for (unsigned i = 0; i &lt; extensions.size(); ++i)
&gt; +            fileExtensions.append(extensions[i]);
&gt; +
&gt; +        mimeType.fileExtensions = fileExtensions;
&gt; +        mimeTypes.append(mimeType);
&gt; +    }
&gt; +
&gt; +    return mimeTypes;
&gt; +}

It might be worth mentioning in the docs that this method is not as fast as it seems...


&gt; +
&gt; +/*!
&gt; +    Returns true if the plugin supports a specific \a mimeType, false otherwise.
&gt; +
&gt; +    \sa mimeTypes()
&gt; +*/
&gt; +bool QWebPlugin::supportsMimeType(const QString&amp; mimeType) const
&gt; +{
&gt; +    QList&lt;MimeType&gt; types = mimeTypes();
&gt; +    foreach (const MimeType&amp; type, types) {
&gt; +        if (type.name == mimeType)
&gt; +            return true;
&gt; +    }

Would it be possible to implement this more efficiently? It seems expensive to call mimeTypes() every time.

&gt; +/*!
&gt; +    Enables or disables the plugin.
&gt; +
&gt; +    Disabled plugins will not be picked up by WebKit when looking for a plugin supporting
&gt; +    a particular MIME type.
&gt; +
&gt; +    \sa isEnabled()
&gt; +*/
&gt; +void QWebPlugin::setEnabled(bool enabled)
&gt; +{
&gt; +    if (!d-&gt;plugin)
&gt; +        return;
&gt; +    d-&gt;plugin-&gt;setEnabled(enabled);
&gt; +}

Shouldn&apos;t the docs mention that refresh() needs to be called afterwards? But perhaps I&apos;m missing something :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136788</commentid>
    <comment_count>31</comment_count>
      <attachid>33895</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-03 14:46:47 -0700</bug_when>
    <thetext>Comment on attachment 33895
Don&apos;t clear the plugin database when changing search paths.

Clearing review as I want to improve the patch a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137746</commentid>
    <comment_count>32</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-08-06 19:27:50 -0700</bug_when>
    <thetext>Simon, didn&apos;t you actually land this last patch? Please clear tag then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137763</commentid>
    <comment_count>33</comment_count>
      <attachid>33894</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 20:37:37 -0700</bug_when>
    <thetext>Comment on attachment 33894
Add normalizePath() function to the FileSystem files.

This seems OK.  Maybe it should be called normalizePathForComparison if it&apos;s only for comparison.  It&apos;s unclear what &quot;normalize&quot; should actually do?  Does it resolve symlinks?  Does it remove traililing &apos;/&apos; chars?  Does it return the ~1 windows form of paths?  r- for more explanation and or a better name...

In general I&apos;m in favor of the concept though.  Another way would be to to just have a arePathsEqual function. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137816</commentid>
    <comment_count>34</comment_count>
      <attachid>33941</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-07 00:52:39 -0700</bug_when>
    <thetext>Comment on attachment 33941
Add QWebPluginDatabase class to the Qt API - r3.

Clearing review after landing (Thanks Kenneth :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139294</commentid>
    <comment_count>35</comment_count>
      <attachid>34653</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-12 04:47:50 -0700</bug_when>
    <thetext>Created attachment 34653
Remove the private classes from QWebPluginDatabase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139295</commentid>
    <comment_count>36</comment_count>
      <attachid>34654</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-12 04:49:43 -0700</bug_when>
    <thetext>Created attachment 34654
Optimize the QWebPluginInfo::supportsMimeType() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139296</commentid>
    <comment_count>37</comment_count>
      <attachid>34655</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-12 04:50:59 -0700</bug_when>
    <thetext>Created attachment 34655
Optimize the QWebPluginInfo::mimeTypes() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139297</commentid>
    <comment_count>38</comment_count>
      <attachid>34656</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-12 04:53:44 -0700</bug_when>
    <thetext>Created attachment 34656
Move the PluginDatabase::setPluginDirectories() function definition out of the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140458</commentid>
    <comment_count>39</comment_count>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-15 06:53:33 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 33941 [details])
&gt; r=me. There&apos;s a few things that would be nice to clean up in follow-up patches.
&gt; 
&gt; &gt; +bool QWebPlugin::MimeType::operator==(const MimeType&amp; other) const
&gt; &gt; +{
&gt; &gt; +    return name == other.name
&gt; &gt; +           &amp;&amp; description == other.description
&gt; &gt; +           &amp;&amp; fileExtensions == other.fileExtensions;
&gt; &gt; +}
&gt; 
&gt; We really should also have an operator!= if we offer operator==.

Already fixed in http://trac.webkit.org/changeset/46763.

&gt; 
&gt; &gt; +/*!
&gt; &gt; +    Constructs a null QWebPlugin.
&gt; &gt; +*/
&gt; &gt; +QWebPlugin::QWebPlugin()
&gt; &gt; +    : d(new QWebPluginPrivate(0))
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; It would be nice if this class could be constructed without a malloc, i.e. if
&gt; the null QWebPlugin would be null due to it&apos;s null d pointer. That makes it
&gt; cheaper and avoids unnecessary mallocs.
&gt; In fact I would even go as far as having a private d-pointer but also the
&gt; plugin pointer directly as member, similar to QWebElement, to reduce the number
&gt; of mallocs even more.

Done.

&gt; 
&gt; &gt; +/*!
&gt; &gt; +    Returns a list of MIME types that are supported by the plugin.
&gt; &gt; +
&gt; &gt; +    \sa supportsMimeType()
&gt; &gt; +*/
&gt; &gt; +QList&lt;QWebPlugin::MimeType&gt; QWebPlugin::mimeTypes() const
&gt; &gt; +{
&gt; &gt; +    if (!d-&gt;plugin)
&gt; &gt; +        return QList&lt;MimeType&gt;();
&gt; &gt; +
&gt; &gt; +    QList&lt;MimeType&gt; mimeTypes;
&gt; &gt; +    const MIMEToDescriptionsMap&amp; mimeToDescriptions = d-&gt;plugin-&gt;mimeToDescriptions();
&gt; &gt; +    MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end();
&gt; &gt; +    for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) {
&gt; &gt; +        MimeType mimeType;
&gt; &gt; +        mimeType.name = it-&gt;first;
&gt; &gt; +        mimeType.description = it-&gt;second;
&gt; &gt; +
&gt; &gt; +        QStringList fileExtensions;
&gt; &gt; +        Vector&lt;String&gt; extensions = d-&gt;plugin-&gt;mimeToExtensions().get(mimeType.name);
&gt; &gt; +
&gt; &gt; +        for (unsigned i = 0; i &lt; extensions.size(); ++i)
&gt; &gt; +            fileExtensions.append(extensions[i]);
&gt; &gt; +
&gt; &gt; +        mimeType.fileExtensions = fileExtensions;
&gt; &gt; +        mimeTypes.append(mimeType);
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    return mimeTypes;
&gt; &gt; +}
&gt; 
&gt; It might be worth mentioning in the docs that this method is not as fast as it
&gt; seems...

Right. It&apos;s now optimized.

&gt; 
&gt; 
&gt; &gt; +
&gt; &gt; +/*!
&gt; &gt; +    Returns true if the plugin supports a specific \a mimeType, false otherwise.
&gt; &gt; +
&gt; &gt; +    \sa mimeTypes()
&gt; &gt; +*/
&gt; &gt; +bool QWebPlugin::supportsMimeType(const QString&amp; mimeType) const
&gt; &gt; +{
&gt; &gt; +    QList&lt;MimeType&gt; types = mimeTypes();
&gt; &gt; +    foreach (const MimeType&amp; type, types) {
&gt; &gt; +        if (type.name == mimeType)
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; 
&gt; Would it be possible to implement this more efficiently? It seems expensive to
&gt; call mimeTypes() every time.

Done.

&gt; 
&gt; &gt; +/*!
&gt; &gt; +    Enables or disables the plugin.
&gt; &gt; +
&gt; &gt; +    Disabled plugins will not be picked up by WebKit when looking for a plugin supporting
&gt; &gt; +    a particular MIME type.
&gt; &gt; +
&gt; &gt; +    \sa isEnabled()
&gt; &gt; +*/
&gt; &gt; +void QWebPlugin::setEnabled(bool enabled)
&gt; &gt; +{
&gt; &gt; +    if (!d-&gt;plugin)
&gt; &gt; +        return;
&gt; &gt; +    d-&gt;plugin-&gt;setEnabled(enabled);
&gt; &gt; +}
&gt; 
&gt; Shouldn&apos;t the docs mention that refresh() needs to be called afterwards? But
&gt; perhaps I&apos;m missing something :)

refresh() doesn&apos;t need to be called afterwards.

Disabling plugins has only effect on the searching stage, i.e. when WebKit picks a plugin for a given type, at which point this setting is checked. It is not cached so the database doesn&apos;t need to be refreshed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140462</commentid>
    <comment_count>40</comment_count>
      <attachid>34896</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-15 08:32:53 -0700</bug_when>
    <thetext>Created attachment 34896
Add arePathsEqual() function to the FileSystem files.

(In reply to comment #33)
&gt; (From update of attachment 33894 [details])
&gt; This seems OK.  Maybe it should be called normalizePathForComparison if it&apos;s
&gt; only for comparison.  It&apos;s unclear what &quot;normalize&quot; should actually do?  Does
&gt; it resolve symlinks?  Does it remove traililing &apos;/&apos; chars?  Does it return the
&gt; ~1 windows form of paths?  r- for more explanation and or a better name...
&gt; 
&gt; In general I&apos;m in favor of the concept though.  Another way would be to to just
&gt; have a arePathsEqual function. :)

I&apos;m not so sure myself what normalizePath() should exactly do. :) Definitely remove a trailing slash, strip trailing whitespaces, resolve relative subpaths (e.g. /foo/bar/../baz)... Not necessarily resolve symbolic links. Not sure what else and what directory separators it should use.

I gave the arePathsEqual() concept a try. It seems to be a good idea to leave the comparison part up to the ports so they can decide what they should do before comparing the strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140467</commentid>
    <comment_count>41</comment_count>
      <attachid>34899</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-08-15 09:06:23 -0700</bug_when>
    <thetext>Created attachment 34899
Don&apos;t clear the plugin database when changing search paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144561</commentid>
    <comment_count>42</comment_count>
      <attachid>34653</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-03 12:08:11 -0700</bug_when>
    <thetext>Comment on attachment 34653
Remove the private classes from QWebPluginDatabase.

Jakub, the patch looks great to me, except for one _tiny_ buglet. I&apos;ll r+ it if you
could leave the d pointers in there. Add the m_plugin, m_database, etc. members, that&apos;s
great. But keep the (forward declared) d-pointers, too, even if they&apos;re unused. _If_ 
something goes wrong we can still extend with the d-pointer and keep binary compatibility.

Sorry :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144562</commentid>
    <comment_count>43</comment_count>
      <attachid>34654</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-03 12:10:24 -0700</bug_when>
    <thetext>Comment on attachment 34654
Optimize the QWebPluginInfo::supportsMimeType() function.

r=me. This patch won&apos;t apply as-is as it relies on the earlier d-pointer -&gt; m_package change, which needs a minor tweak. Otherwise this is good stuff :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144565</commentid>
    <comment_count>44</comment_count>
      <attachid>34655</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-03 12:13:13 -0700</bug_when>
    <thetext>Comment on attachment 34655
Optimize the QWebPluginInfo::mimeTypes() function.

Hmm, wouldn&apos;t it be better to do this on-demand by having m_mimeTypes mutable? Otherwise it becomes much more expensive to construct a QWebPluginInfo object even if you never call mimeTypes() on it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144567</commentid>
    <comment_count>45</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-03 12:19:34 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 33894 [details])
&gt; This seems OK.  Maybe it should be called normalizePathForComparison if it&apos;s
&gt; only for comparison.  It&apos;s unclear what &quot;normalize&quot; should actually do?  Does
&gt; it resolve symlinks?  Does it remove traililing &apos;/&apos; chars?  Does it return the
&gt; ~1 windows form of paths?  r- for more explanation and or a better name...
&gt; 
&gt; In general I&apos;m in favor of the concept though.  Another way would be to to just
&gt; have a arePathsEqual function. :)

I admit I prefer a function that does one thing, normalize a path by for example removing redundant pieces. arePathsEqual does two things, normalize and then compare. Unless the other operating systems have one function for both I can imagine that all the FileSystemXXX.cpp implementations are going to add an internal function to normalize and then do a string comparision :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145000</commentid>
    <comment_count>46</comment_count>
      <attachid>39110</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-09-05 04:53:23 -0700</bug_when>
    <thetext>Created attachment 39110
Remove the private classes from QWebPluginDatabase.

(In reply to comment #42)
&gt; (From update of attachment 34653 [details])
&gt; Jakub, the patch looks great to me, except for one _tiny_ buglet. I&apos;ll r+ it if
&gt; you
&gt; could leave the d pointers in there. Add the m_plugin, m_database, etc.
&gt; members, that&apos;s
&gt; great. But keep the (forward declared) d-pointers, too, even if they&apos;re unused.
&gt; _If_ 
&gt; something goes wrong we can still extend with the d-pointer and keep binary
&gt; compatibility.
&gt; 
&gt; Sorry :)

No problem, I agree with that.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145001</commentid>
    <comment_count>47</comment_count>
      <attachid>39111</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-09-05 04:59:59 -0700</bug_when>
    <thetext>Created attachment 39111
Remove the private classes from QWebPluginDatabase.

ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145003</commentid>
    <comment_count>48</comment_count>
      <attachid>39112</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-09-05 05:26:48 -0700</bug_when>
    <thetext>Created attachment 39112
Optimize the QWebPluginInfo::mimeTypes() function.

(In reply to comment #44)
&gt; (From update of attachment 34655 [details])
&gt; Hmm, wouldn&apos;t it be better to do this on-demand by having m_mimeTypes mutable?
&gt; Otherwise it becomes much more expensive to construct a QWebPluginInfo object
&gt; even if you never call mimeTypes() on it?

Right, makes sense to me. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145004</commentid>
    <comment_count>49</comment_count>
      <attachid>39113</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-09-05 05:30:26 -0700</bug_when>
    <thetext>Created attachment 39113
Optimize the QWebPluginInfo::mimeTypes() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145040</commentid>
    <comment_count>50</comment_count>
      <attachid>39120</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-09-06 01:51:11 -0700</bug_when>
    <thetext>Created attachment 39120
Add normalizePathForComparison() function to platform/FileSystem.

(In reply to comment #45)
&gt; (In reply to comment #33)
&gt; &gt; (From update of attachment 33894 [details] [details])
&gt; &gt; This seems OK.  Maybe it should be called normalizePathForComparison if it&apos;s
&gt; &gt; only for comparison.  It&apos;s unclear what &quot;normalize&quot; should actually do?  Does
&gt; &gt; it resolve symlinks?  Does it remove traililing &apos;/&apos; chars?  Does it return the
&gt; &gt; ~1 windows form of paths?  r- for more explanation and or a better name...
&gt; &gt; 
&gt; &gt; In general I&apos;m in favor of the concept though.  Another way would be to to just
&gt; &gt; have a arePathsEqual function. :)
&gt; 
&gt; I admit I prefer a function that does one thing, normalize a path by for
&gt; example removing redundant pieces. arePathsEqual does two things, normalize and
&gt; then compare. Unless the other operating systems have one function for both I
&gt; can imagine that all the FileSystemXXX.cpp implementations are going to add an
&gt; internal function to normalize and then do a string comparision :)

Alright, I got back to the old patch and renamed the function to normalizePathForComparison(), according to Eric&apos;s suggestion.
For Qt it uses QDir::cleanPath(). If other ports could use something similar, it should be sufficient.
http://doc.trolltech.com/4.5/qdir.html#cleanPath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145044</commentid>
    <comment_count>51</comment_count>
      <attachid>39121</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-09-06 02:21:23 -0700</bug_when>
    <thetext>Created attachment 39121
Add normalizePathForComparison() function to platform/FileSystem.

Changed the stub implementations to return an unnormalized path instead of an empty string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145045</commentid>
    <comment_count>52</comment_count>
      <attachid>39122</attachid>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-09-06 02:23:52 -0700</bug_when>
    <thetext>Created attachment 39122
Don&apos;t clear the plugin database when changing search paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145134</commentid>
    <comment_count>53</comment_count>
      <attachid>39111</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-07 06:15:42 -0700</bug_when>
    <thetext>Comment on attachment 39111
Remove the private classes from QWebPluginDatabase.

r=me

Come to think of it I realize that this optimization may not be actually worth it for QWebPluginDatabase itself, as it&apos;s a singleton. But for QWebPluginInfo it&apos;s worth it I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145135</commentid>
    <comment_count>54</comment_count>
      <attachid>39113</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-07 06:27:42 -0700</bug_when>
    <thetext>Comment on attachment 39113
Optimize the QWebPluginInfo::mimeTypes() function.

Looks good to me, r=me

You _could_ probably formulate the QString(&quot;%1=%2&quot;).arg(s1).arg(s2) stuff easier by writing first.name() + &quot;=&quot; + second.name(), but that&apos;s minor :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145143</commentid>
    <comment_count>55</comment_count>
      <attachid>39111</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-07 07:15:14 -0700</bug_when>
    <thetext>Comment on attachment 39111
Remove the private classes from QWebPluginDatabase.

Clearing flags on attachment: 39111

Committed r48112: &lt;http://trac.webkit.org/changeset/48112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145146</commentid>
    <comment_count>56</comment_count>
      <attachid>39113</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-07 07:22:00 -0700</bug_when>
    <thetext>Comment on attachment 39113
Optimize the QWebPluginInfo::mimeTypes() function.

Clearing flags on attachment: 39113

Committed r48113: &lt;http://trac.webkit.org/changeset/48113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145147</commentid>
    <comment_count>57</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-07 07:22:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145231</commentid>
    <comment_count>58</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-07 13:15:20 -0700</bug_when>
    <thetext>Re-opening as Jakub has two more patches up for review in this bug :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145474</commentid>
    <comment_count>59</comment_count>
      <attachid>39121</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-08 11:56:06 -0700</bug_when>
    <thetext>Comment on attachment 39121
Add normalizePathForComparison() function to platform/FileSystem.

As briefly discussed on the IRC, the patch looks good to me, but it needs a clear explanation of the expected semantics. The other port maintainers should feel encouraged to implement this function, knowing _why_ and _what_ to replace &quot;notImplemented()&quot; with :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150424</commentid>
    <comment_count>60</comment_count>
      <attachid>39122</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-27 14:16:45 -0700</bug_when>
    <thetext>Comment on attachment 39122
Don&apos;t clear the plugin database when changing search paths.

r=me, looks good to me. It&apos;s sad that this is an virtually un-layouttest-able codepath ;(

However landing this patch requires approval of the earlier normalizePathForComparision first!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152354</commentid>
    <comment_count>61</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-05 10:54:00 -0700</bug_when>
    <thetext>Please stop adding new patches to this bug... it&apos;s getting out of control. :)  Generally we try to do one change per bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155665</commentid>
    <comment_count>62</comment_count>
      <attachid>39122</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-19 05:14:16 -0700</bug_when>
    <thetext>Comment on attachment 39122
Don&apos;t clear the plugin database when changing search paths.

Rejecting patch 39122 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=39122 from bug 27651 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155981</commentid>
    <comment_count>63</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-19 16:57:46 -0700</bug_when>
    <thetext>Jakub will need to post a new patch.  Once we land this patch this bug should be closed and a new one used for further issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161433</commentid>
    <comment_count>64</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-08 10:42:24 -0800</bug_when>
    <thetext>Any thoughts from Jakub?  It&apos;s been nearly 3 weeks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161445</commentid>
    <comment_count>65</comment_count>
    <who name="Jakub Wieczorek">jwieczorek</who>
    <bug_when>2009-11-08 11:28:25 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; Any thoughts from Jakub?  It&apos;s been nearly 3 weeks.

Sorry for being silent about this bug for the last weeks.

The remaining patch was quite relevant for the particular Qt API but that has been made private for the next release of QtWebKit. I don&apos;t think it is essential for any other ports at all? The current version of the patch adds some additional assumptions, which currently the plugin loading process is free of. Moreover, as Simon has pointed out, this code path is hardly testable with the current testing capabilities. Therefore, I&apos;m not sure if it is worth it. I&apos;ll try to get back to this one in some future, hopefully with a better solution.

For now, the bug can be closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161455</commentid>
    <comment_count>66</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-08 16:23:30 -0800</bug_when>
    <thetext>Closing per Jakub&apos;s direction.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33435</attachid>
            <date>2009-07-24 06:56:25 -0700</date>
            <delta_ts>2009-07-28 02:30:40 -0700</delta_ts>
            <desc>When clearing the plugin database, clear also the timestamp map.</desc>
            <filename>e18943f.patch</filename>
            <type>text/plain</type>
            <size>1146</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjZiZjQyZS4uZTY2ZTI4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNy0yNCAgSmFrdWIgV2llY3pv
cmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIHRoZSBwbHVnaW4gZGF0YWJhc2UsIGNsZWFy
IGFsc28gdGhlIHRpbWVzdGFtcCBtYXAuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKKyAgICAgICAgCisgICAgICAgIEN1cnJl
bnRseSwgaWYgd2UgY2xlYXIgdGhlIGRhdGFiYXNlLCBpdCB3aWxsIHN0aWxsIHRoaW5rIHRoYXQg
aXQgaXMgdXAKKyAgICAgICAgdG8gZGF0ZSB3aXRoIHRoZSBwbHVnaW4gZGlyZWN0b3JpZXMgc28g
cmVmcmVzaGluZyB0aGUgZGF0YWJhc2UgYWdhaW4KKyAgICAgICAgYWZ0ZXIgY2hhbmdpbmcgdGhl
IHNlYXJjaCBwYXRocyBtYXkgbm90IHdvcmsuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpjbGVhcik6CisK
IDIwMDktMDctMjIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCAw
MzM1OGI0Li5kZTFjMjk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTI3MSw3
ICsyNzEsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpjbGVhcigpCiB7CiAgICAgbV9wbHVnaW5z
LmNsZWFyKCk7CiAgICAgbV9wbHVnaW5zQnlQYXRoLmNsZWFyKCk7Ci0KKyAgICBtX3BsdWdpblBh
dGhzV2l0aFRpbWVzLmNsZWFyKCk7CiAgICAgbV9yZWdpc3RlcmVkTUlNRVR5cGVzLmNsZWFyKCk7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33436</attachid>
            <date>2009-07-24 07:02:31 -0700</date>
            <delta_ts>2009-07-29 09:56:17 -0700</delta_ts>
            <desc>Allow to enable/disable particular plugin packages.</desc>
            <filename>959551f.patch</filename>
            <type>text/plain</type>
            <size>4116</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTY2ZTI4Yi4uNmFmZWE1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyOSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEFsbG93IHRvIGVuYWJsZS9kaXNhYmxlIHBhcnRpY3Vs
YXIgcGx1Z2luIHBhY2thZ2VzLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisgICAgICAgIAorICAgICAgICBEaXNhYmxlZCBw
bHVnaW5zIHdpbGwgbm90IGJlIHBpY2tlZCB1cCB3aGVuIGxvb2tpbmcgZm9yIGEgcGx1Z2luCisg
ICAgICAgIHN1cHBvcnRpbmcgdGhlIHJlcXVlc3RlZCBtaW1ldHlwZXMuCisgICAgICAgIAorICAg
ICAgICBDbGllbnQgYXBwbGljYXRpb25zIG1heSB3YW50IHRvIHVzZSB0aGF0IEFQSSB0byBkaXNh
YmxlIHNwZWNpZmljCisgICAgICAgIHBsdWdpbnMuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5G
b3JNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVG
b3JFeHRlbnNpb24pOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpQbHVnaW5QYWNrYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblBhY2thZ2U6OnNldEVuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6Omlz
RW5hYmxlZCk6IEFkZGVkLgorCisyMDA5LTA3LTI0ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdA
Z21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAg
ICAgIFdoZW4gY2xlYXJpbmcgdGhlIHBsdWdpbiBkYXRhYmFzZSwgY2xlYXIgYWxzbyB0aGUgdGlt
ZXN0YW1wIG1hcC4KICAgICAgICAgCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzY1MQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggZGUx
YzI5OC4uOTU2OWI4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0xNjUsOCAr
MTY1LDEzIEBAIFBsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIFZlY3RvcjxQbHVnaW5QYWNrYWdlKiwgMj4g
cGx1Z2luQ2hvaWNlczsKIAogICAgIGZvciAoUGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fcGx1Z2lucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQp
LT5taW1lVG9EZXNjcmlwdGlvbnMoKS5jb250YWlucyhrZXkpKQotICAgICAgICAgICAgcGx1Z2lu
Q2hvaWNlcy5hcHBlbmQoKCppdCkuZ2V0KCkpOworICAgICAgICBQbHVnaW5QYWNrYWdlKiBwbHVn
aW4gPSAoKml0KS5nZXQoKTsKKworICAgICAgICBpZiAoIXBsdWdpbi0+aXNFbmFibGVkKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAocGx1Z2luLT5taW1lVG9EZXNjcmlw
dGlvbnMoKS5jb250YWlucyhrZXkpKQorICAgICAgICAgICAgcGx1Z2luQ2hvaWNlcy5hcHBlbmQo
cGx1Z2luKTsKICAgICB9CiAKICAgICBpZiAocGx1Z2luQ2hvaWNlcy5pc0VtcHR5KCkpCkBAIC0x
ODgsNiArMTkzLDkgQEAgU3RyaW5nIFBsdWdpbkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgY29uc3QKICAgICBIYXNoTWFwPFBsdWdpblBhY2th
Z2UqLCBTdHJpbmc+IG1pbWVUeXBlRm9yUGx1Z2luOwogCiAgICAgZm9yIChQbHVnaW5TZXQ6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBpZiAoISgqaXQpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CiAgICAgICAgIE1JTUVUb0V4dGVuc2lvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIG1pbWVfZW5kID0g
KCppdCktPm1pbWVUb0V4dGVuc2lvbnMoKS5lbmQoKTsKIAogICAgICAgICBmb3IgKE1JTUVUb0V4
dGVuc2lvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIG1pbWVfaXQgPSAoKml0KS0+bWltZVRvRXh0ZW5z
aW9ucygpLmJlZ2luKCk7IG1pbWVfaXQgIT0gbWltZV9lbmQ7ICsrbWltZV9pdCkgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwIGIvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblBhY2thZ2UuY3BwCmluZGV4IDhhZGJhOTguLjFjOTM5YzIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHAKQEAgLTEwMCw3ICsxMDAsOCBAQCBpbnQgUGx1Z2luUGFja2FnZTo6Y29t
cGFyZShjb25zdCBQbHVnaW5QYWNrYWdlJiBjb21wYXJlVG8pIGNvbnN0CiB9CiAKIFBsdWdpblBh
Y2thZ2U6OlBsdWdpblBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3QmIGxh
c3RNb2RpZmllZCkKLSAgICA6IG1faXNMb2FkZWQoZmFsc2UpCisgICAgOiBtX2lzRW5hYmxlZCh0
cnVlKQorICAgICwgbV9pc0xvYWRlZChmYWxzZSkKICAgICAsIG1fbG9hZENvdW50KDApCiAgICAg
LCBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kdWxlVmVyc2lvbigwKQpAQCAtMTQ0LDYgKzE0NSwx
MSBAQCB2b2lkIFBsdWdpblBhY2thZ2U6OnVubG9hZFdpdGhvdXRTaHV0ZG93bigpCiAgICAgbV9p
c0xvYWRlZCA9IGZhbHNlOwogfQogCit2b2lkIFBsdWdpblBhY2thZ2U6OnNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKQoreworICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKK30KKwogUGFzc1JlZlB0
cjxQbHVnaW5QYWNrYWdlPiBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgdGltZV90JiBsYXN0TW9kaWZpZWQpCiB7CiAgICAgUmVmUHRyPFBsdWdp
blBhY2thZ2U+IHBhY2thZ2UgPSBhZG9wdFJlZihuZXcgUGx1Z2luUGFja2FnZShwYXRoLCBsYXN0
TW9kaWZpZWQpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgg
Yi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCmluZGV4IDAyZDBkZmMuLjQxYThiZDEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysrIGIvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuaApAQCAtNjIsNiArNjIsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgdW5sb2FkKCk7CiAgICAgICAgIHZvaWQgdW5sb2FkV2l0aG91
dFNodXRkb3duKCk7CiAKKyAgICAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzRW5hYmxlZDsgfQorICAgICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKwog
ICAgICAgICBjb25zdCBOUFBsdWdpbkZ1bmNzKiBwbHVnaW5GdW5jcygpIGNvbnN0IHsgcmV0dXJu
ICZtX3BsdWdpbkZ1bmNzOyB9CiAgICAgICAgIGludCBjb21wYXJlRmlsZVZlcnNpb24oY29uc3Qg
UGxhdGZvcm1Nb2R1bGVWZXJzaW9uJikgY29uc3Q7CiAgICAgICAgIGludCBjb21wYXJlKGNvbnN0
IFBsdWdpblBhY2thZ2UmKSBjb25zdDsKQEAgLTc3LDYgKzgwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIGRldGVybWluZU1vZHVsZVZlcnNpb25Gcm9tRGVzY3JpcHRpb24o
KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplQnJvd3NlckZ1bmNzKCk7CiAKKyAgICAgICAgYm9v
bCBtX2lzRW5hYmxlZDsKICAgICAgICAgYm9vbCBtX2lzTG9hZGVkOwogICAgICAgICBpbnQgbV9s
b2FkQ291bnQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33438</attachid>
            <date>2009-07-24 07:10:51 -0700</date>
            <delta_ts>2009-07-29 12:16:21 -0700</delta_ts>
            <desc>Allow to explicitly choose a preferred plugin for a mimetype.</desc>
            <filename>7bd777f.patch</filename>
            <type>text/plain</type>
            <size>4224</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmFmZWE1Yy4uYzk0YmU4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEFsbG93IHRvIGV4cGxpY2l0bHkgY2hvb3NlIGEgcHJl
ZmVycmVkIHBsdWdpbiBmb3IgYSBtaW1ldHlwZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQorICAgICAgICAKKyAgICAgICAg
V2hlbiB0aGUgcHJlZmVycmVkIHBsdWdpbiBpcyBzZXQgZm9yIGEgc3BlY2lmaWMgTUlNRSB0eXBl
LCBpdCB3aWxsIGJlCisgICAgICAgIGFsd2F5cyBwaWNrZWQgdXAsIHJlZ2FyZGxlc3Mgb2YgaXRz
IHZlcnNpb24sIHF1aXJrcyBldGMuCisgICAgICAgIAorICAgICAgICBDbGllbnQgYXBwbGljYXRp
b25zIG1heSB3YW50IHRvIHVzZSB0aGF0IEFQSSB0byByZXNvbHZlIG1pbWV0eXBlCisgICAgICAg
IGFtYmlndWl0eSBpbiBhIGN1c3RvbSB3YXksIHJhdGhlciB0aGFuIGluIHRoZSBkZWZhdWx0IHdh
eSB0aGF0IGlzCisgICAgICAgIGN1cnJlbnRseSB1c2VkIGluIFdlYktpdC4KKworICAgICAgICAq
IHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnBsdWdpbkZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
YmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUpOiBBZGRlZC4KKyAgICAgICAgKiBw
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6CisKKzIwMDktMDctMjQgIEpha3ViIFdpZWN6b3JlayAg
PGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKICAgICAgICAgQWxsb3cgdG8gZW5hYmxlL2Rpc2FibGUgcGFydGljdWxhciBwbHVnaW4gcGFj
a2FnZXMuCiAgICAgICAgIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc2NTEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDk1NjliODAu
LmE1ZjY3NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
KysrIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTYxLDYgKzE2MSwx
MiBAQCBQbHVnaW5QYWNrYWdlKiBQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogICAgIFN0cmluZyBrZXkgPSBtaW1lVHlwZS5sb3dlcigp
OwogICAgIFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5zLmVuZCgpOwor
ICAgIFBsdWdpblBhY2thZ2UqIHByZWZlcnJlZFBsdWdpbiA9IG1fcHJlZmVycmVkUGx1Z2lucy5n
ZXQoa2V5KS5nZXQoKTsKKyAgICBpZiAocHJlZmVycmVkUGx1Z2luCisgICAgICAgICYmIHByZWZl
cnJlZFBsdWdpbi0+aXNFbmFibGVkKCkKKyAgICAgICAgJiYgcHJlZmVycmVkUGx1Z2luLT5taW1l
VG9EZXNjcmlwdGlvbnMoKS5jb250YWlucyhrZXkpKSB7CisgICAgICAgIHJldHVybiBwcmVmZXJy
ZWRQbHVnaW47CisgICAgfQogCiAgICAgVmVjdG9yPFBsdWdpblBhY2thZ2UqLCAyPiBwbHVnaW5D
aG9pY2VzOwogCkBAIC0xOTksMTMgKzIwNSwxOSBAQCBTdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1J
TUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAogICAgICAg
ICBNSU1FVG9FeHRlbnNpb25zTWFwOjpjb25zdF9pdGVyYXRvciBtaW1lX2VuZCA9ICgqaXQpLT5t
aW1lVG9FeHRlbnNpb25zKCkuZW5kKCk7CiAKICAgICAgICAgZm9yIChNSU1FVG9FeHRlbnNpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBtaW1lX2l0ID0gKCppdCktPm1pbWVUb0V4dGVuc2lvbnMoKS5i
ZWdpbigpOyBtaW1lX2l0ICE9IG1pbWVfZW5kOyArK21pbWVfaXQpIHsKKyAgICAgICAgICAgIG1p
bWVUeXBlID0gbWltZV9pdC0+Zmlyc3Q7CisgICAgICAgICAgICBQbHVnaW5QYWNrYWdlKiBwcmVm
ZXJyZWRQbHVnaW4gPSBtX3ByZWZlcnJlZFBsdWdpbnMuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKICAg
ICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zID0gbWltZV9pdC0+c2Vj
b25kOwogICAgICAgICAgICAgYm9vbCBmb3VuZE1hcHBpbmcgPSBmYWxzZTsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGV4dGVuc2lvbnNbaV0sIGV4dGVuc2lv
bikpIHsKICAgICAgICAgICAgICAgICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luID0gKCppdCku
Z2V0KCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZlcnJlZFBsdWdpbiAmJiBQbHVn
aW5QYWNrYWdlOjplcXVhbCgqcGx1Z2luLCAqcHJlZmVycmVkUGx1Z2luKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKKwogICAgICAgICAgICAgICAgICAgICBwbHVn
aW5DaG9pY2VzLmFwcGVuZChwbHVnaW4pOwotICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZUZv
clBsdWdpbi5hZGQocGx1Z2luLCBtaW1lX2l0LT5maXJzdCk7CisgICAgICAgICAgICAgICAgICAg
IG1pbWVUeXBlRm9yUGx1Z2luLmFkZChwbHVnaW4sIG1pbWVUeXBlKTsKICAgICAgICAgICAgICAg
ICAgICAgZm91bmRNYXBwaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMjQ3LDYgKzI1OSwxMSBAQCBQbHVnaW5QYWNrYWdlKiBQbHVn
aW5EYXRhYmFzZTo6ZmluZFBsdWdpbihjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgbWltZVR5cGUp
CiAgICAgcmV0dXJuIHBsdWdpbjsKIH0KIAordm9pZCBQbHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVy
cmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1Z2luUGFja2Fn
ZSogcGx1Z2luKQoreworICAgIG1fcHJlZmVycmVkUGx1Z2lucy5zZXQobWltZVR5cGUubG93ZXIo
KSwgcGx1Z2luKTsKK30KKwogdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0RGVsZXRlZFBsdWdpbnMo
UGx1Z2luU2V0JiBwbHVnaW5zKSBjb25zdAogewogICAgIFBsdWdpblNldDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9wbHVnaW5zLmVuZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmggYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAppbmRleCBi
OGQyYmZlLi4zNjhhYTkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtNjMsNiArNjMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBpbnQgcHJlZmVycmVkUGx1
Z2luQ29tcGFyZShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopOwogCiAgICAgICAgIFBsdWdpblBh
Y2thZ2UqIGZpbmRQbHVnaW4oY29uc3QgS1VSTCYsIFN0cmluZyYgbWltZVR5cGUpOworICAgICAg
ICB2b2lkIHNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFBsdWdpblBhY2thZ2UqIHBsdWdpbik7CiAKICAgICAgICAgdm9pZCBzZXRQbHVnaW5EaXJl
Y3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIHsKQEAg
LTg4LDYgKzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQbHVnaW5TZXQgbV9w
bHVnaW5zOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+ID4g
bV9wbHVnaW5zQnlQYXRoOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgdGltZV90PiBtX3BsdWdp
blBhdGhzV2l0aFRpbWVzOworICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBh
Y2thZ2U+ID4gbV9wcmVmZXJyZWRQbHVnaW5zOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>
<flag name="review"
          id="17726"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33440</attachid>
            <date>2009-07-24 07:15:22 -0700</date>
            <delta_ts>2009-07-29 09:57:32 -0700</delta_ts>
            <desc>Expose the PluginDatabase::pluginForMIMEType() function as public API.</desc>
            <filename>95a1727.patch</filename>
            <type>text/plain</type>
            <size>1665</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Yzk0YmU4Ni4uNDhkOWQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxOSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEV4cG9zZSB0aGUgUGx1Z2luRGF0YWJhc2U6OnBsdWdp
bkZvck1JTUVUeXBlKCkgZnVuY3Rpb24gYXMgcHVibGljIEFQSS4KKyAgICAgICAgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQorICAgICAgICAK
KyAgICAgICAgSXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBwbHVn
aW4gZm9yIGEgbWltZSB0eXBlLAorICAgICAgICB3aXRob3V0IGd1ZXNzaW5nIHRoZSBtaW1ldHlw
ZSBmcm9tIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisKKzIwMDktMDctMjQgIEpha3ViIFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWxsb3cgdG8g
ZXhwbGljaXRseSBjaG9vc2UgYSBwcmVmZXJyZWQgcGx1Z2luIGZvciBhIG1pbWV0eXBlLgogICAg
ICAgICAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3
NjUxCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaCBiL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IDM2OGFhOTMuLjQ3ZWM4OGMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5oCkBAIC02Myw2ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc3RhdGljIGludCBwcmVmZXJyZWRQbHVnaW5Db21wYXJlKGNvbnN0IHZvaWQq
LCBjb25zdCB2b2lkKik7CiAKICAgICAgICAgUGx1Z2luUGFja2FnZSogZmluZFBsdWdpbihjb25z
dCBLVVJMJiwgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdp
bkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgICAgIHZvaWQgc2V0
UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1Z2lu
UGFja2FnZSogcGx1Z2luKTsKIAogICAgICAgICB2b2lkIHNldFBsdWdpbkRpcmVjdG9yaWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKQEAgLTc5LDcgKzgxLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGFkZChQYXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+
KTsKICAgICAgICAgdm9pZCByZW1vdmUoUGx1Z2luUGFja2FnZSopOwogCi0gICAgICAgIFBsdWdp
blBhY2thZ2UqIHBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAg
ICAgICBTdHJpbmcgTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24p
IGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBkZWZhdWx0UGx1Z2luRGly
ZWN0b3JpZXMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33441</attachid>
            <date>2009-07-24 07:19:05 -0700</date>
            <delta_ts>2009-07-29 10:03:19 -0700</delta_ts>
            <desc>Expose the default plugin directories and the current directory set of the plugin database as public API.</desc>
            <filename>d27c579.patch</filename>
            <type>text/plain</type>
            <size>1565</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDhkOWQ4OS4uYjliN2VkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxOCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEV4cG9zZSB0aGUgZGVmYXVsdCBwbHVnaW4gZGlyZWN0
b3JpZXMgYW5kIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBzZXQgb2YKKyAgICAgICAgdGhlIHBsdWdp
biBkYXRhYmFzZSBhcyBwdWJsaWMgQVBJLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisKKyAgICAgICAgKiBwbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cGx1Z2lu
RGlyZWN0b3JpZXMpOgorCisyMDA5LTA3LTI0ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAg
IEV4cG9zZSB0aGUgUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1JTUVUeXBlKCkgZnVuY3Rpb24g
YXMgcHVibGljIEFQSS4KICAgICAgICAgCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzY1MQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmggYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAppbmRleCA0N2Vj
ODhjLi5kZjZhOTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
aAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtNzMsNiArNzMsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX3BsdWdpbkRpcmVjdG9yaWVzID0g
ZGlyZWN0b3JpZXM7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4g
ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdp
bkRpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EaXJlY3RvcmllczsgfQorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFz
aFNldDxTdHJpbmc+JikgY29uc3Q7CiAgICAgICAgIHZvaWQgZ2V0RGVsZXRlZFBsdWdpbnMoUGx1
Z2luU2V0JikgY29uc3Q7CkBAIC04Myw4ICs4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBTdHJpbmcgTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNp
b24pIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBkZWZhdWx0UGx1Z2lu
RGlyZWN0b3JpZXMoKTsKLQogICAgICAgICBWZWN0b3I8U3RyaW5nPiBtX3BsdWdpbkRpcmVjdG9y
aWVzOwogICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZWdpc3RlcmVkTUlNRVR5cGVzOwogICAg
ICAgICBQbHVnaW5TZXQgbV9wbHVnaW5zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33442</attachid>
            <date>2009-07-24 07:26:06 -0700</date>
            <delta_ts>2009-07-29 05:40:04 -0700</delta_ts>
            <desc>Fix style in PluginPackage and PluginDatabase.</desc>
            <filename>f0e7e1f.patch</filename>
            <type>text/plain</type>
            <size>6704</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjliN2VkOC4uMTNiZGZjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEZpeCBzdHlsZSBpbiBQbHVnaW5QYWNrYWdlIGFuZCBQ
bHVnaW5EYXRhYmFzZS4KKworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIHBsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6flBsdWdpblBhY2thZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZnJlZUxpYnJhcnlTb29uKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblBhY2thZ2U6OmZyZWVMaWJyYXJ5VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5QYWNrYWdlOjp1bmxvYWRXaXRob3V0U2h1dGRvd24pOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luUGFja2FnZTo6aW5pdGlhbGl6ZUJyb3dzZXJGdW5jcyk6CisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5QYWNrYWdlLmg6CisKKzIwMDktMDctMjQgIEpha3ViIFdpZWN6b3JlayAg
PGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKICAgICAgICAgRXhwb3NlIHRoZSBkZWZhdWx0IHBsdWdpbiBkaXJlY3RvcmllcyBhbmQgdGhl
IGN1cnJlbnQgZGlyZWN0b3J5IHNldCBvZgogICAgICAgICB0aGUgcGx1Z2luIGRhdGFiYXNlIGFz
IHB1YmxpYyBBUEkuCiAgICAgICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXgg
YTVmNjc1NC4uYjUyZmQ0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0yMSw3
ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAg
LTEyNiwxMCArMTI2LDEwIEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAgIFBs
dWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5zLmVuZCgpOwogICAgIGZvciAo
UGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z2lucy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKICAgICAgICAgLy8gR2V0IE1JTUUgdHlwZXMKKyAgICAgICAgTUlNRVRvRGVz
Y3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBtYXBfaXQgPSAoKml0KS0+bWltZVRvRGVzY3Jp
cHRpb25zKCkuYmVnaW4oKTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9p
dGVyYXRvciBtYXBfZW5kID0gKCppdCktPm1pbWVUb0Rlc2NyaXB0aW9ucygpLmVuZCgpOwotICAg
ICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgbWFwX2l0ID0g
KCppdCktPm1pbWVUb0Rlc2NyaXB0aW9ucygpLmJlZ2luKCk7IG1hcF9pdCAhPSBtYXBfZW5kOyAr
K21hcF9pdCkgeworICAgICAgICBmb3IgKDsgbWFwX2l0ICE9IG1hcF9lbmQ7ICsrbWFwX2l0KQog
ICAgICAgICAgICAgbV9yZWdpc3RlcmVkTUlNRVR5cGVzLmFkZChtYXBfaXQtPmZpcnN0KTsKLSAg
ICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjM5LDcgKzIzOSw3IEBAIFBs
dWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwg
U3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBQbHVnaW5QYWNrYWdlKiBwbHVnaW4gPSBwbHVnaW5G
b3JNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gdXJsLnN0cmluZygp
OwotICAgIAorCiAgICAgaWYgKCFwbHVnaW4pIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0g
dXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgo
Ii8iKSkgewpAQCAtMjUzLDcgKzI1Myw3IEBAIFBsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNl
OjpmaW5kUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAg
fQogICAgIH0KIAotICAgIC8vIEZJWE1FOiBpZiBubyBwbHVnaW4gY291bGQgYmUgZm91bmQsIHF1
ZXJ5IFdpbmRvd3MgZm9yIHRoZSBtaW1lIHR5cGUgCisgICAgLy8gRklYTUU6IGlmIG5vIHBsdWdp
biBjb3VsZCBiZSBmb3VuZCwgcXVlcnkgV2luZG93cyBmb3IgdGhlIG1pbWUgdHlwZQogICAgIC8v
IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV4dGVuc2lvbi4KIAogICAgIHJldHVybiBwbHVnaW47CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaCBiL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IGRmNmE5OTkuLmJkYTQyYjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpZm5kZWYgUGx1Z2luRGF0YWJhc2VfSApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgIlBs
dWdpblBhY2thZ2UuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAKLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFbGVtZW50OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblBhY2thZ2UuY3BwCmluZGV4IDFjOTM5YzIuLjYxMmE5ZDcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
UGFja2FnZS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgpAQCAtNDcsNyArNDcsNyBAQCBQbHVnaW5QYWNrYWdlOjp+UGx1Z2lu
UGFja2FnZSgpCiAgICAgLy8gY291cnNlIHdvdWxkIGNhdXNlIGEgY3Jhc2gsIHNvIHdlIGNoZWNr
IHRvIGNhbGwgdW5sb2FkIGJlZm9yZSB3ZQogICAgIC8vIEFTU0VSVC4KICAgICAvLyBGSVhNRTog
VGhlcmUgaXMgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGZpeCB0aGlzLgotICAgIGlmIChtX2xv
YWRDb3VudCA9PSAwKQorICAgIGlmICghbV9sb2FkQ291bnQpCiAgICAgICAgIHVubG9hZFdpdGhv
dXRTaHV0ZG93bigpOwogICAgIGVsc2UKICAgICAgICAgdW5sb2FkKCk7CkBAIC01OSw3ICs1OSw3
IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6ZnJlZUxpYnJhcnlTb29uKCkKIHsKICAgICBBU1NFUlQo
IW1fZnJlZUxpYnJhcnlUaW1lci5pc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQobV9tb2R1bGUpOwot
ICAgIEFTU0VSVChtX2xvYWRDb3VudCA9PSAwKTsKKyAgICBBU1NFUlQoIW1fbG9hZENvdW50KTsK
IAogICAgIG1fZnJlZUxpYnJhcnlUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CkBAIC02Nyw3ICs2
Nyw3IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6ZnJlZUxpYnJhcnlTb29uKCkKIHZvaWQgUGx1Z2lu
UGFja2FnZTo6ZnJlZUxpYnJhcnlUaW1lckZpcmVkKFRpbWVyPFBsdWdpblBhY2thZ2U+KikKIHsK
ICAgICBBU1NFUlQobV9tb2R1bGUpOwotICAgIEFTU0VSVChtX2xvYWRDb3VudCA9PSAwKTsKKyAg
ICBBU1NFUlQoIW1fbG9hZENvdW50KTsKIAogICAgIHVubG9hZE1vZHVsZShtX21vZHVsZSk7CiAg
ICAgbV9tb2R1bGUgPSAwOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6
dW5sb2FkV2l0aG91dFNodXRkb3duKCkKICAgICBpZiAoIW1faXNMb2FkZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEFTU0VSVChtX2xvYWRDb3VudCA9PSAwKTsKKyAgICBBU1NFUlQoIW1fbG9h
ZENvdW50KTsKICAgICBBU1NFUlQobV9tb2R1bGUpOwogCiAgICAgLy8gPHJkYXI6Ly81NTMwNTE5
PjogQ3Jhc2ggd2hlbiBjbG9zaW5nIHRhYiB3aXRoIHBkZiBmaWxlIChSZWFkZXIgNyBvbmx5KQpA
QCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6ZGV0ZXJtaW5lTW9kdWxlVmVy
c2lvbkZyb21EZXNjcmlwdGlvbigpCiB2b2lkIFBsdWdpblBhY2thZ2U6OmluaXRpYWxpemVCcm93
c2VyRnVuY3MoKQogewogICAgIG1lbXNldCgmbV9icm93c2VyRnVuY3MsIDAsIHNpemVvZihtX2Jy
b3dzZXJGdW5jcykpOwotICAgIG1fYnJvd3NlckZ1bmNzLnNpemUgPSBzaXplb2YgKG1fYnJvd3Nl
ckZ1bmNzKTsKKyAgICBtX2Jyb3dzZXJGdW5jcy5zaXplID0gc2l6ZW9mKG1fYnJvd3NlckZ1bmNz
KTsKICAgICBtX2Jyb3dzZXJGdW5jcy52ZXJzaW9uID0gTlBfVkVSU0lPTl9NSU5PUjsKIAogICAg
IG1fYnJvd3NlckZ1bmNzLmdldHVybCA9IE5QTl9HZXRVUkw7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2Uu
aAppbmRleCA0MWE4YmQxLi45M2U3YTdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luUGFja2FnZS5oCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKQEAgLTIx
LDcgKzIxLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBQbHVnaW5QYWNrYWdl
X0gKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAg
ICAgICAgflBsdWdpblBhY2thZ2UoKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2lu
UGFja2FnZT4gY3JlYXRlUGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYg
bGFzdE1vZGlmaWVkKTsKLSAgICAgICAgCisKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33443</attachid>
            <date>2009-07-24 07:30:19 -0700</date>
            <delta_ts>2009-07-29 02:30:16 -0700</delta_ts>
            <desc>Add QWebPluginDatabase class to the Qt API.</desc>
            <filename>95cf643.patch</filename>
            <type>text/plain</type>
            <size>32290</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTNiZGZjMC4uYWI3ZDNkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNiBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEFkZCBRV2ViUGx1Z2luRGF0YWJhc2UgY2xhc3MgdG8g
dGhlIFF0IEFQSS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc2NTEKKworICAgICAgICAqIFdlYkNvcmUucHJvOgorCisyMDA5LTA3LTI0ICBKYWt1
YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCiAgICAgICAgIEZpeCBzdHlsZSBpbiBQbHVnaW5QYWNrYWdlIGFuZCBQ
bHVnaW5EYXRhYmFzZS4KIAogICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggNWE2ODFkMy4uZTgzODdiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysg
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMTU0LDYgKzIxNTQsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5
aW50ZXJmYWNlLmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2Uu
Y3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmNwcCBcCiAgICAg
Li4vV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIFwKICAgICAuLi9XZWJLaXQv
cXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvaGVhZGVy
cy5wcmkgYi9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpCmluZGV4IGQ5MmViMWMuLmY1OTBhOTQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKKysrIGIvV2ViS2l0L3F0L0Fw
aS9oZWFkZXJzLnByaQpAQCAtNyw1ICs3LDYgQEAgV0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0Qv
cXdlYmZyYW1lLmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmRhdGFiYXNlLmgg
XAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnNlY3VyaXR5b3JpZ2luLmggXAogICAg
ICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmVsZW1lbnQuaCBcCisgICAgICAgICAgICAgICAg
ICAgICAkJFBXRC9xd2VicGx1Z2luZGF0YWJhc2UuaCBcCiAgICAgICAgICAgICAgICAgICAgICAk
JFBXRC9xd2VicGx1Z2luZmFjdG9yeS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3
ZWJoaXN0b3J5LmgKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNl
LmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTQ0YmJhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCkBAIC0wLDAgKzEsMjYwIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZS5oIgor
I2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZV9wLmgiCisKKyNpbmNsdWRlICJQbHVnaW5EYXRh
YmFzZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKKy8qIQorICAgIFxjbGFzcyBRV2ViUGx1Z2luCisgICAgXHNpbmNlIDQuNgorKi8K
KworLyohCisgICAgXGNsYXNzIFFXZWJQbHVnaW46Ok1pbWVUeXBlCisgICAgXHNpbmNlIDQuNgor
Ki8KKworUVdlYlBsdWdpblByaXZhdGU6OlFXZWJQbHVnaW5Qcml2YXRlKFJlZlB0cjxQbHVnaW5Q
YWNrYWdlPiBwbHVnaW5QYWNrYWdlKQorICAgIDogcGx1Z2luKHBsdWdpblBhY2thZ2UpCit7Cit9
CisKK1FXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGU6OlFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUo
UGx1Z2luRGF0YWJhc2UqIHBsdWdpbkRhdGFiYXNlKQorICAgIDogZGF0YWJhc2UocGx1Z2luRGF0
YWJhc2UpCit7Cit9CisKK2Jvb2wgUVdlYlBsdWdpbjo6TWltZVR5cGU6Om9wZXJhdG9yPT0oY29u
c3QgTWltZVR5cGUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBuYW1lID09IG90aGVyLm5h
bWUKKyAgICAgICAgICAgJiYgZGVzY3JpcHRpb24gPT0gb3RoZXIuZGVzY3JpcHRpb24KKyAgICAg
ICAgICAgJiYgZmlsZUV4dGVuc2lvbnMgPT0gb3RoZXIuZmlsZUV4dGVuc2lvbnM7Cit9CisKK1FX
ZWJQbHVnaW46OlFXZWJQbHVnaW4oKQorICAgIDogZChuZXcgUVdlYlBsdWdpblByaXZhdGUoMCkp
Cit7Cit9CisKK1FXZWJQbHVnaW46OlFXZWJQbHVnaW4oUGx1Z2luUGFja2FnZSogcGx1Z2luKQor
ICAgIDogZChuZXcgUVdlYlBsdWdpblByaXZhdGUocGx1Z2luKSkKK3sKK30KKworUVdlYlBsdWdp
bjo6UVdlYlBsdWdpbihjb25zdCBRV2ViUGx1Z2luJiBvdGhlcikKKyAgICA6IGQobmV3IFFXZWJQ
bHVnaW5Qcml2YXRlKG90aGVyLmQtPnBsdWdpbikpCit7Cit9CisKK1FXZWJQbHVnaW46On5RV2Vi
UGx1Z2luKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworUVN0cmluZyBRV2ViUGx1Z2luOjpuYW1l
KCkgY29uc3QKK3sKKyAgICBpZiAoIWQtPnBsdWdpbikKKyAgICAgICAgcmV0dXJuIFFTdHJpbmco
KTsKKyAgICByZXR1cm4gZC0+cGx1Z2luLT5uYW1lKCk7Cit9CisKK1FTdHJpbmcgUVdlYlBsdWdp
bjo6ZGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIGlmICghZC0+cGx1Z2luKQorICAgICAgICBy
ZXR1cm4gUVN0cmluZygpOworICAgIHJldHVybiBkLT5wbHVnaW4tPmRlc2NyaXB0aW9uKCk7Cit9
CisKK1FMaXN0PFFXZWJQbHVnaW46Ok1pbWVUeXBlPiBRV2ViUGx1Z2luOjptaW1lVHlwZXMoKSBj
b25zdAoreworICAgIGlmICghZC0+cGx1Z2luKQorICAgICAgICByZXR1cm4gUUxpc3Q8TWltZVR5
cGU+KCk7CisKKyAgICBRTGlzdDxNaW1lVHlwZT4gbWltZVR5cGVzOworICAgIGNvbnN0IE1JTUVU
b0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gZC0+cGx1Z2luLT5taW1lVG9E
ZXNjcmlwdGlvbnMoKTsKKyAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKKyAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0
aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIE1pbWVUeXBlIG1pbWVUeXBlOworICAgICAgICBt
aW1lVHlwZS5uYW1lID0gaXQtPmZpcnN0OworICAgICAgICBtaW1lVHlwZS5kZXNjcmlwdGlvbiA9
IGl0LT5zZWNvbmQ7CisKKyAgICAgICAgUVN0cmluZ0xpc3QgZmlsZUV4dGVuc2lvbnM7CisgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBkLT5wbHVnaW4tPm1pbWVUb0V4dGVuc2lv
bnMoKS5nZXQobWltZVR5cGUubmFtZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBmaWxlRXh0ZW5zaW9ucy5h
cHBlbmQoZXh0ZW5zaW9uc1tpXSk7CisKKyAgICAgICAgbWltZVR5cGUuZmlsZUV4dGVuc2lvbnMg
PSBmaWxlRXh0ZW5zaW9uczsKKyAgICAgICAgbWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1pbWVUeXBlczsKK30KKworYm9vbCBRV2ViUGx1Z2luOjpzdXBw
b3J0c01pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAoreworICAgIFFMaXN0
PE1pbWVUeXBlPiB0eXBlcyA9IG1pbWVUeXBlcygpOworICAgIGZvcmVhY2ggKGNvbnN0IE1pbWVU
eXBlJiB0eXBlLCB0eXBlcykgeworICAgICAgICBpZiAodHlwZS5uYW1lID09IG1pbWVUeXBlKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitRU3RyaW5nIFFXZWJQbHVnaW46OnBhdGgoKSBjb25zdAoreworICAgIGlmICghZC0+cGx1Z2lu
KQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIHJldHVybiBkLT5wbHVnaW4tPnBhdGgo
KTsKK30KKworYm9vbCBRV2ViUGx1Z2luOjppc051bGwoKSBjb25zdAoreworICAgIHJldHVybiAh
ZC0+cGx1Z2luOworfQorCit2b2lkIFFXZWJQbHVnaW46OnNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KQoreworICAgIGlmICghZC0+cGx1Z2luKQorICAgICAgICByZXR1cm47CisgICAgZC0+cGx1Z2lu
LT5zZXRFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFFXZWJQbHVnaW46OmlzRW5hYmxlZCgp
IGNvbnN0Cit7CisgICAgaWYgKCFkLT5wbHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gZC0+cGx1Z2luLT5pc0VuYWJsZWQoKTsKK30KKworYm9vbCBRV2ViUGx1Z2luOjpv
cGVyYXRvcj09KGNvbnN0IFFXZWJQbHVnaW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChkLT5w
bHVnaW4gPT0gb3RoZXIuZC0+cGx1Z2luKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
ICghZC0+cGx1Z2luIHx8ICFvdGhlci5kLT5wbHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBQbHVnaW5QYWNrYWdlOjplcXVhbCgqZC0+cGx1Z2luLCAqb3RoZXIuZC0+
cGx1Z2luKTsKK30KKworYm9vbCBRV2ViUGx1Z2luOjpvcGVyYXRvciE9KGNvbnN0IFFXZWJQbHVn
aW4mIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKK30KKwor
UVdlYlBsdWdpbiBRV2ViUGx1Z2luOjpvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdpbiYgb3RoZXIp
Cit7CisgICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAg
ICBkLT5wbHVnaW4gPSBvdGhlci5kLT5wbHVnaW47CisgICAgcmV0dXJuICp0aGlzOworfQorCisv
KiEKKyAgICBcY2xhc3MgUVdlYlBsdWdpbkRhdGFiYXNlCisgICAgXHNpbmNlIDQuNgorKi8KKwor
UVdlYlBsdWdpbkRhdGFiYXNlOjpRV2ViUGx1Z2luRGF0YWJhc2UoUU9iamVjdCogcGFyZW50KQor
ICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBkKG5ldyBRV2ViUGx1Z2luRGF0YWJhc2VQcml2
YXRlKFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCkpKQoreworfQorCitRV2ViUGx1
Z2luRGF0YWJhc2U6On5RV2ViUGx1Z2luRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZSBkOworfQor
CitRTGlzdDxRV2ViUGx1Z2luPiBRV2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdpbnMoKSBjb25zdAor
eworICAgIFFMaXN0PFFXZWJQbHVnaW4+IHF3ZWJwbHVnaW5zOworICAgIGNvbnN0IFZlY3RvcjxQ
bHVnaW5QYWNrYWdlKj4mIHBsdWdpbnMgPSBkLT5kYXRhYmFzZS0+cGx1Z2lucygpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbiA9IHBsdWdpbnNbaV07CisgICAgICAgIHF3ZWJwbHVn
aW5zLmFwcGVuZChRV2ViUGx1Z2luKHBsdWdpbikpOworICAgIH0KKworICAgIHJldHVybiBxd2Vi
cGx1Z2luczsKK30KKworUVN0cmluZ0xpc3QgUVdlYlBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0U2Vh
cmNoUGF0aHMoKQoreworICAgIFFTdHJpbmdMaXN0IHBhdGhzOworCisgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRpcmVjdG9yaWVzID0gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJl
Y3RvcmllcygpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGlyZWN0b3JpZXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHBhdGhzLmFwcGVuZChkaXJlY3Rvcmllc1tpXSk7CisKKyAg
ICByZXR1cm4gcGF0aHM7Cit9CisKK1FTdHJpbmdMaXN0IFFXZWJQbHVnaW5EYXRhYmFzZTo6c2Vh
cmNoUGF0aHMoKSBjb25zdAoreworICAgIFFTdHJpbmdMaXN0IHBhdGhzOworCisgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzID0gZC0+ZGF0YWJhc2UtPnBsdWdpbkRpcmVjdG9y
aWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBkaXJlY3Rvcmllcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgcGF0aHMuYXBwZW5kKGRpcmVjdG9yaWVzW2ldKTsKKworICAgIHJl
dHVybiBwYXRoczsKK30KKwordm9pZCBRV2ViUGx1Z2luRGF0YWJhc2U6OnNldFNlYXJjaFBhdGhz
KGNvbnN0IFFTdHJpbmdMaXN0JiBwYXRocykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBkaXJlY3Rv
cmllczsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGF0aHMuY291bnQoKTsg
KytpKQorICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQocGF0aHMuYXQoaSkpOworCisgICAgZC0+
ZGF0YWJhc2UtPnNldFBsdWdpbkRpcmVjdG9yaWVzKGRpcmVjdG9yaWVzKTsKKyAgICAvLyBQbHVn
aW5EYXRhYmFzZTo6c2V0UGx1Z2luRGlyZWN0b3JpZXMoKSBkb2VzIG5vdCByZWZyZXNoIHRoZSBk
YXRhYmFzZS4KKyAgICBkLT5kYXRhYmFzZS0+cmVmcmVzaCgpOworfQorCit2b2lkIFFXZWJQbHVn
aW5EYXRhYmFzZTo6YWRkU2VhcmNoUGF0aChjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIGQt
PmRhdGFiYXNlLT5hZGRFeHRyYVBsdWdpbkRpcmVjdG9yeShwYXRoKTsKKyAgICAvLyBQbHVnaW5E
YXRhYmFzZTo6YWRkRXh0cmFQbHVnaW5EaXJlY3RvcnkoKSBkb2VzIHJlZnJlc2ggdGhlIGRhdGFi
YXNlLgorfQorCit2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCgpCit7CisgICAgZC0+
ZGF0YWJhc2UtPnJlZnJlc2goKTsKK30KKworUVdlYlBsdWdpbiBRV2ViUGx1Z2luRGF0YWJhc2U6
OnBsdWdpbkZvck1pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVy
biBRV2ViUGx1Z2luKGQtPmRhdGFiYXNlLT5wbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSkpOwor
fQorCit2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5
cGUoY29uc3QgUVN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFFXZWJQbHVnaW4mIHBsdWdpbikKK3sK
KyAgICBkLT5kYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGUs
IHBsdWdpbi5kLT5wbHVnaW4uZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9x
d2VicGx1Z2luZGF0YWJhc2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ0YjdkNQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgKQEAgLTAsMCArMSwxMDAg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IEpha3ViIFdpZWN6b3JlayA8ZmF3MjE3QGdt
YWlsLmNvbT4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaWZuZGVmIFFXRUJQTFVHSU5EQVRBQkFTRV9ICisjZGVmaW5lIFFXRUJQ
TFVHSU5EQVRBQkFTRV9ICisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRl
IDxRdENvcmUvcW9iamVjdC5oPgorI2luY2x1ZGUgPFF0Q29yZS9xc3RyaW5nbGlzdC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKK30KKworY2xhc3Mg
UVdlYlBsdWdpblByaXZhdGU7CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViUGx1Z2luIHsKK3B1
YmxpYzoKKyAgICBRV2ViUGx1Z2luKCk7CisgICAgUVdlYlBsdWdpbihjb25zdCBRV2ViUGx1Z2lu
JiBvdGhlcik7CisgICAgflFXZWJQbHVnaW4oKTsKKworcHJpdmF0ZToKKyAgICBRV2ViUGx1Z2lu
KFdlYkNvcmU6OlBsdWdpblBhY2thZ2UqIHBsdWdpbik7CisKK3B1YmxpYzoKKyAgICBjbGFzcyBN
aW1lVHlwZSB7CisgICAgcHVibGljOgorICAgICAgICBRU3RyaW5nIG5hbWU7CisgICAgICAgIFFT
dHJpbmcgZGVzY3JpcHRpb247CisgICAgICAgIFFTdHJpbmdMaXN0IGZpbGVFeHRlbnNpb25zOwor
CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNaW1lVHlwZSYgb3RoZXIpIGNvbnN0Owor
ICAgIH07CisKKyAgICBRU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc2NyaXB0
aW9uKCkgY29uc3Q7CisgICAgUUxpc3Q8TWltZVR5cGU+IG1pbWVUeXBlcygpIGNvbnN0OworICAg
IGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7Cisg
ICAgUVN0cmluZyBwYXRoKCkgY29uc3Q7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworCisg
ICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0VuYWJsZWQoKSBj
b25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRV2ViUGx1Z2luJiBvdGhlcikgY29u
c3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFXZWJQbHVnaW4mIG90aGVyKSBjb25zdDsK
KyAgICBRV2ViUGx1Z2luIG9wZXJhdG9yPShjb25zdCBRV2ViUGx1Z2luJiBvdGhlcik7CisKKyAg
ICBmcmllbmQgY2xhc3MgUVdlYlBsdWdpbkRhdGFiYXNlOworCitwcml2YXRlOgorICAgIFFXZWJQ
bHVnaW5Qcml2YXRlICpkOworfTsKKworY2xhc3MgUVdlYlBsdWdpbkRhdGFiYXNlUHJpdmF0ZTsK
K2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQbHVnaW5EYXRhYmFzZSA6IHB1YmxpYyBRT2JqZWN0
IHsKKyAgICBRX09CSkVDVAorCitwcml2YXRlOgorICAgIFFXZWJQbHVnaW5EYXRhYmFzZShRT2Jq
ZWN0KiBwYXJlbnQgPSAwKTsKKyAgICB+UVdlYlBsdWdpbkRhdGFiYXNlKCk7CisKK3B1YmxpYzoK
KyAgICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5zKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgUVN0
cmluZ0xpc3QgZGVmYXVsdFNlYXJjaFBhdGhzKCk7CisgICAgUVN0cmluZ0xpc3Qgc2VhcmNoUGF0
aHMoKSBjb25zdDsKKyAgICB2b2lkIHNldFNlYXJjaFBhdGhzKGNvbnN0IFFTdHJpbmdMaXN0JiBw
YXRocyk7CisgICAgdm9pZCBhZGRTZWFyY2hQYXRoKGNvbnN0IFFTdHJpbmcmIHBhdGgpOworCisg
ICAgdm9pZCByZWZyZXNoKCk7CisKKyAgICBRV2ViUGx1Z2luIHBsdWdpbkZvck1pbWVUeXBlKGNv
bnN0IFFTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2b2lkIHNldFByZWZlcnJlZFBsdWdpbkZvck1p
bWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBRV2ViUGx1Z2luJiBwbHVnaW4p
OworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJTZXR0aW5nczsKKworcHJpdmF0ZToKKyAgICBRV2Vi
UGx1Z2luRGF0YWJhc2VQcml2YXRlICpkOworfTsKKworI2VuZGlmIC8vIFFXRUJQTFVHSU5EQVRB
QkFTRV9ICmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmgg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDJhZTZkOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9B
cGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBRV0VCUExVR0lOREFUQUJBU0VfUF9ICisjZGVmaW5lIFFXRUJQTFVHSU5EQVRBQkFTRV9Q
X0gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7CisgICAg
Y2xhc3MgUGx1Z2luRGF0YWJhc2U7Cit9OworCitjbGFzcyBRV2ViUGx1Z2luUHJpdmF0ZSB7Citw
dWJsaWM6CisgICAgUVdlYlBsdWdpblByaXZhdGUoUmVmUHRyPFdlYkNvcmU6OlBsdWdpblBhY2th
Z2U+IHBsdWdpblBhY2thZ2UpOworCisgICAgUmVmUHRyPFdlYkNvcmU6OlBsdWdpblBhY2thZ2U+
IHBsdWdpbjsKK307CisKK2NsYXNzIFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUgeworcHVibGlj
OgorICAgIFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2Uq
IHBsdWdpbkRhdGFiYXNlKTsKKworICAgIFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlKiBkYXRhYmFz
ZTsKK307CisKKyNlbmRpZiAvLyBRV0VCUExVR0lOREFUQUJBU0VfUF9ICmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5jcHAKaW5kZXggZmI5NGQ1NS4uZmVhNmMxOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAt
MjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2VicGFn
ZV9wLmgiCisjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJDYWNo
ZS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKQEAgLTUz
OSw2ICs1NDAsMTQgQEAgUUljb24gUVdlYlNldHRpbmdzOjppY29uRm9yVXJsKGNvbnN0IFFVcmwm
IHVybCkKICAgICByZXR1cm4qIGljb247CiB9CiAKK1FXZWJQbHVnaW5EYXRhYmFzZSAqUVdlYlNl
dHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpCit7CisgICAgc3RhdGljIFFXZWJQbHVnaW5EYXRhYmFz
ZSogZGF0YWJhc2UgPSAwOworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIGRhdGFiYXNlID0g
bmV3IFFXZWJQbHVnaW5EYXRhYmFzZSgpOworICAgIHJldHVybiBkYXRhYmFzZTsKK30KKwogLyoh
CiAgICAgU2V0cyBcYSBncmFwaGljIHRvIGJlIGRyYXduIHdoZW4gUXRXZWJLaXQgbmVlZHMgdG8g
ZHJhdyBhbiBpbWFnZSBvZiB0aGUKICAgICBnaXZlbiBcYSB0eXBlLgpAQCAtNjI3LDcgKzYzNiw3
IEBAIGludCBRV2ViU2V0dGluZ3M6Om1heGltdW1QYWdlc0luQ2FjaGUoKQogCiAgICBUaGUgXGEg
Y2FjaGVNaW5EZWFkQ2FwYWNpdHkgc3BlY2lmaWVzIHRoZSBcZSBtaW5pbXVtIG51bWJlciBvZiBi
eXRlcyB0aGF0CiAgICBkZWFkIG9iamVjdHMgc2hvdWxkIGNvbnN1bWUgd2hlbiB0aGUgY2FjaGUg
aXMgdW5kZXIgcHJlc3N1cmUuCi0gICAKKwogICAgXGEgY2FjaGVNYXhEZWFkIGlzIHRoZSBcZSBt
YXhpbXVtIG51bWJlciBvZiBieXRlcyB0aGF0IGRlYWQgb2JqZWN0cyBzaG91bGQKICAgIGNvbnN1
bWUgd2hlbiB0aGUgY2FjaGUgaXMgXGJvbGQgbm90IHVuZGVyIHByZXNzdXJlLgogCkBAIC02ODcs
NyArNjk2LDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OnJlc2V0Rm9udEZhbWlseShGb250RmFtaWx5
IHdoaWNoKQogCiAvKiEKICAgICBcZm4gdm9pZCBRV2ViU2V0dGluZ3M6OnNldEF0dHJpYnV0ZShX
ZWJBdHRyaWJ1dGUgYXR0cmlidXRlLCBib29sIG9uKQotICAgIAorCiAgICAgRW5hYmxlcyBvciBk
aXNhYmxlcyB0aGUgc3BlY2lmaWVkIFxhIGF0dHJpYnV0ZSBmZWF0dXJlIGRlcGVuZGluZyBvbiB0
aGUKICAgICB2YWx1ZSBvZiBcYSBvbi4KICovCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5oIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAppbmRleCA2MzE0NGNi
Li44ODc5MDFmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCisrKyBi
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogfQogCiBjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFXZWJQbHVnaW5EYXRhYmFz
ZTsKIGNsYXNzIFFXZWJTZXR0aW5nc1ByaXZhdGU7CiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNz
IFFVcmw7CkBAIC0xMDIsNiArMTAzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFy
SWNvbkRhdGFiYXNlKCk7CiAgICAgc3RhdGljIFFJY29uIGljb25Gb3JVcmwoY29uc3QgUVVybCAm
dXJsKTsKIAorICAgIHN0YXRpYyBRV2ViUGx1Z2luRGF0YWJhc2UgKnBsdWdpbkRhdGFiYXNlKCk7
CisKICAgICBzdGF0aWMgdm9pZCBzZXRXZWJHcmFwaGljKFdlYkdyYXBoaWMgdHlwZSwgY29uc3Qg
UVBpeG1hcCAmZ3JhcGhpYyk7CiAgICAgc3RhdGljIFFQaXhtYXAgd2ViR3JhcGhpYyhXZWJHcmFw
aGljIHR5cGUpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCAyZjA3MzI4Li4yNTA4OWEzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAw
OS0wNy0yNCAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUVdlYlBsdWdpbkRhdGFi
YXNlIGNsYXNzIHRvIHRoZSBRdCBBUEkuCisKKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6Cisg
ICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoUVdl
YlBsdWdpblByaXZhdGU6OlFXZWJQbHVnaW5Qcml2YXRlKToKKyAgICAgICAgKFFXZWJQbHVnaW5E
YXRhYmFzZVByaXZhdGU6OlFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUpOgorICAgICAgICAoUVdl
YlBsdWdpbjo6TWltZVR5cGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoUVdlYlBsdWdpbjo6UVdl
YlBsdWdpbik6CisgICAgICAgIChRV2ViUGx1Z2luOjp+UVdlYlBsdWdpbik6CisgICAgICAgIChR
V2ViUGx1Z2luOjpuYW1lKToKKyAgICAgICAgKFFXZWJQbHVnaW46OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFFXZWJQbHVnaW46Om1pbWVUeXBlcyk6CisgICAgICAgIChRV2ViUGx1Z2luOjpzdXBw
b3J0c01pbWVUeXBlKToKKyAgICAgICAgKFFXZWJQbHVnaW46OnBhdGgpOgorICAgICAgICAoUVdl
YlBsdWdpbjo6aXNOdWxsKToKKyAgICAgICAgKFFXZWJQbHVnaW46OnNldEVuYWJsZWQpOgorICAg
ICAgICAoUVdlYlBsdWdpbjo6aXNFbmFibGVkKToKKyAgICAgICAgKFFXZWJQbHVnaW46Om9wZXJh
dG9yPT0pOgorICAgICAgICAoUVdlYlBsdWdpbjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChRV2Vi
UGx1Z2luOjpvcGVyYXRvcj0pOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpRV2ViUGx1
Z2luRGF0YWJhc2UpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjp+UVdlYlBsdWdpbkRh
dGFiYXNlKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2lucyk6CisgICAgICAg
IChRV2ViUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocyk6CisgICAgICAgIChRV2Vi
UGx1Z2luRGF0YWJhc2U6OnNlYXJjaFBhdGhzKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFz
ZTo6c2V0U2VhcmNoUGF0aHMpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjphZGRTZWFy
Y2hQYXRoKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAgICAg
IChRV2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1pbWVUeXBlKToKKyAgICAgICAgKFFXZWJQ
bHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAq
IEFwaS9xd2VicGx1Z2luZGF0YWJhc2UuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJwbHVn
aW5kYXRhYmFzZV9wLmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgor
ICAgICAgICAoUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSk6CisgICAgICAgICogQXBpL3F3
ZWJzZXR0aW5ncy5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2VicGx1
Z2luZGF0YWJhc2UucHJvOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2VicGx1Z2luZGF0YWJh
c2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAodHN0X1FXZWJQ
bHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucyk6CisgICAgICAgICh0c3RfUVdlYlBsdWdp
bkRhdGFiYXNlOjpzZWFyY2hQYXRocyk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNl
OjpudWxsX2RhdGEpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6bnVsbCk6Cisg
ICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNaW1lVHlwZSk6CisgICAg
ICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjplbmFibGVkKToKKyAgICAgICAgKHRzdF9RV2Vi
UGx1Z2luRGF0YWJhc2U6Om9wZXJhdG9yZXF1YWxfZGF0YSk6CisgICAgICAgICh0c3RfUVdlYlBs
dWdpbkRhdGFiYXNlOjpvcGVyYXRvcmVxdWFsKToKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0
YWJhc2U6OnByZWZlcnJlZFBsdWdpbik6CisgICAgICAgICogdGVzdHMvdGVzdHMucHJvOgorCiAy
MDA5LTA3LTIzICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvcXdlYnBsdWdpbmRhdGFiYXNlLnBybyBiL1dlYktp
dC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvcXdlYnBsdWdpbmRhdGFiYXNlLnBybwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDEwOTkzCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2VicGx1Z2luZGF0YWJhc2Uu
cHJvCkBAIC0wLDAgKzEsNiBAQAorVEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9IHRzdF9xd2VicGx1
Z2luZGF0YWJhc2UKK2luY2x1ZGUoLi4vLi4vLi4vLi4vV2ViS2l0LnByaSkKK1NPVVJDRVMgICs9
IHRzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCitRVCArPSB0ZXN0bGliIG5ldHdvcmsKK1FNQUtF
X1JQQVRIRElSID0gJCRPVVRQVVRfRElSL2xpYiAkJFFNQUtFX1JQQVRIRElSCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3RzdF9xd2VicGx1Z2luZGF0YWJh
c2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdp
bmRhdGFiYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzM0M2Jk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90
c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAtMCwwICsxLDM3MyBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDkgSmFrdWIgV2llY3pvcmVrIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlIDxRdFRlc3QvUXRUZXN0PgorCisjaW5jbHVkZSA8cWRpci5oPgorI2luY2x1ZGUgPHF3
ZWJmcmFtZS5oPgorI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CisjaW5jbHVkZSA8cXdlYnBsdWdpbmRh
dGFiYXNlLmg+CisjaW5jbHVkZSA8cXdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8cXZhcmlhbnQu
aD4KKworY2xhc3MgdHN0X1FXZWJQbHVnaW5EYXRhYmFzZSA6IHB1YmxpYyBRT2JqZWN0Cit7Cisg
ICAgUV9PQkpFQ1QKKworcHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIGluc3RhbGxlZFBsdWdpbnMo
KTsKKyAgICB2b2lkIHNlYXJjaFBhdGhzKCk7CisgICAgdm9pZCBudWxsX2RhdGEoKTsKKyAgICB2
b2lkIG51bGwoKTsKKyAgICB2b2lkIHBsdWdpbkZvck1pbWVUeXBlKCk7CisgICAgdm9pZCBlbmFi
bGVkKCk7CisgICAgdm9pZCBvcGVyYXRvcmVxdWFsX2RhdGEoKTsKKyAgICB2b2lkIG9wZXJhdG9y
ZXF1YWwoKTsKKyAgICB2b2lkIHByZWZlcnJlZFBsdWdpbigpOworfTsKKwordHlwZWRlZiBRV2Vi
UGx1Z2luOjpNaW1lVHlwZSBNaW1lVHlwZTsKKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNl
OjppbnN0YWxsZWRQbHVnaW5zKCkKK3sKKyAgICBRV2ViUGFnZSBwYWdlOworICAgIHBhZ2Uuc2V0
dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQsIHRydWUp
OworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworCisgICAgUVZhcmlh
bnRNYXAganNQbHVnaW5zTWFwID0gZnJhbWUtPmV2YWx1YXRlSmF2YVNjcmlwdCgid2luZG93Lm5h
dmlnYXRvci5wbHVnaW5zIikudG9NYXAoKTsKKyAgICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5z
ID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpLT5wbHVnaW5zKCk7CisgICAgUUNPTVBB
UkUocGx1Z2lucywgUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpLT5wbHVnaW5zKCkpOwor
CisgICAgaW50IGxlbmd0aCA9IGpzUGx1Z2luc01hcFsibGVuZ3RoIl0udG9JbnQoKTsKKyAgICBR
Q09NUEFSRShsZW5ndGgsIHBsdWdpbnMuY291bnQoKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFFXZWJQbHVnaW4gcGx1Z2luID0gcGx1Z2lucy5h
dChpKTsKKworICAgICAgICBRVmFyaWFudE1hcCBqc1BsdWdpbiA9IGZyYW1lLT5ldmFsdWF0ZUph
dmFTY3JpcHQoUVN0cmluZygid2luZG93Lm5hdmlnYXRvci5wbHVnaW5zWyUxXSIpLmFyZyhpKSku
dG9NYXAoKTsKKyAgICAgICAgUVN0cmluZyBuYW1lID0ganNQbHVnaW5bIm5hbWUiXS50b1N0cmlu
ZygpOworICAgICAgICBRU3RyaW5nIGRlc2NyaXB0aW9uID0ganNQbHVnaW5bImRlc2NyaXB0aW9u
Il0udG9TdHJpbmcoKTsKKyAgICAgICAgUVN0cmluZyBmaWxlTmFtZSA9IGpzUGx1Z2luWyJmaWxl
bmFtZSJdLnRvU3RyaW5nKCk7CisKKyAgICAgICAgUUNPTVBBUkUocGx1Z2luLm5hbWUoKSwgbmFt
ZSk7CisgICAgICAgIFFDT01QQVJFKHBsdWdpbi5kZXNjcmlwdGlvbigpLCBkZXNjcmlwdGlvbik7
CisgICAgICAgIFFDT01QQVJFKFFGaWxlSW5mbyhwbHVnaW4ucGF0aCgpKS5maWxlTmFtZSgpLCBm
aWxlTmFtZSk7CisKKyAgICAgICAgUUxpc3Q8TWltZVR5cGU+IG1pbWVUeXBlczsKKyAgICAgICAg
aW50IG1pbWVUeXBlc0NvdW50ID0ganNQbHVnaW5bImxlbmd0aCJdLnRvSW50KCk7CisKKyAgICAg
ICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lVHlwZXNDb3VudDsgKytqKSB7CisgICAgICAgICAg
ICBRVmFyaWFudE1hcCBqc01pbWVUeXBlID0gZnJhbWUtPmV2YWx1YXRlSmF2YVNjcmlwdChRU3Ry
aW5nKCJ3aW5kb3cubmF2aWdhdG9yLnBsdWdpbnNbJTFdWyUyXSIpLmFyZyhpKS5hcmcoaikpLnRv
TWFwKCk7CisKKyAgICAgICAgICAgIE1pbWVUeXBlIG1pbWVUeXBlOworICAgICAgICAgICAgbWlt
ZVR5cGUubmFtZSA9IGpzTWltZVR5cGVbInR5cGUiXS50b1N0cmluZygpOworICAgICAgICAgICAg
bWltZVR5cGUuZGVzY3JpcHRpb24gPSBqc01pbWVUeXBlWyJkZXNjcmlwdGlvbiJdLnRvU3RyaW5n
KCk7CisgICAgICAgICAgICBtaW1lVHlwZS5maWxlRXh0ZW5zaW9ucyA9IGpzTWltZVR5cGVbInN1
ZmZpeGVzIl0udG9TdHJpbmcoKS5zcGxpdCgnLCcsIFFTdHJpbmc6OlNraXBFbXB0eVBhcnRzKTsK
KworICAgICAgICAgICAgbWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisgICAgICAgICAgICBR
VkVSSUZZKHBsdWdpbi5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlLm5hbWUpKTsKKyAgICAgICAg
fQorCisgICAgICAgIFFDT01QQVJFKHBsdWdpbi5taW1lVHlwZXMoKSwgbWltZVR5cGVzKTsKKwor
ICAgICAgICBRVkVSSUZZKCFwbHVnaW4uaXNOdWxsKCkpOworICAgICAgICBRVkVSSUZZKHBsdWdp
bi5pc0VuYWJsZWQoKSk7CisgICAgfQorfQorCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6
OnNlYXJjaFBhdGhzKCkKK3sKKyAgICBRV2ViUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUVdl
YlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpOworICAgIFFMaXN0PFFXZWJQbHVnaW4+IHBsdWdp
bnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworICAgIFFTdHJpbmdMaXN0IGRpcmVjdG9yaWVzID0g
ZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCk7CisgICAgUUNPTVBBUkUoUVdlYlBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0U2VhcmNoUGF0aHMoKSwgZGlyZWN0b3JpZXMpOworCisgICAgZGF0YWJhc2UtPnNl
dFNlYXJjaFBhdGhzKGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShRV2ViUGx1Z2luRGF0YWJh
c2U6OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisgICAgUUNPTVBBUkUoZGF0
YWJhc2UtPnNlYXJjaFBhdGhzKCksIGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShkYXRhYmFz
ZS0+cGx1Z2lucygpLCBwbHVnaW5zKTsKKworICAgIGRhdGFiYXNlLT5zZXRTZWFyY2hQYXRocyhR
U3RyaW5nTGlzdCgpKTsKKyAgICBRQ09NUEFSRShRV2ViUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRT
ZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnNlYXJj
aFBhdGhzKCksIFFTdHJpbmdMaXN0KCkpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5z
KCkuY291bnQoKSwgMCk7CisKKyAgICBkYXRhYmFzZS0+c2V0U2VhcmNoUGF0aHMoZGlyZWN0b3Jp
ZXMpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5zZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7
CisgICAgZGF0YWJhc2UtPmFkZFNlYXJjaFBhdGgoUURpcjo6dGVtcFBhdGgoKSk7CisgICAgUUNP
TVBBUkUoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCkuY291bnQoKSwgZGlyZWN0b3JpZXMuY291bnQo
KSArIDEpOworICAgIFFWRVJJRlkoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCkuY29udGFpbnMoUURp
cjo6dGVtcFBhdGgoKSkpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5zKCksIHBsdWdp
bnMpOworCisgICAgZGF0YWJhc2UtPnNldFNlYXJjaFBhdGhzKGRpcmVjdG9yaWVzKTsKKyAgICBR
Q09NUEFSRShRV2ViUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rv
cmllcyk7CisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCksIGRpcmVjdG9yaWVz
KTsKKyAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2lucygpLCBwbHVnaW5zKTsKK30KKworUV9E
RUNMQVJFX01FVEFUWVBFKFFXZWJQbHVnaW4pCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6
Om51bGxfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRV2ViUGx1Z2luPigicGx1Z2lu
Iik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigibnVsbCIpOworCisgICAgUVRlc3Q6Om5l
d1JvdygibnVsbCIpIDw8IFFXZWJQbHVnaW4oKSA8PCB0cnVlOworICAgIFFUZXN0OjpuZXdSb3co
ImZvbyIpIDw8IFFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKS0+cGx1Z2luRm9yTWltZVR5
cGUoImZvb2JhcmJheiIpIDw8IHRydWU7CisKKyAgICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5z
ID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpLT5wbHVnaW5zKCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50KCk7ICsraSkKKyAgICAgICAgUVRlc3Q6Om5ld1Jv
dyhRU3RyaW5nOjpudW1iZXIoaSkudG9VdGY4KCkuY29uc3REYXRhKCkpIDw8IHBsdWdpbnMuYXQo
aSkgPDwgZmFsc2U7Cit9CisKK3ZvaWQgdHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6bnVsbCgpCit7
CisgICAgUUZFVENIKFFXZWJQbHVnaW4sIHBsdWdpbik7CisgICAgUUZFVENIKGJvb2wsIG51bGwp
OworCisgICAgUUNPTVBBUkUocGx1Z2luLmlzTnVsbCgpLCBudWxsKTsKK30KKwordm9pZCB0c3Rf
UVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNaW1lVHlwZSgpCit7CisgICAgUU11bHRpTWFw
PFFTdHJpbmcsIFFXZWJQbHVnaW4+IHBsdWdpbnNNYXA7CisgICAgUVdlYlBsdWdpbkRhdGFiYXNl
KiBkYXRhYmFzZSA9IFFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKTsKKyAgICBRTGlzdDxR
V2ViUGx1Z2luPiBwbHVnaW5zID0gZGF0YWJhc2UtPnBsdWdpbnMoKTsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcGx1Z2lucy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgUVdlYlBsdWdpbiBw
bHVnaW4gPSBwbHVnaW5zLmF0KGkpOworCisgICAgICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlw
ZXMgPSBwbHVnaW4ubWltZVR5cGVzKCk7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWlt
ZVR5cGVzLmNvdW50KCk7ICsraikgeworICAgICAgICAgICAgUVN0cmluZyBtaW1lVHlwZSA9IG1p
bWVUeXBlcy5hdChqKS5uYW1lOworICAgICAgICAgICAgcGx1Z2luc01hcC5pbnNlcnQobWltZVR5
cGUsIHBsdWdpbik7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdpbi5zdXBwb3J0c01pbWVUeXBl
KG1pbWVUeXBlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IHBsdWdpbnMuY291bnQoKTsgKytpKSB7CisgICAgICAgIFFXZWJQbHVnaW4gcGx1Z2luID0gcGx1
Z2lucy5hdChpKTsKKworICAgICAgICBRTGlzdDxNaW1lVHlwZT4gbWltZVR5cGVzID0gcGx1Z2lu
Lm1pbWVUeXBlcygpOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1pbWVUeXBlcy5jb3Vu
dCgpOyArK2opIHsKKyAgICAgICAgICAgIFFTdHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZXMuYXQo
aikubmFtZTsKKworICAgICAgICAgICAgUVZFUklGWShwbHVnaW5zTWFwLmNvdW50KG1pbWVUeXBl
KSA+IDApOworICAgICAgICAgICAgaWYgKHBsdWdpbnNNYXAuY291bnQobWltZVR5cGUpID4gMSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgUVdlYlBsdWdpbiBwbHVn
aW5Gb3JNaW1lVHlwZSA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSk7Cisg
ICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5Gb3JNaW1lVHlwZSwgcGx1Z2luKTsKKyAgICAgICAg
ICAgIFFDT01QQVJFKHBsdWdpbkZvck1pbWVUeXBlLCBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5
cGUobWltZVR5cGUudG9VcHBlcigpKSk7CisgICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5Gb3JN
aW1lVHlwZSwgZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlLnRvTG93ZXIoKSkp
OworICAgICAgICAgICAgUVZFUklGWShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkp
OworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2luRm9yTWltZVR5cGUuaXNOdWxsKCkpOworICAg
ICAgICAgICAgUVZFUklGWSghcGx1Z2luLmlzTnVsbCgpKTsKKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjplbmFibGVkKCkKK3sKKyAgICBRTXVsdGlN
YXA8UVN0cmluZywgUVdlYlBsdWdpbj4gcGx1Z2luc01hcDsKKyAgICBRV2ViUGx1Z2luRGF0YWJh
c2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpOworICAgIFFMaXN0
PFFXZWJQbHVnaW4+IHBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50KCk7ICsraSkgeworICAgICAgICBRV2ViUGx1Z2lu
IHBsdWdpbiA9IHBsdWdpbnMuYXQoaSk7CisKKyAgICAgICAgUUxpc3Q8TWltZVR5cGU+IG1pbWVU
eXBlcyA9IHBsdWdpbi5taW1lVHlwZXMoKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBt
aW1lVHlwZXMuY291bnQoKTsgKytqKSB7CisgICAgICAgICAgICBRU3RyaW5nIG1pbWVUeXBlID0g
bWltZVR5cGVzLmF0KGopLm5hbWU7CisgICAgICAgICAgICBwbHVnaW5zTWFwLmluc2VydChtaW1l
VHlwZSwgcGx1Z2luKTsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luLnN1cHBvcnRzTWltZVR5
cGUobWltZVR5cGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFFNdWx0aU1hcDxRU3RyaW5n
LCBRV2ViUGx1Z2luPjo6aXRlcmF0b3IgaXQgPSBwbHVnaW5zTWFwLmJlZ2luKCk7CisgICAgd2hp
bGUgKGl0ICE9IHBsdWdpbnNNYXAuZW5kKCkpIHsKKyAgICAgICAgUVN0cmluZyBtaW1lVHlwZSA9
IGl0LmtleSgpOworICAgICAgICBRV2ViUGx1Z2luIHBsdWdpbiA9IGl0LnZhbHVlKCk7CisgICAg
ICAgIFFXZWJQbHVnaW4gcGx1Z2luRm9yTWltZVR5cGUgPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWlt
ZVR5cGUobWltZVR5cGUpOworCisgICAgICAgIFFWRVJJRlkocGx1Z2luc01hcC5jb3VudChtaW1l
VHlwZSkgPiAwKTsKKworICAgICAgICBpZiAocGx1Z2luc01hcC5jb3VudChtaW1lVHlwZSkgPT0g
MSkgeworICAgICAgICAgICAgUUNPTVBBUkUocGx1Z2luLCBwbHVnaW5Gb3JNaW1lVHlwZSk7CisK
KyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIFFW
RVJJRlkocGx1Z2luRm9yTWltZVR5cGUuaXNFbmFibGVkKCkpOworICAgICAgICAgICAgcGx1Z2lu
LnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2luLmlzRW5hYmxl
ZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlkoIXBsdWdpbkZvck1pbWVUeXBlLmlzRW5hYmxlZCgp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luLmlzRW5hYmxl
ZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luRm9yTWltZVR5cGUuaXNFbmFibGVkKCkp
OworICAgICAgICAgICAgcGx1Z2luLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICAgICAgUVZF
UklGWSghcGx1Z2luLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFFWRVJJRlko
IXBsdWdpbi5pc051bGwoKSk7CisgICAgICAgIFFWRVJJRlkoIXBsdWdpbkZvck1pbWVUeXBlLmlz
TnVsbCgpKTsKKworICAgICAgICBRV2ViUGx1Z2luIHBsdWdpbkZvck1pbWVUeXBlMiA9IGRhdGFi
YXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSk7CisgICAgICAgIGlmIChwbHVnaW5zTWFw
LmNvdW50KG1pbWVUeXBlKSA9PSAxKSB7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdpbkZvck1p
bWVUeXBlMiAhPSBwbHVnaW4pOworICAgICAgICAgICAgUVZFUklGWShwbHVnaW5Gb3JNaW1lVHlw
ZTIuaXNOdWxsKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVZFUklGWShwbHVn
aW5Gb3JNaW1lVHlwZTIgIT0gcGx1Z2luKTsKKyAgICAgICAgICAgIFFWRVJJRlkoIXBsdWdpbkZv
ck1pbWVUeXBlMi5pc051bGwoKSk7CisgICAgICAgIH0KKworICAgICAgICBwbHVnaW4uc2V0RW5h
YmxlZCh0cnVlKTsKKworICAgICAgICArK2l0OworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBs
dWdpbkRhdGFiYXNlOjpvcGVyYXRvcmVxdWFsX2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1
bW48UVdlYlBsdWdpbj4oImZpcnN0Iik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRV2ViUGx1Z2lu
Pigic2Vjb25kIik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigiZXF1YWwiKTsKKworICAg
IFFXZWJQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFi
YXNlKCk7CisgICAgUVRlc3Q6Om5ld1JvdygibnVsbCIpIDw8IFFXZWJQbHVnaW4oKSA8PCBRV2Vi
UGx1Z2luKCkgPDwgdHJ1ZTsKKyAgICBRVGVzdDo6bmV3Um93KCJhcHBsaWNhdGlvbi94LXNob2Nr
d2F2ZS1mbGFzaCIpIDw8IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZSgiYXBwbGljYXRpb24v
eC1zaG9ja3dhdmUtZmxhc2giKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKCJhcHBsaWNhdGlv
bi94LXNob2Nrd2F2ZS1mbGFzaCIpIDw8IHRydWU7CisgICAgUVRlc3Q6Om5ld1JvdygiZm9vL2Jh
ci1iYXoiKSA8PCBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUoImZvby9iYXItYmF6IikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1l
VHlwZSgiZm9vL2Jhci1iYXoiKSA8PCB0cnVlOworCisgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1
Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAocGx1
Z2lucy5jb3VudCgpIC0gMSk7ICsraSkgeworICAgICAgICBRV2ViUGx1Z2luIGZpcnN0ID0gcGx1
Z2lucy5hdChpKTsKKyAgICAgICAgUVdlYlBsdWdpbiBzZWNvbmQgPSBwbHVnaW5zLmF0KGkgKyAx
KTsKKworICAgICAgICBRVGVzdDo6bmV3Um93KFFTdHJpbmcoIiUxPT0lMiIpLmFyZyhmaXJzdC5u
YW1lKCksIHNlY29uZC5uYW1lKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZmlyc3QgPDwgc2Vjb25kIDw8IGZhbHNlOworICAg
IH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRvcmVxdWFsKCkKK3sK
KyAgICBRRkVUQ0goUVdlYlBsdWdpbiwgZmlyc3QpOworICAgIFFGRVRDSChRV2ViUGx1Z2luLCBz
ZWNvbmQpOworICAgIFFGRVRDSChib29sLCBlcXVhbCk7CisKKyAgICBRQ09NUEFSRShmaXJzdCA9
PSBzZWNvbmQsIGVxdWFsKTsKK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwcmVm
ZXJyZWRQbHVnaW4oKQoreworICAgIFFNdWx0aU1hcDxRU3RyaW5nLCBRV2ViUGx1Z2luPiBwbHVn
aW5zTWFwOworICAgIFFXZWJQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBRV2ViU2V0dGluZ3M6
OnBsdWdpbkRhdGFiYXNlKCk7CisgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1Z2lucyA9IGRhdGFi
YXNlLT5wbHVnaW5zKCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBsdWdpbnMuY291bnQo
KTsgKytpKSB7CisgICAgICAgIFFXZWJQbHVnaW4gcGx1Z2luID0gcGx1Z2lucy5hdChpKTsKKwor
ICAgICAgICBRTGlzdDxNaW1lVHlwZT4gbWltZVR5cGVzID0gcGx1Z2luLm1pbWVUeXBlcygpOwor
ICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1pbWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAg
ICAgICAgICAgIFFTdHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZXMuYXQoaikubmFtZTsKKyAgICAg
ICAgICAgIHBsdWdpbnNNYXAuaW5zZXJ0KG1pbWVUeXBlLCBwbHVnaW4pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgUU11bHRpTWFwPFFTdHJpbmcsIFFXZWJQbHVnaW4+OjppdGVyYXRvciBpdCA9
IHBsdWdpbnNNYXAuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gcGx1Z2luc01hcC5lbmQoKSkg
eworICAgICAgICBRU3RyaW5nIG1pbWVUeXBlID0gaXQua2V5KCk7CisKKyAgICAgICAgaWYgKHBs
dWdpbnNNYXAuY291bnQobWltZVR5cGUpID4gMSkgeworICAgICAgICAgICAgUUxpc3Q8UVdlYlBs
dWdpbj4gcGx1Z2luc0Zvck1pbWVUeXBlID0gcGx1Z2luc01hcC52YWx1ZXMobWltZVR5cGUpOwor
ICAgICAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW4gPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5
cGUobWltZVR5cGUpOworICAgICAgICAgICAgUVZFUklGWShwbHVnaW4uc3VwcG9ydHNNaW1lVHlw
ZShtaW1lVHlwZSkpOworCisgICAgICAgICAgICBwbHVnaW5zRm9yTWltZVR5cGUucmVtb3ZlQWxs
KHBsdWdpbik7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBsdWdpbnNGb3JNaW1l
VHlwZS5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBRV2ViUGx1Z2luIGFub3RoZXJQ
bHVnaW4gPSBwbHVnaW5zRm9yTWltZVR5cGUuYXQoaSk7CisgICAgICAgICAgICAgICAgUVZFUklG
WShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpOworICAgICAgICAgICAgICAgIFFW
RVJJRlkocGx1Z2luICE9IGFub3RoZXJQbHVnaW4pOworCisgICAgICAgICAgICAgICAgUUNPTVBB
UkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlKSwgcGx1Z2luKTsKKyAgICAg
ICAgICAgICAgICBkYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5
cGUsIGFub3RoZXJQbHVnaW4pOworICAgICAgICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5w
bHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIGFub3RoZXJQbHVnaW4pOworCisgICAgICAgICAg
ICAgICAgYW5vdGhlclBsdWdpbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBR
Q09NUEFSRShkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpLCBwbHVnaW4pOwor
CisgICAgICAgICAgICAgICAgYW5vdGhlclBsdWdpbi5zZXRFbmFibGVkKHRydWUpOworICAgICAg
ICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSks
IGFub3RoZXJQbHVnaW4pOworCisgICAgICAgICAgICAgICAgZGF0YWJhc2UtPnNldFByZWZlcnJl
ZFBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlLCBRV2ViUGx1Z2luKCkpOworICAgICAgICAgICAg
ICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIHBsdWdp
bik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRV2ViUGx1
Z2luIHBsdWdpbiA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSk7CisgICAg
ICAgICAgICBRQ09NUEFSRShwbHVnaW5zTWFwLnZhbHVlKG1pbWVUeXBlKSwgcGx1Z2luKTsKKwor
ICAgICAgICAgICAgZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZvck1pbWVUeXBlKG1pbWVU
eXBlLCBwbHVnaW4pOworICAgICAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1p
bWVUeXBlKG1pbWVUeXBlKSwgcGx1Z2luKTsKKworICAgICAgICAgICAgcGx1Z2luLnNldEVuYWJs
ZWQoZmFsc2UpOworICAgICAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVU
eXBlKG1pbWVUeXBlKSwgUVdlYlBsdWdpbigpKTsKKyAgICAgICAgICAgIHBsdWdpbi5zZXRFbmFi
bGVkKHRydWUpOworCisgICAgICAgICAgICBkYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9y
TWltZVR5cGUobWltZVR5cGUsIFFXZWJQbHVnaW4oKSk7CisgICAgICAgICAgICBRQ09NUEFSRShk
YXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpLCBwbHVnaW4pOworICAgICAgICB9
CisKKyAgICAgICAgKytpdDsKKyAgICB9CisKKyAgICBpZiAocGx1Z2luc01hcC5rZXlzKCkuY291
bnQoKSA+PSAyKSB7CisgICAgICAgIFFTdHJpbmdMaXN0IG1pbWVUeXBlcyA9IHBsdWdpbnNNYXAu
dW5pcXVlS2V5cygpOworCisgICAgICAgIFFTdHJpbmcgbWltZVR5cGUxID0gbWltZVR5cGVzLmF0
KDApOworICAgICAgICBRU3RyaW5nIG1pbWVUeXBlMiA9IG1pbWVUeXBlcy5hdCgxKTsKKyAgICAg
ICAgUVdlYlBsdWdpbiBwbHVnaW4xID0gZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVU
eXBlMSk7CisgICAgICAgIFFXZWJQbHVnaW4gcGx1Z2luMiA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JN
aW1lVHlwZShtaW1lVHlwZTIpOworCisgICAgICAgIGludCBpID0gMjsKKyAgICAgICAgd2hpbGUg
KHBsdWdpbjIuc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZTEpCisgICAgICAgICAgICAgICAmJiAh
bWltZVR5cGUyLmlzRW1wdHkoKQorICAgICAgICAgICAgICAgJiYgaSA8IG1pbWVUeXBlcy5jb3Vu
dCgpKSB7CisgICAgICAgICAgICBtaW1lVHlwZTIgPSBtaW1lVHlwZXMuYXQoaSk7CisgICAgICAg
ICAgICBwbHVnaW4yID0gZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMik7Cisg
ICAgICAgICAgICArK2k7CisgICAgICAgIH0KKworICAgICAgICBwbHVnaW4xID0gZGF0YWJhc2Ut
PnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMSk7CisgICAgICAgIFFWRVJJRlkocGx1Z2luMS5z
dXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlMSkpOworICAgICAgICBRVkVSSUZZKCFwbHVnaW4xLmlz
TnVsbCgpKTsKKyAgICAgICAgcGx1Z2luMiA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZSht
aW1lVHlwZTIpOworICAgICAgICBRVkVSSUZZKHBsdWdpbjIuc3VwcG9ydHNNaW1lVHlwZShtaW1l
VHlwZTIpKTsKKyAgICAgICAgUVZFUklGWSghcGx1Z2luMi5pc051bGwoKSk7CisKKyAgICAgICAg
ZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMiwgcGx1Z2lu
MSk7CisgICAgICAgIFFWRVJJRlkoIXBsdWdpbjEuc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZTIp
KTsKKyAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBl
MiksIHBsdWdpbjIpOworCisgICAgICAgIGRhdGFiYXNlLT5zZXRQcmVmZXJyZWRQbHVnaW5Gb3JN
aW1lVHlwZShtaW1lVHlwZTEsIHBsdWdpbjEpOworICAgICAgICBRVkVSSUZZKCFwbHVnaW4yLnN1
cHBvcnRzTWltZVR5cGUobWltZVR5cGUxKSk7CisgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5w
bHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZTIpLCBwbHVnaW4yKTsKKyAgICB9Cit9CisKK1FURVNU
X01BSU4odHN0X1FXZWJQbHVnaW5EYXRhYmFzZSkKKworI2luY2x1ZGUgInRzdF9xd2VicGx1Z2lu
ZGF0YWJhc2UubW9jIgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3Rlc3RzLnBybyBiL1dl
YktpdC9xdC90ZXN0cy90ZXN0cy5wcm8KaW5kZXggNzAwMGQzMi4uZDAxZTczYiAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L3Rlc3RzL3Rlc3RzLnBybworKysgYi9XZWJLaXQvcXQvdGVzdHMvdGVzdHMu
cHJvCkBAIC0xLDQgKzEsNCBAQAogCiBURU1QTEFURSA9IHN1YmRpcnMKLVNVQkRJUlMgPSBxd2Vi
ZnJhbWUgcXdlYnBhZ2UgcXdlYmVsZW1lbnQgcXdlYmhpc3RvcnlpbnRlcmZhY2UgcXdlYnZpZXcg
cXdlYmhpc3RvcnkKK1NVQkRJUlMgPSBxd2ViZnJhbWUgcXdlYnBhZ2UgcXdlYmVsZW1lbnQgcXdl
Ymhpc3RvcnlpbnRlcmZhY2UgcXdlYnBsdWdpbmRhdGFiYXNlIHF3ZWJ2aWV3IHF3ZWJoaXN0b3J5
CiBTVUJESVJTICs9IGJlbmNobWFya3MvcGFpbnRpbmcvdHN0X3BhaW50aW5nLnBybyBiZW5jaG1h
cmtzL2xvYWRpbmcvdHN0X2xvYWRpbmcucHJvCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33704</attachid>
            <date>2009-07-29 02:30:16 -0700</date>
            <delta_ts>2009-08-01 13:34:10 -0700</delta_ts>
            <desc>Add QWebPluginDatabase class to the Qt API (with API docs).</desc>
            <filename>qwebplugindatabase.patch</filename>
            <type>text/plain</type>
            <size>37048</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2FjNGZhOS4uMGUyZmQyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0yOSAgSmFrdWIgV2llY3pv
cmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgUVdlYlBsdWdpbkRhdGFiYXNlIGNsYXNzIHRvIHRoZSBRdCBB
UEkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc2NTEKKworICAgICAgICAqIFdlYkNvcmUucHJvOgorCiAyMDA5LTA3LTI4ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrMDJAZ21haWwuY29tPgogCiAgICAgICAgIEluc3BlY3Rvcjog
VGFiIFRocm91Z2ggdGhlIERPTSBTdG9yYWdlIERhdGFHcmlkIHdoZW4gRWRpdGluZwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZTEz
NjNjNi4uOGIwYzQxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0yMTU0LDYgKzIxNTQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAu
Li9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJm
YWNlLmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwIFwK
ICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmNwcCBcCiAgICAgLi4vV2Vi
S2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBp
L3F3ZWJkYXRhYmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnBy
aSBiL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKaW5kZXggZDczYWRiMC4uOTJhMTIwZCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQorKysgYi9XZWJLaXQvcXQvQXBpL2hl
YWRlcnMucHJpCkBAIC03LDYgKzcsNyBAQCBXRUJLSVRfQVBJX0hFQURFUlMgPSAkJFBXRC9xd2Vi
ZnJhbWUuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViZGF0YWJhc2UuaCBcCiAg
ICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Vic2VjdXJpdHlvcmlnaW4uaCBcCiAgICAgICAg
ICAgICAgICAgICAgICAkJFBXRC9xd2ViZWxlbWVudC5oIFwKKyAgICAgICAgICAgICAgICAgICAg
ICQkUFdEL3F3ZWJwbHVnaW5kYXRhYmFzZS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdE
L3F3ZWJwbHVnaW5mYWN0b3J5LmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmhp
c3RvcnkuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Via2l0dmVyc2lvbi5oCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYmY0NjlmZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBs
dWdpbmRhdGFiYXNlLmNwcApAQCAtMCwwICsxLDQwMiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDkgSmFrdWIgV2llY3pvcmVrIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJxd2VicGx1Z2luZGF0YWJhc2UuaCIKKyNpbmNsdWRlICJxd2Vi
cGx1Z2luZGF0YWJhc2VfcC5oIgorCisjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKKyNpbmNs
dWRlICJQbHVnaW5QYWNrYWdlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvKiEK
KyAgICBcY2xhc3MgUVdlYlBsdWdpbjo6TWltZVR5cGUKKyAgICBcc2luY2UgNC42CisgICAgXGJy
aWVmIFJlcHJlc2VudHMgYSBzaW5nbGUgTUlNRSB0eXBlIHN1cHBvcnRlZCBieSBhIHBsdWdpbi4K
KyovCisKKy8qIQorICAgIFx2YXJpYWJsZSBRV2ViUGx1Z2luOjpNaW1lVHlwZTo6bmFtZQorICAg
IFxicmllZiB0aGUgbmFtZSBvZiB0aGUgTUlNRSB0eXBlIGUuZy4gdGV4dC9wbGFpbgorKi8KKwor
LyohCisgICAgXHZhcmlhYmxlIFFXZWJQbHVnaW46Ok1pbWVUeXBlOjpkZXNjcmlwdGlvbgorICAg
IFxicmllZiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIE1JTUUgdHlwZQorKi8KKworLyohCisgICAg
XHZhcmlhYmxlIFFXZWJQbHVnaW46Ok1pbWVUeXBlOjpmaWxlRXh0ZW5zaW9ucworICAgIFxicmll
ZiBhIGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUg
bWltZSB0eXBlCisqLworCitRV2ViUGx1Z2luUHJpdmF0ZTo6UVdlYlBsdWdpblByaXZhdGUoUmVm
UHRyPFBsdWdpblBhY2thZ2U+IHBsdWdpblBhY2thZ2UpCisgICAgOiBwbHVnaW4ocGx1Z2luUGFj
a2FnZSkKK3sKK30KKworUVdlYlBsdWdpbkRhdGFiYXNlUHJpdmF0ZTo6UVdlYlBsdWdpbkRhdGFi
YXNlUHJpdmF0ZShQbHVnaW5EYXRhYmFzZSogcGx1Z2luRGF0YWJhc2UpCisgICAgOiBkYXRhYmFz
ZShwbHVnaW5EYXRhYmFzZSkKK3sKK30KKworYm9vbCBRV2ViUGx1Z2luOjpNaW1lVHlwZTo6b3Bl
cmF0b3I9PShjb25zdCBNaW1lVHlwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5hbWUg
PT0gb3RoZXIubmFtZQorICAgICAgICAgICAmJiBkZXNjcmlwdGlvbiA9PSBvdGhlci5kZXNjcmlw
dGlvbgorICAgICAgICAgICAmJiBmaWxlRXh0ZW5zaW9ucyA9PSBvdGhlci5maWxlRXh0ZW5zaW9u
czsKK30KKworLyohCisgICAgXGNsYXNzIFFXZWJQbHVnaW4KKyAgICBcc2luY2UgNC42CisgICAg
XGJyaWVmIFRoZSBRV2ViUGx1Z2luIGNsYXNzIHJlcHJlc2VudHMgYSBzaW5nbGUgTmV0c2NhcGUg
cGx1Z2luLgorICAgIAorICAgIFRoZSBRV2ViUGx1Z2luIHJlcHJlc2VudHMgYSBOZXRzY2FwZSBw
bHVnaW4sIHRoYXQgaXMgcGlja2VkIHVwIGJ5IFdlYktpdAorICAgIGFuZCBpbmNsdWRlZCBpbiB0
aGUgcGx1Z2luIGRhdGFiYXNlLiBUaGUgY2xhc3MgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQK
KyAgICB0aGUgcGx1Z2luOiBpdHMgbmFtZSgpLCBkZXNjcmlwdGlvbigpLCBhIGxpc3Qgb2YgTUlN
RSB0eXBlcyB0aGF0IGl0IHN1cHBvcnRzOgorICAgIG1pbWVUeXBlcygpIGFuZCB0aGUgcGF0aCBv
ZiB0aGUgcGx1Z2luIGZpbGUuCisgICAgCisgICAgUGFydGljdWxhciBwbHVnaW5zIGNhbiBiZSBk
aXNhYmxlZCwgdGhpcyB3YXkgdGhleSB3b24ndCBiZSB1c2VkIGJ5IFdlYktpdAorICAgIGZvciBo
YW5kbGluZyBzdXBwb3J0ZWQgTUlNRSB0eXBlczogc2V0RW5hYmxlZCgpLCBlbmFibGVkKCkuCisg
ICAgICAgIAorICAgIFxzYSBRV2ViUGx1Z2luRGF0YWJhc2UgICAgICAgIAorKi8KKworLyohCisg
ICAgQ29uc3RydWN0cyBhIG51bGwgUVdlYlBsdWdpbi4KKyovCitRV2ViUGx1Z2luOjpRV2ViUGx1
Z2luKCkKKyAgICA6IGQobmV3IFFXZWJQbHVnaW5Qcml2YXRlKDApKQoreworfQorCitRV2ViUGx1
Z2luOjpRV2ViUGx1Z2luKFBsdWdpblBhY2thZ2UqIHBsdWdpbikKKyAgICA6IGQobmV3IFFXZWJQ
bHVnaW5Qcml2YXRlKHBsdWdpbikpCit7Cit9CisKKy8qIQorICAgIENvbnRydWN0cyBhIGNvcHkg
b2YgXGEgb3RoZXIuCisqLworUVdlYlBsdWdpbjo6UVdlYlBsdWdpbihjb25zdCBRV2ViUGx1Z2lu
JiBvdGhlcikKKyAgICA6IGQobmV3IFFXZWJQbHVnaW5Qcml2YXRlKG90aGVyLmQtPnBsdWdpbikp
Cit7Cit9CisKK1FXZWJQbHVnaW46On5RV2ViUGx1Z2luKCkKK3sKKyAgICBkZWxldGUgZDsKK30K
KworLyohCisgICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcGx1Z2luLgorICAgIAorICAgIFxz
YSBkZXNjcmlwdGlvbigpCisqLworUVN0cmluZyBRV2ViUGx1Z2luOjpuYW1lKCkgY29uc3QKK3sK
KyAgICBpZiAoIWQtPnBsdWdpbikKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1
cm4gZC0+cGx1Z2luLT5uYW1lKCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIGRlc2NyaXB0
aW9uIG9mIHRoZSBwbHVnaW4uCisgICAgCisgICAgXHNhIG5hbWUoKQorKi8KK1FTdHJpbmcgUVdl
YlBsdWdpbjo6ZGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIGlmICghZC0+cGx1Z2luKQorICAg
ICAgICByZXR1cm4gUVN0cmluZygpOworICAgIHJldHVybiBkLT5wbHVnaW4tPmRlc2NyaXB0aW9u
KCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgYSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhhdCBhcmUg
c3VwcG9ydGVkIGJ5IHRoZSBwbHVnaW4uCisgICAgCisgICAgXHNhIHN1cHBvcnRzTWltZVR5cGUo
KQorKi8KK1FMaXN0PFFXZWJQbHVnaW46Ok1pbWVUeXBlPiBRV2ViUGx1Z2luOjptaW1lVHlwZXMo
KSBjb25zdAoreworICAgIGlmICghZC0+cGx1Z2luKQorICAgICAgICByZXR1cm4gUUxpc3Q8TWlt
ZVR5cGU+KCk7CisKKyAgICBRTGlzdDxNaW1lVHlwZT4gbWltZVR5cGVzOworICAgIGNvbnN0IE1J
TUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gZC0+cGx1Z2luLT5taW1l
VG9EZXNjcmlwdGlvbnMoKTsKKyAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKKyAgICBmb3IgKE1JTUVUb0Rlc2Ny
aXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIE1pbWVUeXBlIG1pbWVUeXBlOworICAgICAg
ICBtaW1lVHlwZS5uYW1lID0gaXQtPmZpcnN0OworICAgICAgICBtaW1lVHlwZS5kZXNjcmlwdGlv
biA9IGl0LT5zZWNvbmQ7CisKKyAgICAgICAgUVN0cmluZ0xpc3QgZmlsZUV4dGVuc2lvbnM7Cisg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBkLT5wbHVnaW4tPm1pbWVUb0V4dGVu
c2lvbnMoKS5nZXQobWltZVR5cGUubmFtZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBmaWxlRXh0ZW5zaW9u
cy5hcHBlbmQoZXh0ZW5zaW9uc1tpXSk7CisKKyAgICAgICAgbWltZVR5cGUuZmlsZUV4dGVuc2lv
bnMgPSBmaWxlRXh0ZW5zaW9uczsKKyAgICAgICAgbWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7
CisgICAgfQorCisgICAgcmV0dXJuIG1pbWVUeXBlczsKK30KKworLyohCisgICAgUmV0dXJucyB0
cnVlIGlmIHRoZSBwbHVnaW4gc3VwcG9ydHMgYSBzcGVjaWZpYyBcYSBtaW1lVHlwZSwgZmFsc2Ug
b3RoZXJ3aXNlLgorICAgIAorICAgIFxzYSBtaW1lVHlwZXMoKQorKi8KK2Jvb2wgUVdlYlBsdWdp
bjo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKK3sKKyAg
ICBRTGlzdDxNaW1lVHlwZT4gdHlwZXMgPSBtaW1lVHlwZXMoKTsKKyAgICBmb3JlYWNoIChjb25z
dCBNaW1lVHlwZSYgdHlwZSwgdHlwZXMpIHsKKyAgICAgICAgaWYgKHR5cGUubmFtZSA9PSBtaW1l
VHlwZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworLyohCisgICAgUmV0dXJucyBhbiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwbHVnaW4g
ZmlsZS4KKyovCitRU3RyaW5nIFFXZWJQbHVnaW46OnBhdGgoKSBjb25zdAoreworICAgIGlmICgh
ZC0+cGx1Z2luKQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIHJldHVybiBkLT5wbHVn
aW4tPnBhdGgoKTsKK30KKworLyohCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBwbHVnaW4gaXMg
YSBudWxsIHBsdWdpbiwgZmFsc2Ugb3RoZXJ3aXNlLgorKi8KK2Jvb2wgUVdlYlBsdWdpbjo6aXNO
dWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWQtPnBsdWdpbjsKK30KKworLyohCisgICAgRW5h
YmxlcyBvciBkaXNhYmxlcyB0aGUgcGx1Z2luLgorCisgICAgRGlzYWJsZWQgcGx1Z2lucyB3aWxs
IG5vdCBiZSBwaWNrZWQgdXAgYnkgV2ViS2l0IHdoZW4gbG9va2luZyBmb3IgYSBwbHVnaW4gc3Vw
cG9ydGluZworICAgIGEgcGFydGljdWxhciBNSU1FIHR5cGUuCisgICAgCisgICAgXHNhIGlzRW5h
YmxlZCgpCisqLwordm9pZCBRV2ViUGx1Z2luOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBpZiAoIWQtPnBsdWdpbikKKyAgICAgICAgcmV0dXJuOworICAgIGQtPnBsdWdpbi0+c2V0
RW5hYmxlZChlbmFibGVkKTsKK30KKworLyohCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBwbHVn
aW4gaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgIAorICAgIFxzYSBzZXRFbmFibGVk
KCkKKyovCitib29sIFFXZWJQbHVnaW46OmlzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFk
LT5wbHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZC0+cGx1Z2luLT5p
c0VuYWJsZWQoKTsKK30KKworYm9vbCBRV2ViUGx1Z2luOjpvcGVyYXRvcj09KGNvbnN0IFFXZWJQ
bHVnaW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChkLT5wbHVnaW4gPT0gb3RoZXIuZC0+cGx1
Z2luKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghZC0+cGx1Z2luIHx8ICFvdGhl
ci5kLT5wbHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBQbHVnaW5Q
YWNrYWdlOjplcXVhbCgqZC0+cGx1Z2luLCAqb3RoZXIuZC0+cGx1Z2luKTsKK30KKworYm9vbCBR
V2ViUGx1Z2luOjpvcGVyYXRvciE9KGNvbnN0IFFXZWJQbHVnaW4mIG90aGVyKSBjb25zdAorewor
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKK30KKworUVdlYlBsdWdpbiBRV2ViUGx1Z2lu
OjpvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdpbiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgPT0g
Jm90aGVyKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBkLT5wbHVnaW4gPSBvdGhlci5k
LT5wbHVnaW47CisgICAgcmV0dXJuICp0aGlzOworfQorCisvKiEKKyAgICBcY2xhc3MgUVdlYlBs
dWdpbkRhdGFiYXNlCisgICAgXHNpbmNlIDQuNgorICAgIFxicmllZiBUaGUgUVdlYlBsdWdpbkRh
dGFiYXNlIGNsYXNzIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgbWFuYWdpbmcKKyAgICBOZXRz
Y2FwZSBwbHVnaW5zIHVzZWQgYnkgV2ViS2l0IGluIFFXZWJQYWdlcy4KKyAgICAKKyAgICBUaGUg
UVdlYlBsdWdpbkRhdGFiYXNlIGNsYXNzIGlzIGEgZGF0YWJhc2Ugb2YgTmV0c2NhcGUgcGx1Z2lu
cyB0aGF0IGFyZSB1c2VkCisgICAgYnkgV2ViS2l0LiBUaGUgcGx1Z2lucyBhcmUgcGlja2VkIHVw
IGJ5IFdlYktpdCBieSBsb29raW5nIHVwIGEgc2V0IG9mIHNlYXJjaCBwYXRocy4KKyAgICBUaGUg
ZGVmYXVsdCBzZXQgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIGRlZmF1bHRTZWFyY2hQYXRocygpLiBU
aGUgc2VhcmNoIHBhdGhzCisgICAgY2FuIGJlIGNoYW5nZWQsIHNlZSBzZWFyY2hQYXRocygpIGFu
ZCBzZXRTZWFyY2hQYXRocygpLiBBZGRpdGlvbmFsIHNlYXJjaCBwYXRocworICAgIGNhbiBhbHNv
IGJlIGFkZGVkIHVzaW5nIGFkZFNlYXJjaFBhdGgoKS4KKyAgICAKKyAgICBUaGUgcGx1Z2lucyB0
aGF0IGhhdmUgYmVlbiBkZXRlY3RlZCBhcmUgZXhwb3NlZCBieSB0aGUgcGx1Z2lucygpIG1ldGhv
ZC4KKyAgICBUaGUgbGlzdCBjb250YWlucyBRV2ViUGx1Z2luIG9iamVjdHMgdGhhdCBob2xkIGJv
dGggdGhlIG1ldGFkYXRhIGFuZCB0aGUgTUlNRQorICAgIHR5cGVzIHRoYXQgYXJlIHN1cHBvcnRl
ZCBieSBwYXJ0aWN1bGFyIHBsdWdpbnMuCisgICAgCisgICAgV2ViS2l0IHNwZWNpZmllcyBhIHBs
dWdpbiBmb3IgYSBNSU1FIHR5cGUgYnkgbG9va2luZyBmb3IgdGhlIGZpcnN0IHBsdWdpbiB0aGF0
CisgICAgc3VwcG9ydHMgdGhlIHNwZWNpZmljIE1JTUUgdHlwZS4gVG8gZ2V0IGEgcGx1Z2luLCB0
aGF0IGlzIHVzZWQgYnkgV2ViS2l0IHRvCisgICAgaGFuZGxlIGEgc3BlY2lmaWMgTUlNRSB0eXBl
LCB5b3UgY2FuIHVzZSB0aGUgcGx1Z2luRm9yTWltZVR5cGUoKSBmdW5jdGlvbi4KKyAgICAKKyAg
ICBUbyBjaGFuZ2UgdGhlIHdheSBvZiByZXNvbHZpbmcgTUlNRSB0eXBlcyBhbWJpZ3VpdHksIHlv
dSBjYW4gZXhwbGljaXRseSBzZXQKKyAgICBhIHByZWZlcnJlZCBwbHVnaW4gZm9yIGEgc3BlY2lm
aWMgTUlNRSB0eXBlLCB1c2luZyBzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZSgpLgorICAg
IAorICAgIFxzYSBRV2ViUGx1Z2luLCBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCkKKyov
CisKK1FXZWJQbHVnaW5EYXRhYmFzZTo6UVdlYlBsdWdpbkRhdGFiYXNlKFFPYmplY3QqIHBhcmVu
dCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwgZChuZXcgUVdlYlBsdWdpbkRhdGFiYXNl
UHJpdmF0ZShQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpKSkKK3sKK30KKworUVdl
YlBsdWdpbkRhdGFiYXNlOjp+UVdlYlBsdWdpbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGUgZDsK
K30KKworLyohCisgICAgUmV0dXJucyBhIGxpc3Qgb2YgcGx1Z2lucyBpbnN0YWxsZWQgaW4gdGhl
IHNlYXJjaCBwYXRocy4KKyAgICBUaGUgbGlzdCBpbmNsdWRlcyBkaXNhYmxlZCBwbHVnaW5zLCBl
dmVuIHRob3VnaCB0aGV5IGFyZSBub3QgdXNlZC4KKyAgICAKKyAgICBcc2EgcGx1Z2luRm9yTWlt
ZVR5cGUoKQorKi8KK1FMaXN0PFFXZWJQbHVnaW4+IFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2lu
cygpIGNvbnN0Cit7CisgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcXdlYnBsdWdpbnM7CisgICAgY29u
c3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiYgcGx1Z2lucyA9IGQtPmRhdGFiYXNlLT5wbHVnaW5z
KCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luID0gcGx1Z2luc1tpXTsKKyAgICAg
ICAgcXdlYnBsdWdpbnMuYXBwZW5kKFFXZWJQbHVnaW4ocGx1Z2luKSk7CisgICAgfQorCisgICAg
cmV0dXJuIHF3ZWJwbHVnaW5zOworfQorCisvKiEKKyAgICBSZXR1cm5zIGEgZGVmYXVsdCBzZXQg
b2Ygc2VhcmNoIHBhdGhzLgorICAgIAorICAgIFxzYSBzZWFyY2hQYXRocygpLCBzZXRTZWFyY2hQ
YXRocygpCisqLworUVN0cmluZ0xpc3QgUVdlYlBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0U2VhcmNo
UGF0aHMoKQoreworICAgIFFTdHJpbmdMaXN0IHBhdGhzOworCisgICAgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRpcmVjdG9yaWVzID0gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3Rv
cmllcygpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGlyZWN0b3JpZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIHBhdGhzLmFwcGVuZChkaXJlY3Rvcmllc1tpXSk7CisKKyAgICBy
ZXR1cm4gcGF0aHM7Cit9CisKKy8qIQorICAgIFJldHVybnMgYSBsaXN0IG9mIHNlYXJjaCBwYXRo
cyB0aGF0IGFyZSB1c2VkIGJ5IFdlYktpdCB0byBsb29rIGZvciBwbHVnaW5zLgorICAgIAorICAg
IFxzYSBkZWZhdWx0U2VhcmNoUGF0aHMoKSwgc2V0U2VhcmNoUGF0aHMoKQorKi8KK1FTdHJpbmdM
aXN0IFFXZWJQbHVnaW5EYXRhYmFzZTo6c2VhcmNoUGF0aHMoKSBjb25zdAoreworICAgIFFTdHJp
bmdMaXN0IHBhdGhzOworCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzID0g
ZC0+ZGF0YWJhc2UtPnBsdWdpbkRpcmVjdG9yaWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBkaXJlY3Rvcmllcy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0aHMuYXBwZW5k
KGRpcmVjdG9yaWVzW2ldKTsKKworICAgIHJldHVybiBwYXRoczsKK30KKworLyohCisgICAgQ2hh
bmdlcyB0aGUgc2VhcmNoIHBhdGhzIHRvIFxhIHBhdGhzLgorICAgIFRoZSBkYXRhYmFzZSBpcyBh
dXRvbWF0aWNhbGx5IHJlZnJlc2hlZC4KKyAgICAKKyAgICBcc2Egc2VhcmNoUGF0aHMoKSwgZGVm
YXVsdFNlYXJjaFBhdGhzKCkKKyovCit2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6c2V0U2VhcmNo
UGF0aHMoY29uc3QgUVN0cmluZ0xpc3QmIHBhdGhzKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGRp
cmVjdG9yaWVzOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXRocy5jb3Vu
dCgpOyArK2kpCisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChwYXRocy5hdChpKSk7CisKKyAg
ICBkLT5kYXRhYmFzZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMoZGlyZWN0b3JpZXMpOworICAgIC8v
IFBsdWdpbkRhdGFiYXNlOjpzZXRQbHVnaW5EaXJlY3RvcmllcygpIGRvZXMgbm90IHJlZnJlc2gg
dGhlIGRhdGFiYXNlLgorICAgIGQtPmRhdGFiYXNlLT5yZWZyZXNoKCk7Cit9CisKKy8qIQorICAg
IEFkZHMgYW4gYWRkaXRpb25hbCBcYSBwYXRoIHRvIHRoZSBjdXJyZW50IHNldC4KKyAgICBUaGUg
ZGF0YWJhc2UgaXMgYXV0b21hdGljYWxseSByZWZyZXNoZWQuCisgICAgCisgICAgXHNhIHNlYXJj
aFBhdGhzKCksIHNldFNlYXJjaFBhdGhzKCkKKyovCit2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6
YWRkU2VhcmNoUGF0aChjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIGQtPmRhdGFiYXNlLT5h
ZGRFeHRyYVBsdWdpbkRpcmVjdG9yeShwYXRoKTsKKyAgICAvLyBQbHVnaW5EYXRhYmFzZTo6YWRk
RXh0cmFQbHVnaW5EaXJlY3RvcnkoKSBkb2VzIHJlZnJlc2ggdGhlIGRhdGFiYXNlLgorfQorCisv
KiEKKyAgICBSZWZyZXNoZXMgdGhlIHBsdWdpbiBkYXRhYmFzZSwgYWRkcyBuZXcgcGx1Z2lucyB0
aGF0IGhhdmUgYmVlbiBmb3VuZCBhbmQgcmVtb3ZlcworICAgIHRoZSBvbmVzIHRoYXQgYXJlIG5v
IGxvbmdlciBhdmFpbGFibGUgaW4gdGhlIHNlYXJjaCBwYXRocy4KKyAgICAKKyAgICBZb3UgY2Fu
IGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHRoZSBzZXQgb2YgcGx1Z2lucyBpbnN0YWxsZWQgaW4g
dGhlIHNlYXJjaCBwYXRocworICAgIGNoYW5nZXMuIFlvdSBkbyBub3QgbmVlZCB0byBjYWxsIHRo
aXMgZnVuY3Rpb24gd2hlbiBjaGFuZ2luZyBzZWFyY2ggcGF0aHMsCisgICAgaW4gdGhhdCBjYXNl
IFdlYktpdCBhdXRvbWF0aWNhbGx5IHJlZnJlc2hlcyB0aGUgZGF0YWJhc2UuCisqLwordm9pZCBR
V2ViUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQoreworICAgIGQtPmRhdGFiYXNlLT5yZWZyZXNo
KCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIHBsdWdpbiB0aGF0IGlzIGN1cnJlbnRseSB1
c2VkIGJ5IFdlYktpdCBmb3IgYSBnaXZlbiBcYSBtaW1lVHlwZS4KKyAgICAKKyAgICBcc2Egc2V0
UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUoKQorKi8KK1FXZWJQbHVnaW4gUVdlYlBsdWdpbkRh
dGFiYXNlOjpwbHVnaW5Gb3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAg
ICByZXR1cm4gUVdlYlBsdWdpbihkLT5kYXRhYmFzZS0+cGx1Z2luRm9yTUlNRVR5cGUobWltZVR5
cGUpKTsKK30KKworLyohCisgICAgQ2hhbmdlcyB0aGUgcHJlZmVycmVkIHBsdWdpbiBmb3IgYSBn
aXZlbiBcYSBtaW1lVHlwZSB0byBcYSBwbHVnaW4uIFRoZSBcYSBwbHVnaW4KKyAgICBoYXMgdG8g
c3VwcG9ydCB0aGUgZ2l2ZW4gXGEgbWltZVR5cGUsIG90aGVyd2lzZSB0aGUgc2V0dGluZyB3aWxs
IGhhdmUgbm8gZWZmZWN0LgorICAgIAorICAgIENhbGxpbmcgdGhlIGZ1bmN0aW9uIHdpdGggYSBu
dWxsIFxhIHBsdWdpbiByZXNldHMgdGhlIHNldHRpbmcuCisgICAgCisgICAgXHNhIHBsdWdpbkZv
ck1pbWVUeXBlKCkKKyovCit2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1
Z2luRm9yTWltZVR5cGUoY29uc3QgUVN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFFXZWJQbHVnaW4m
IHBsdWdpbikKK3sKKyAgICBkLT5kYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5
cGUobWltZVR5cGUsIHBsdWdpbi5kLT5wbHVnaW4uZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdp
bmRhdGFiYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ0YjdkNQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgKQEAg
LTAsMCArMSwxMDAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IEpha3ViIFdpZWN6b3Jl
ayA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFXRUJQTFVHSU5EQVRBQkFTRV9ICisj
ZGVmaW5lIFFXRUJQTFVHSU5EQVRBQkFTRV9ICisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgi
CisKKyNpbmNsdWRlIDxRdENvcmUvcW9iamVjdC5oPgorI2luY2x1ZGUgPFF0Q29yZS9xc3RyaW5n
bGlzdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgUGx1Z2luUGFja2FnZTsK
K30KKworY2xhc3MgUVdlYlBsdWdpblByaXZhdGU7CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2Vi
UGx1Z2luIHsKK3B1YmxpYzoKKyAgICBRV2ViUGx1Z2luKCk7CisgICAgUVdlYlBsdWdpbihjb25z
dCBRV2ViUGx1Z2luJiBvdGhlcik7CisgICAgflFXZWJQbHVnaW4oKTsKKworcHJpdmF0ZToKKyAg
ICBRV2ViUGx1Z2luKFdlYkNvcmU6OlBsdWdpblBhY2thZ2UqIHBsdWdpbik7CisKK3B1YmxpYzoK
KyAgICBjbGFzcyBNaW1lVHlwZSB7CisgICAgcHVibGljOgorICAgICAgICBRU3RyaW5nIG5hbWU7
CisgICAgICAgIFFTdHJpbmcgZGVzY3JpcHRpb247CisgICAgICAgIFFTdHJpbmdMaXN0IGZpbGVF
eHRlbnNpb25zOworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNaW1lVHlwZSYgb3Ro
ZXIpIGNvbnN0OworICAgIH07CisKKyAgICBRU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICBRU3Ry
aW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgUUxpc3Q8TWltZVR5cGU+IG1pbWVUeXBlcygp
IGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3Q7CisgICAgUVN0cmluZyBwYXRoKCkgY29uc3Q7CisKKyAgICBib29sIGlzTnVsbCgp
IGNvbnN0OworCisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBp
c0VuYWJsZWQoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRV2ViUGx1Z2lu
JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFXZWJQbHVnaW4mIG90
aGVyKSBjb25zdDsKKyAgICBRV2ViUGx1Z2luIG9wZXJhdG9yPShjb25zdCBRV2ViUGx1Z2luJiBv
dGhlcik7CisKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBsdWdpbkRhdGFiYXNlOworCitwcml2YXRl
OgorICAgIFFXZWJQbHVnaW5Qcml2YXRlICpkOworfTsKKworY2xhc3MgUVdlYlBsdWdpbkRhdGFi
YXNlUHJpdmF0ZTsKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQbHVnaW5EYXRhYmFzZSA6IHB1
YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorCitwcml2YXRlOgorICAgIFFXZWJQbHVnaW5E
YXRhYmFzZShRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKyAgICB+UVdlYlBsdWdpbkRhdGFiYXNlKCk7
CisKK3B1YmxpYzoKKyAgICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5zKCkgY29uc3Q7CisKKyAg
ICBzdGF0aWMgUVN0cmluZ0xpc3QgZGVmYXVsdFNlYXJjaFBhdGhzKCk7CisgICAgUVN0cmluZ0xp
c3Qgc2VhcmNoUGF0aHMoKSBjb25zdDsKKyAgICB2b2lkIHNldFNlYXJjaFBhdGhzKGNvbnN0IFFT
dHJpbmdMaXN0JiBwYXRocyk7CisgICAgdm9pZCBhZGRTZWFyY2hQYXRoKGNvbnN0IFFTdHJpbmcm
IHBhdGgpOworCisgICAgdm9pZCByZWZyZXNoKCk7CisKKyAgICBRV2ViUGx1Z2luIHBsdWdpbkZv
ck1pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2b2lkIHNldFByZWZlcnJl
ZFBsdWdpbkZvck1pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBRV2ViUGx1
Z2luJiBwbHVnaW4pOworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJTZXR0aW5nczsKKworcHJpdmF0
ZToKKyAgICBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlICpkOworfTsKKworI2VuZGlmIC8vIFFX
RUJQTFVHSU5EQVRBQkFTRV9ICmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5k
YXRhYmFzZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJhZTZkOAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaApAQCAtMCwwICsxLDQ2IEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5j
b20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBRV0VCUExVR0lOREFUQUJBU0VfUF9ICisjZGVmaW5lIFFXRUJQTFVH
SU5EQVRBQkFTRV9QX0gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFBsdWdpblBh
Y2thZ2U7CisgICAgY2xhc3MgUGx1Z2luRGF0YWJhc2U7Cit9OworCitjbGFzcyBRV2ViUGx1Z2lu
UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgUVdlYlBsdWdpblByaXZhdGUoUmVmUHRyPFdlYkNvcmU6
OlBsdWdpblBhY2thZ2U+IHBsdWdpblBhY2thZ2UpOworCisgICAgUmVmUHRyPFdlYkNvcmU6OlBs
dWdpblBhY2thZ2U+IHBsdWdpbjsKK307CisKK2NsYXNzIFFXZWJQbHVnaW5EYXRhYmFzZVByaXZh
dGUgeworcHVibGljOgorICAgIFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUoV2ViQ29yZTo6UGx1
Z2luRGF0YWJhc2UqIHBsdWdpbkRhdGFiYXNlKTsKKworICAgIFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlKiBkYXRhYmFzZTsKK307CisKKyNlbmRpZiAvLyBRV0VCUExVR0lOREFUQUJBU0VfUF9ICmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggZmI5NGQ1NS4uOGRlNTFjMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRp
bmdzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNs
dWRlICJxd2VicGFnZV9wLmgiCisjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlLmgiCiAKICNp
bmNsdWRlICJDYWNoZS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuaCIKQEAgLTU0MCw2ICs1NDEsMTcgQEAgUUljb24gUVdlYlNldHRpbmdzOjppY29uRm9yVXJs
KGNvbnN0IFFVcmwmIHVybCkKIH0KIAogLyohCisgICAgUmV0dXJucyB0aGUgcGx1Z2luIGRhdGFi
YXNlIG9iamVjdC4KKyovCitRV2ViUGx1Z2luRGF0YWJhc2UgKlFXZWJTZXR0aW5nczo6cGx1Z2lu
RGF0YWJhc2UoKQoreworICAgIHN0YXRpYyBRV2ViUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0g
MDsKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICBkYXRhYmFzZSA9IG5ldyBRV2ViUGx1Z2lu
RGF0YWJhc2UoKTsKKyAgICByZXR1cm4gZGF0YWJhc2U7Cit9CisKKy8qIQogICAgIFNldHMgXGEg
Z3JhcGhpYyB0byBiZSBkcmF3biB3aGVuIFF0V2ViS2l0IG5lZWRzIHRvIGRyYXcgYW4gaW1hZ2Ug
b2YgdGhlCiAgICAgZ2l2ZW4gXGEgdHlwZS4KIApAQCAtNjI3LDcgKzYzOSw3IEBAIGludCBRV2Vi
U2V0dGluZ3M6Om1heGltdW1QYWdlc0luQ2FjaGUoKQogCiAgICBUaGUgXGEgY2FjaGVNaW5EZWFk
Q2FwYWNpdHkgc3BlY2lmaWVzIHRoZSBcZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcyB0aGF0CiAg
ICBkZWFkIG9iamVjdHMgc2hvdWxkIGNvbnN1bWUgd2hlbiB0aGUgY2FjaGUgaXMgdW5kZXIgcHJl
c3N1cmUuCi0gICAKKwogICAgXGEgY2FjaGVNYXhEZWFkIGlzIHRoZSBcZSBtYXhpbXVtIG51bWJl
ciBvZiBieXRlcyB0aGF0IGRlYWQgb2JqZWN0cyBzaG91bGQKICAgIGNvbnN1bWUgd2hlbiB0aGUg
Y2FjaGUgaXMgXGJvbGQgbm90IHVuZGVyIHByZXNzdXJlLgogCkBAIC02ODcsNyArNjk5LDcgQEAg
dm9pZCBRV2ViU2V0dGluZ3M6OnJlc2V0Rm9udEZhbWlseShGb250RmFtaWx5IHdoaWNoKQogCiAv
KiEKICAgICBcZm4gdm9pZCBRV2ViU2V0dGluZ3M6OnNldEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUg
YXR0cmlidXRlLCBib29sIG9uKQotICAgIAorCiAgICAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUg
c3BlY2lmaWVkIFxhIGF0dHJpYnV0ZSBmZWF0dXJlIGRlcGVuZGluZyBvbiB0aGUKICAgICB2YWx1
ZSBvZiBcYSBvbi4KICovCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5o
IGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAppbmRleCA2MzE0NGNiLi44ODc5MDFmIDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCisrKyBiL1dlYktpdC9xdC9B
cGkvcXdlYnNldHRpbmdzLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
fQogCiBjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFXZWJQbHVnaW5EYXRhYmFzZTsKIGNsYXNzIFFX
ZWJTZXR0aW5nc1ByaXZhdGU7CiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFVcmw7CkBAIC0x
MDIsNiArMTAzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFySWNvbkRhdGFiYXNl
KCk7CiAgICAgc3RhdGljIFFJY29uIGljb25Gb3JVcmwoY29uc3QgUVVybCAmdXJsKTsKIAorICAg
IHN0YXRpYyBRV2ViUGx1Z2luRGF0YWJhc2UgKnBsdWdpbkRhdGFiYXNlKCk7CisKICAgICBzdGF0
aWMgdm9pZCBzZXRXZWJHcmFwaGljKFdlYkdyYXBoaWMgdHlwZSwgY29uc3QgUVBpeG1hcCAmZ3Jh
cGhpYyk7CiAgICAgc3RhdGljIFFQaXhtYXAgd2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUpOwog
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCAyMThmYjZjLi42Zjk5Y2JkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAwOS0wNy0yNCAgSmFr
dWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUVdlYlBsdWdpbkRhdGFiYXNlIGNsYXNzIHRv
IHRoZSBRdCBBUEkuCisKKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBp
L3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoUVdlYlBsdWdpblByaXZh
dGU6OlFXZWJQbHVnaW5Qcml2YXRlKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZVByaXZh
dGU6OlFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBsdWdpbjo6TWlt
ZVR5cGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoUVdlYlBsdWdpbjo6UVdlYlBsdWdpbik6Cisg
ICAgICAgIChRV2ViUGx1Z2luOjp+UVdlYlBsdWdpbik6CisgICAgICAgIChRV2ViUGx1Z2luOjpu
YW1lKToKKyAgICAgICAgKFFXZWJQbHVnaW46OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFFXZWJQ
bHVnaW46Om1pbWVUeXBlcyk6CisgICAgICAgIChRV2ViUGx1Z2luOjpzdXBwb3J0c01pbWVUeXBl
KToKKyAgICAgICAgKFFXZWJQbHVnaW46OnBhdGgpOgorICAgICAgICAoUVdlYlBsdWdpbjo6aXNO
dWxsKToKKyAgICAgICAgKFFXZWJQbHVnaW46OnNldEVuYWJsZWQpOgorICAgICAgICAoUVdlYlBs
dWdpbjo6aXNFbmFibGVkKToKKyAgICAgICAgKFFXZWJQbHVnaW46Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoUVdlYlBsdWdpbjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChRV2ViUGx1Z2luOjpvcGVy
YXRvcj0pOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpRV2ViUGx1Z2luRGF0YWJhc2Up
OgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjp+UVdlYlBsdWdpbkRhdGFiYXNlKToKKyAg
ICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2lucyk6CisgICAgICAgIChRV2ViUGx1Z2lu
RGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocyk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJh
c2U6OnNlYXJjaFBhdGhzKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6c2V0U2VhcmNo
UGF0aHMpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjphZGRTZWFyY2hQYXRoKToKKyAg
ICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAgICAgIChRV2ViUGx1Z2lu
RGF0YWJhc2U6OnBsdWdpbkZvck1pbWVUeXBlKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFz
ZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAqIEFwaS9xd2VicGx1
Z2luZGF0YWJhc2UuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9w
Lmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5o
OgorICAgICAgICAqIHRlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2VicGx1Z2luZGF0YWJhc2Uu
cHJvOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvdHN0X3F3ZWJw
bHVnaW5kYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFz
ZTo6aW5zdGFsbGVkUGx1Z2lucyk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpz
ZWFyY2hQYXRocyk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpudWxsX2RhdGEp
OgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6bnVsbCk6CisgICAgICAgICh0c3Rf
UVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNaW1lVHlwZSk6CisgICAgICAgICh0c3RfUVdl
YlBsdWdpbkRhdGFiYXNlOjplbmFibGVkKToKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJh
c2U6Om9wZXJhdG9yZXF1YWxfZGF0YSk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNl
OjpvcGVyYXRvcmVxdWFsKToKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6OnByZWZl
cnJlZFBsdWdpbik6CisgICAgICAgICogdGVzdHMvdGVzdHMucHJvOgorCiAyMDA5LTA3LTI4ICBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBGaXggdGhlIFF0IGJ1aWxkIGJ5IGFkYXB0aW5nIHRvIHRoZSBjaGFuZ2VzIG9mIFNjcmlwdE9i
amVjdC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvcXdl
YnBsdWdpbmRhdGFiYXNlLnBybyBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2Uv
cXdlYnBsdWdpbmRhdGFiYXNlLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41ZDEwOTkzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwbHVnaW5k
YXRhYmFzZS9xd2VicGx1Z2luZGF0YWJhc2UucHJvCkBAIC0wLDAgKzEsNiBAQAorVEVNUExBVEUg
PSBhcHAKK1RBUkdFVCA9IHRzdF9xd2VicGx1Z2luZGF0YWJhc2UKK2luY2x1ZGUoLi4vLi4vLi4v
Li4vV2ViS2l0LnByaSkKK1NPVVJDRVMgICs9IHRzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCitR
VCArPSB0ZXN0bGliIG5ldHdvcmsKK1FNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRfRElSL2xpYiAk
JFFNQUtFX1JQQVRIRElSCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBsdWdpbmRh
dGFiYXNlL3RzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
bHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NzM0M2JkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAt
MCwwICsxLDM3MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSmFrdWIgV2llY3pvcmVr
IDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0PgorCisjaW5j
bHVkZSA8cWRpci5oPgorI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorI2luY2x1ZGUgPHF3ZWJwYWdl
Lmg+CisjaW5jbHVkZSA8cXdlYnBsdWdpbmRhdGFiYXNlLmg+CisjaW5jbHVkZSA8cXdlYnNldHRp
bmdzLmg+CisjaW5jbHVkZSA8cXZhcmlhbnQuaD4KKworY2xhc3MgdHN0X1FXZWJQbHVnaW5EYXRh
YmFzZSA6IHB1YmxpYyBRT2JqZWN0Cit7CisgICAgUV9PQkpFQ1QKKworcHJpdmF0ZSBzbG90czoK
KyAgICB2b2lkIGluc3RhbGxlZFBsdWdpbnMoKTsKKyAgICB2b2lkIHNlYXJjaFBhdGhzKCk7Cisg
ICAgdm9pZCBudWxsX2RhdGEoKTsKKyAgICB2b2lkIG51bGwoKTsKKyAgICB2b2lkIHBsdWdpbkZv
ck1pbWVUeXBlKCk7CisgICAgdm9pZCBlbmFibGVkKCk7CisgICAgdm9pZCBvcGVyYXRvcmVxdWFs
X2RhdGEoKTsKKyAgICB2b2lkIG9wZXJhdG9yZXF1YWwoKTsKKyAgICB2b2lkIHByZWZlcnJlZFBs
dWdpbigpOworfTsKKwordHlwZWRlZiBRV2ViUGx1Z2luOjpNaW1lVHlwZSBNaW1lVHlwZTsKKwor
dm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCkKK3sKKyAgICBR
V2ViUGFnZSBwYWdlOworICAgIHBhZ2Uuc2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6UGx1Z2luc0VuYWJsZWQsIHRydWUpOworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBwYWdl
Lm1haW5GcmFtZSgpOworCisgICAgUVZhcmlhbnRNYXAganNQbHVnaW5zTWFwID0gZnJhbWUtPmV2
YWx1YXRlSmF2YVNjcmlwdCgid2luZG93Lm5hdmlnYXRvci5wbHVnaW5zIikudG9NYXAoKTsKKyAg
ICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5zID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFz
ZSgpLT5wbHVnaW5zKCk7CisgICAgUUNPTVBBUkUocGx1Z2lucywgUVdlYlNldHRpbmdzOjpwbHVn
aW5EYXRhYmFzZSgpLT5wbHVnaW5zKCkpOworCisgICAgaW50IGxlbmd0aCA9IGpzUGx1Z2luc01h
cFsibGVuZ3RoIl0udG9JbnQoKTsKKyAgICBRQ09NUEFSRShsZW5ndGgsIHBsdWdpbnMuY291bnQo
KSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFFX
ZWJQbHVnaW4gcGx1Z2luID0gcGx1Z2lucy5hdChpKTsKKworICAgICAgICBRVmFyaWFudE1hcCBq
c1BsdWdpbiA9IGZyYW1lLT5ldmFsdWF0ZUphdmFTY3JpcHQoUVN0cmluZygid2luZG93Lm5hdmln
YXRvci5wbHVnaW5zWyUxXSIpLmFyZyhpKSkudG9NYXAoKTsKKyAgICAgICAgUVN0cmluZyBuYW1l
ID0ganNQbHVnaW5bIm5hbWUiXS50b1N0cmluZygpOworICAgICAgICBRU3RyaW5nIGRlc2NyaXB0
aW9uID0ganNQbHVnaW5bImRlc2NyaXB0aW9uIl0udG9TdHJpbmcoKTsKKyAgICAgICAgUVN0cmlu
ZyBmaWxlTmFtZSA9IGpzUGx1Z2luWyJmaWxlbmFtZSJdLnRvU3RyaW5nKCk7CisKKyAgICAgICAg
UUNPTVBBUkUocGx1Z2luLm5hbWUoKSwgbmFtZSk7CisgICAgICAgIFFDT01QQVJFKHBsdWdpbi5k
ZXNjcmlwdGlvbigpLCBkZXNjcmlwdGlvbik7CisgICAgICAgIFFDT01QQVJFKFFGaWxlSW5mbyhw
bHVnaW4ucGF0aCgpKS5maWxlTmFtZSgpLCBmaWxlTmFtZSk7CisKKyAgICAgICAgUUxpc3Q8TWlt
ZVR5cGU+IG1pbWVUeXBlczsKKyAgICAgICAgaW50IG1pbWVUeXBlc0NvdW50ID0ganNQbHVnaW5b
Imxlbmd0aCJdLnRvSW50KCk7CisKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lVHlw
ZXNDb3VudDsgKytqKSB7CisgICAgICAgICAgICBRVmFyaWFudE1hcCBqc01pbWVUeXBlID0gZnJh
bWUtPmV2YWx1YXRlSmF2YVNjcmlwdChRU3RyaW5nKCJ3aW5kb3cubmF2aWdhdG9yLnBsdWdpbnNb
JTFdWyUyXSIpLmFyZyhpKS5hcmcoaikpLnRvTWFwKCk7CisKKyAgICAgICAgICAgIE1pbWVUeXBl
IG1pbWVUeXBlOworICAgICAgICAgICAgbWltZVR5cGUubmFtZSA9IGpzTWltZVR5cGVbInR5cGUi
XS50b1N0cmluZygpOworICAgICAgICAgICAgbWltZVR5cGUuZGVzY3JpcHRpb24gPSBqc01pbWVU
eXBlWyJkZXNjcmlwdGlvbiJdLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBtaW1lVHlwZS5maWxl
RXh0ZW5zaW9ucyA9IGpzTWltZVR5cGVbInN1ZmZpeGVzIl0udG9TdHJpbmcoKS5zcGxpdCgnLCcs
IFFTdHJpbmc6OlNraXBFbXB0eVBhcnRzKTsKKworICAgICAgICAgICAgbWltZVR5cGVzLmFwcGVu
ZChtaW1lVHlwZSk7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdpbi5zdXBwb3J0c01pbWVUeXBl
KG1pbWVUeXBlLm5hbWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIFFDT01QQVJFKHBsdWdpbi5t
aW1lVHlwZXMoKSwgbWltZVR5cGVzKTsKKworICAgICAgICBRVkVSSUZZKCFwbHVnaW4uaXNOdWxs
KCkpOworICAgICAgICBRVkVSSUZZKHBsdWdpbi5pc0VuYWJsZWQoKSk7CisgICAgfQorfQorCit2
b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6OnNlYXJjaFBhdGhzKCkKK3sKKyAgICBRV2ViUGx1
Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpOwor
ICAgIFFMaXN0PFFXZWJQbHVnaW4+IHBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworICAg
IFFTdHJpbmdMaXN0IGRpcmVjdG9yaWVzID0gZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCk7CisgICAg
UUNPTVBBUkUoUVdlYlBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0U2VhcmNoUGF0aHMoKSwgZGlyZWN0
b3JpZXMpOworCisgICAgZGF0YWJhc2UtPnNldFNlYXJjaFBhdGhzKGRpcmVjdG9yaWVzKTsKKyAg
ICBRQ09NUEFSRShRV2ViUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJl
Y3Rvcmllcyk7CisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCksIGRpcmVjdG9y
aWVzKTsKKyAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2lucygpLCBwbHVnaW5zKTsKKworICAg
IGRhdGFiYXNlLT5zZXRTZWFyY2hQYXRocyhRU3RyaW5nTGlzdCgpKTsKKyAgICBRQ09NUEFSRShR
V2ViUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7Cisg
ICAgUUNPTVBBUkUoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCksIFFTdHJpbmdMaXN0KCkpOworICAg
IFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5zKCkuY291bnQoKSwgMCk7CisKKyAgICBkYXRhYmFz
ZS0+c2V0U2VhcmNoUGF0aHMoZGlyZWN0b3JpZXMpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5z
ZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisgICAgZGF0YWJhc2UtPmFkZFNlYXJjaFBhdGgo
UURpcjo6dGVtcFBhdGgoKSk7CisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCku
Y291bnQoKSwgZGlyZWN0b3JpZXMuY291bnQoKSArIDEpOworICAgIFFWRVJJRlkoZGF0YWJhc2Ut
PnNlYXJjaFBhdGhzKCkuY29udGFpbnMoUURpcjo6dGVtcFBhdGgoKSkpOworICAgIFFDT01QQVJF
KGRhdGFiYXNlLT5wbHVnaW5zKCksIHBsdWdpbnMpOworCisgICAgZGF0YWJhc2UtPnNldFNlYXJj
aFBhdGhzKGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShRV2ViUGx1Z2luRGF0YWJhc2U6OmRl
ZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisgICAgUUNPTVBBUkUoZGF0YWJhc2Ut
PnNlYXJjaFBhdGhzKCksIGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1
Z2lucygpLCBwbHVnaW5zKTsKK30KKworUV9ERUNMQVJFX01FVEFUWVBFKFFXZWJQbHVnaW4pCit2
b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Om51bGxfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFk
ZENvbHVtbjxRV2ViUGx1Z2luPigicGx1Z2luIik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxib29s
PigibnVsbCIpOworCisgICAgUVRlc3Q6Om5ld1JvdygibnVsbCIpIDw8IFFXZWJQbHVnaW4oKSA8
PCB0cnVlOworICAgIFFUZXN0OjpuZXdSb3coImZvbyIpIDw8IFFXZWJTZXR0aW5nczo6cGx1Z2lu
RGF0YWJhc2UoKS0+cGx1Z2luRm9yTWltZVR5cGUoImZvb2JhcmJheiIpIDw8IHRydWU7CisKKyAg
ICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5zID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFz
ZSgpLT5wbHVnaW5zKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50KCk7
ICsraSkKKyAgICAgICAgUVRlc3Q6Om5ld1JvdyhRU3RyaW5nOjpudW1iZXIoaSkudG9VdGY4KCku
Y29uc3REYXRhKCkpIDw8IHBsdWdpbnMuYXQoaSkgPDwgZmFsc2U7Cit9CisKK3ZvaWQgdHN0X1FX
ZWJQbHVnaW5EYXRhYmFzZTo6bnVsbCgpCit7CisgICAgUUZFVENIKFFXZWJQbHVnaW4sIHBsdWdp
bik7CisgICAgUUZFVENIKGJvb2wsIG51bGwpOworCisgICAgUUNPTVBBUkUocGx1Z2luLmlzTnVs
bCgpLCBudWxsKTsKK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JN
aW1lVHlwZSgpCit7CisgICAgUU11bHRpTWFwPFFTdHJpbmcsIFFXZWJQbHVnaW4+IHBsdWdpbnNN
YXA7CisgICAgUVdlYlBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9IFFXZWJTZXR0aW5nczo6cGx1
Z2luRGF0YWJhc2UoKTsKKyAgICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5zID0gZGF0YWJhc2Ut
PnBsdWdpbnMoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5jb3VudCgpOyAr
K2kpIHsKKyAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW4gPSBwbHVnaW5zLmF0KGkpOworCisgICAg
ICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXMgPSBwbHVnaW4ubWltZVR5cGVzKCk7CisgICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWltZVR5cGVzLmNvdW50KCk7ICsraikgeworICAgICAg
ICAgICAgUVN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlcy5hdChqKS5uYW1lOworICAgICAgICAg
ICAgcGx1Z2luc01hcC5pbnNlcnQobWltZVR5cGUsIHBsdWdpbik7CisgICAgICAgICAgICBRVkVS
SUZZKHBsdWdpbi5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBsdWdpbnMuY291bnQoKTsgKytpKSB7CisgICAg
ICAgIFFXZWJQbHVnaW4gcGx1Z2luID0gcGx1Z2lucy5hdChpKTsKKworICAgICAgICBRTGlzdDxN
aW1lVHlwZT4gbWltZVR5cGVzID0gcGx1Z2luLm1pbWVUeXBlcygpOworICAgICAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG1pbWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAgICAgICAgICAgIFFTdHJp
bmcgbWltZVR5cGUgPSBtaW1lVHlwZXMuYXQoaikubmFtZTsKKworICAgICAgICAgICAgUVZFUklG
WShwbHVnaW5zTWFwLmNvdW50KG1pbWVUeXBlKSA+IDApOworICAgICAgICAgICAgaWYgKHBsdWdp
bnNNYXAuY291bnQobWltZVR5cGUpID4gMSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW5Gb3JNaW1lVHlwZSA9IGRhdGFiYXNlLT5wbHVn
aW5Gb3JNaW1lVHlwZShtaW1lVHlwZSk7CisgICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5Gb3JN
aW1lVHlwZSwgcGx1Z2luKTsKKyAgICAgICAgICAgIFFDT01QQVJFKHBsdWdpbkZvck1pbWVUeXBl
LCBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUudG9VcHBlcigpKSk7CisgICAg
ICAgICAgICBRQ09NUEFSRShwbHVnaW5Gb3JNaW1lVHlwZSwgZGF0YWJhc2UtPnBsdWdpbkZvck1p
bWVUeXBlKG1pbWVUeXBlLnRvTG93ZXIoKSkpOworICAgICAgICAgICAgUVZFUklGWShwbHVnaW4u
c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpOworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2lu
Rm9yTWltZVR5cGUuaXNOdWxsKCkpOworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2luLmlzTnVs
bCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNl
OjplbmFibGVkKCkKK3sKKyAgICBRTXVsdGlNYXA8UVN0cmluZywgUVdlYlBsdWdpbj4gcGx1Z2lu
c01hcDsKKyAgICBRV2ViUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdzOjpw
bHVnaW5EYXRhYmFzZSgpOworICAgIFFMaXN0PFFXZWJQbHVnaW4+IHBsdWdpbnMgPSBkYXRhYmFz
ZS0+cGx1Z2lucygpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50KCk7
ICsraSkgeworICAgICAgICBRV2ViUGx1Z2luIHBsdWdpbiA9IHBsdWdpbnMuYXQoaSk7CisKKyAg
ICAgICAgUUxpc3Q8TWltZVR5cGU+IG1pbWVUeXBlcyA9IHBsdWdpbi5taW1lVHlwZXMoKTsKKyAg
ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lVHlwZXMuY291bnQoKTsgKytqKSB7CisgICAg
ICAgICAgICBRU3RyaW5nIG1pbWVUeXBlID0gbWltZVR5cGVzLmF0KGopLm5hbWU7CisgICAgICAg
ICAgICBwbHVnaW5zTWFwLmluc2VydChtaW1lVHlwZSwgcGx1Z2luKTsKKyAgICAgICAgICAgIFFW
RVJJRlkocGx1Z2luLnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUpKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIFFNdWx0aU1hcDxRU3RyaW5nLCBRV2ViUGx1Z2luPjo6aXRlcmF0b3IgaXQgPSBw
bHVnaW5zTWFwLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IHBsdWdpbnNNYXAuZW5kKCkpIHsK
KyAgICAgICAgUVN0cmluZyBtaW1lVHlwZSA9IGl0LmtleSgpOworICAgICAgICBRV2ViUGx1Z2lu
IHBsdWdpbiA9IGl0LnZhbHVlKCk7CisgICAgICAgIFFXZWJQbHVnaW4gcGx1Z2luRm9yTWltZVR5
cGUgPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpOworCisgICAgICAgIFFW
RVJJRlkocGx1Z2luc01hcC5jb3VudChtaW1lVHlwZSkgPiAwKTsKKworICAgICAgICBpZiAocGx1
Z2luc01hcC5jb3VudChtaW1lVHlwZSkgPT0gMSkgeworICAgICAgICAgICAgUUNPTVBBUkUocGx1
Z2luLCBwbHVnaW5Gb3JNaW1lVHlwZSk7CisKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luLmlz
RW5hYmxlZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luRm9yTWltZVR5cGUuaXNFbmFi
bGVkKCkpOworICAgICAgICAgICAgcGx1Z2luLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICAg
ICAgUVZFUklGWSghcGx1Z2luLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlkoIXBs
dWdpbkZvck1pbWVUeXBlLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIFFWRVJJRlkocGx1Z2luLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1
Z2luRm9yTWltZVR5cGUuaXNFbmFibGVkKCkpOworICAgICAgICAgICAgcGx1Z2luLnNldEVuYWJs
ZWQoZmFsc2UpOworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2luLmlzRW5hYmxlZCgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIFFWRVJJRlkoIXBsdWdpbi5pc051bGwoKSk7CisgICAgICAgIFFW
RVJJRlkoIXBsdWdpbkZvck1pbWVUeXBlLmlzTnVsbCgpKTsKKworICAgICAgICBRV2ViUGx1Z2lu
IHBsdWdpbkZvck1pbWVUeXBlMiA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlw
ZSk7CisgICAgICAgIGlmIChwbHVnaW5zTWFwLmNvdW50KG1pbWVUeXBlKSA9PSAxKSB7CisgICAg
ICAgICAgICBRVkVSSUZZKHBsdWdpbkZvck1pbWVUeXBlMiAhPSBwbHVnaW4pOworICAgICAgICAg
ICAgUVZFUklGWShwbHVnaW5Gb3JNaW1lVHlwZTIuaXNOdWxsKCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgUVZFUklGWShwbHVnaW5Gb3JNaW1lVHlwZTIgIT0gcGx1Z2luKTsKKyAg
ICAgICAgICAgIFFWRVJJRlkoIXBsdWdpbkZvck1pbWVUeXBlMi5pc051bGwoKSk7CisgICAgICAg
IH0KKworICAgICAgICBwbHVnaW4uc2V0RW5hYmxlZCh0cnVlKTsKKworICAgICAgICArK2l0Owor
ICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRvcmVxdWFsX2Rh
dGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48UVdlYlBsdWdpbj4oImZpcnN0Iik7CisgICAg
UVRlc3Q6OmFkZENvbHVtbjxRV2ViUGx1Z2luPigic2Vjb25kIik7CisgICAgUVRlc3Q6OmFkZENv
bHVtbjxib29sPigiZXF1YWwiKTsKKworICAgIFFXZWJQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2Ug
PSBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCk7CisgICAgUVRlc3Q6Om5ld1JvdygibnVs
bCIpIDw8IFFXZWJQbHVnaW4oKSA8PCBRV2ViUGx1Z2luKCkgPDwgdHJ1ZTsKKyAgICBRVGVzdDo6
bmV3Um93KCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIDw8IGRhdGFiYXNlLT5wbHVn
aW5Gb3JNaW1lVHlwZSgiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZGF0YWJhc2UtPnBs
dWdpbkZvck1pbWVUeXBlKCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIDw8IHRydWU7
CisgICAgUVRlc3Q6Om5ld1JvdygiZm9vL2Jhci1iYXoiKSA8PCBkYXRhYmFzZS0+cGx1Z2luRm9y
TWltZVR5cGUoImZvby9iYXItYmF6IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZSgiZm9vL2Jhci1iYXoiKSA8PCB0cnVlOwor
CisgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAocGx1Z2lucy5jb3VudCgpIC0gMSk7ICsraSkgeworICAg
ICAgICBRV2ViUGx1Z2luIGZpcnN0ID0gcGx1Z2lucy5hdChpKTsKKyAgICAgICAgUVdlYlBsdWdp
biBzZWNvbmQgPSBwbHVnaW5zLmF0KGkgKyAxKTsKKworICAgICAgICBRVGVzdDo6bmV3Um93KFFT
dHJpbmcoIiUxPT0lMiIpLmFyZyhmaXJzdC5uYW1lKCksIHNlY29uZC5uYW1lKCkpLnRvVXRmOCgp
LmNvbnN0RGF0YSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZmly
c3QgPDwgc2Vjb25kIDw8IGZhbHNlOworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRh
dGFiYXNlOjpvcGVyYXRvcmVxdWFsKCkKK3sKKyAgICBRRkVUQ0goUVdlYlBsdWdpbiwgZmlyc3Qp
OworICAgIFFGRVRDSChRV2ViUGx1Z2luLCBzZWNvbmQpOworICAgIFFGRVRDSChib29sLCBlcXVh
bCk7CisKKyAgICBRQ09NUEFSRShmaXJzdCA9PSBzZWNvbmQsIGVxdWFsKTsKK30KKwordm9pZCB0
c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwcmVmZXJyZWRQbHVnaW4oKQoreworICAgIFFNdWx0aU1h
cDxRU3RyaW5nLCBRV2ViUGx1Z2luPiBwbHVnaW5zTWFwOworICAgIFFXZWJQbHVnaW5EYXRhYmFz
ZSogZGF0YWJhc2UgPSBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCk7CisgICAgUUxpc3Q8
UVdlYlBsdWdpbj4gcGx1Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHBsdWdpbnMuY291bnQoKTsgKytpKSB7CisgICAgICAgIFFXZWJQbHVnaW4g
cGx1Z2luID0gcGx1Z2lucy5hdChpKTsKKworICAgICAgICBRTGlzdDxNaW1lVHlwZT4gbWltZVR5
cGVzID0gcGx1Z2luLm1pbWVUeXBlcygpOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1p
bWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAgICAgICAgICAgIFFTdHJpbmcgbWltZVR5cGUgPSBt
aW1lVHlwZXMuYXQoaikubmFtZTsKKyAgICAgICAgICAgIHBsdWdpbnNNYXAuaW5zZXJ0KG1pbWVU
eXBlLCBwbHVnaW4pOworICAgICAgICB9CisgICAgfQorCisgICAgUU11bHRpTWFwPFFTdHJpbmcs
IFFXZWJQbHVnaW4+OjppdGVyYXRvciBpdCA9IHBsdWdpbnNNYXAuYmVnaW4oKTsKKyAgICB3aGls
ZSAoaXQgIT0gcGx1Z2luc01hcC5lbmQoKSkgeworICAgICAgICBRU3RyaW5nIG1pbWVUeXBlID0g
aXQua2V5KCk7CisKKyAgICAgICAgaWYgKHBsdWdpbnNNYXAuY291bnQobWltZVR5cGUpID4gMSkg
eworICAgICAgICAgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1Z2luc0Zvck1pbWVUeXBlID0gcGx1
Z2luc01hcC52YWx1ZXMobWltZVR5cGUpOworICAgICAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW4g
PSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpOworICAgICAgICAgICAgUVZF
UklGWShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpOworCisgICAgICAgICAgICBw
bHVnaW5zRm9yTWltZVR5cGUucmVtb3ZlQWxsKHBsdWdpbik7CisgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHBsdWdpbnNGb3JNaW1lVHlwZS5jb3VudCgpOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBRV2ViUGx1Z2luIGFub3RoZXJQbHVnaW4gPSBwbHVnaW5zRm9yTWltZVR5cGUuYXQo
aSk7CisgICAgICAgICAgICAgICAgUVZFUklGWShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZShtaW1l
VHlwZSkpOworICAgICAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luICE9IGFub3RoZXJQbHVnaW4p
OworCisgICAgICAgICAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBl
KG1pbWVUeXBlKSwgcGx1Z2luKTsKKyAgICAgICAgICAgICAgICBkYXRhYmFzZS0+c2V0UHJlZmVy
cmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUsIGFub3RoZXJQbHVnaW4pOworICAgICAgICAg
ICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIGFu
b3RoZXJQbHVnaW4pOworCisgICAgICAgICAgICAgICAgYW5vdGhlclBsdWdpbi5zZXRFbmFibGVk
KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2luRm9yTWlt
ZVR5cGUobWltZVR5cGUpLCBwbHVnaW4pOworCisgICAgICAgICAgICAgICAgYW5vdGhlclBsdWdp
bi5zZXRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5w
bHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIGFub3RoZXJQbHVnaW4pOworCisgICAgICAgICAg
ICAgICAgZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlLCBR
V2ViUGx1Z2luKCkpOworICAgICAgICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5G
b3JNaW1lVHlwZShtaW1lVHlwZSksIHBsdWdpbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBRV2ViUGx1Z2luIHBsdWdpbiA9IGRhdGFiYXNlLT5wbHVnaW5G
b3JNaW1lVHlwZShtaW1lVHlwZSk7CisgICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5zTWFwLnZh
bHVlKG1pbWVUeXBlKSwgcGx1Z2luKTsKKworICAgICAgICAgICAgZGF0YWJhc2UtPnNldFByZWZl
cnJlZFBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlLCBwbHVnaW4pOworICAgICAgICAgICAgUUNP
TVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlKSwgcGx1Z2luKTsKKwor
ICAgICAgICAgICAgcGx1Z2luLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICAgICAgUUNPTVBB
UkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlKSwgUVdlYlBsdWdpbigpKTsK
KyAgICAgICAgICAgIHBsdWdpbi5zZXRFbmFibGVkKHRydWUpOworCisgICAgICAgICAgICBkYXRh
YmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUsIFFXZWJQbHVnaW4o
KSk7CisgICAgICAgICAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWlt
ZVR5cGUpLCBwbHVnaW4pOworICAgICAgICB9CisKKyAgICAgICAgKytpdDsKKyAgICB9CisKKyAg
ICBpZiAocGx1Z2luc01hcC5rZXlzKCkuY291bnQoKSA+PSAyKSB7CisgICAgICAgIFFTdHJpbmdM
aXN0IG1pbWVUeXBlcyA9IHBsdWdpbnNNYXAudW5pcXVlS2V5cygpOworCisgICAgICAgIFFTdHJp
bmcgbWltZVR5cGUxID0gbWltZVR5cGVzLmF0KDApOworICAgICAgICBRU3RyaW5nIG1pbWVUeXBl
MiA9IG1pbWVUeXBlcy5hdCgxKTsKKyAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW4xID0gZGF0YWJh
c2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMSk7CisgICAgICAgIFFXZWJQbHVnaW4gcGx1
Z2luMiA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZTIpOworCisgICAgICAg
IGludCBpID0gMjsKKyAgICAgICAgd2hpbGUgKHBsdWdpbjIuc3VwcG9ydHNNaW1lVHlwZShtaW1l
VHlwZTEpCisgICAgICAgICAgICAgICAmJiAhbWltZVR5cGUyLmlzRW1wdHkoKQorICAgICAgICAg
ICAgICAgJiYgaSA8IG1pbWVUeXBlcy5jb3VudCgpKSB7CisgICAgICAgICAgICBtaW1lVHlwZTIg
PSBtaW1lVHlwZXMuYXQoaSk7CisgICAgICAgICAgICBwbHVnaW4yID0gZGF0YWJhc2UtPnBsdWdp
bkZvck1pbWVUeXBlKG1pbWVUeXBlMik7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KKwor
ICAgICAgICBwbHVnaW4xID0gZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMSk7
CisgICAgICAgIFFWRVJJRlkocGx1Z2luMS5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlMSkpOwor
ICAgICAgICBRVkVSSUZZKCFwbHVnaW4xLmlzTnVsbCgpKTsKKyAgICAgICAgcGx1Z2luMiA9IGRh
dGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZTIpOworICAgICAgICBRVkVSSUZZKHBs
dWdpbjIuc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZTIpKTsKKyAgICAgICAgUVZFUklGWSghcGx1
Z2luMi5pc051bGwoKSk7CisKKyAgICAgICAgZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZv
ck1pbWVUeXBlKG1pbWVUeXBlMiwgcGx1Z2luMSk7CisgICAgICAgIFFWRVJJRlkoIXBsdWdpbjEu
c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZTIpKTsKKyAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2Ut
PnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMiksIHBsdWdpbjIpOworCisgICAgICAgIGRhdGFi
YXNlLT5zZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZTEsIHBsdWdpbjEpOwor
ICAgICAgICBRVkVSSUZZKCFwbHVnaW4yLnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUxKSk7Cisg
ICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZTIpLCBw
bHVnaW4yKTsKKyAgICB9Cit9CisKK1FURVNUX01BSU4odHN0X1FXZWJQbHVnaW5EYXRhYmFzZSkK
KworI2luY2x1ZGUgInRzdF9xd2VicGx1Z2luZGF0YWJhc2UubW9jIgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L3Rlc3RzL3Rlc3RzLnBybyBiL1dlYktpdC9xdC90ZXN0cy90ZXN0cy5wcm8KaW5kZXgg
NzAwMGQzMi4uZDAxZTczYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3RzL3Rlc3RzLnBybwor
KysgYi9XZWJLaXQvcXQvdGVzdHMvdGVzdHMucHJvCkBAIC0xLDQgKzEsNCBAQAogCiBURU1QTEFU
RSA9IHN1YmRpcnMKLVNVQkRJUlMgPSBxd2ViZnJhbWUgcXdlYnBhZ2UgcXdlYmVsZW1lbnQgcXdl
Ymhpc3RvcnlpbnRlcmZhY2UgcXdlYnZpZXcgcXdlYmhpc3RvcnkKK1NVQkRJUlMgPSBxd2ViZnJh
bWUgcXdlYnBhZ2UgcXdlYmVsZW1lbnQgcXdlYmhpc3RvcnlpbnRlcmZhY2UgcXdlYnBsdWdpbmRh
dGFiYXNlIHF3ZWJ2aWV3IHF3ZWJoaXN0b3J5CiBTVUJESVJTICs9IGJlbmNobWFya3MvcGFpbnRp
bmcvdHN0X3BhaW50aW5nLnBybyBiZW5jaG1hcmtzL2xvYWRpbmcvdHN0X2xvYWRpbmcucHJvCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33730</attachid>
            <date>2009-07-29 12:16:21 -0700</date>
            <delta_ts>2009-07-30 03:43:16 -0700</delta_ts>
            <desc>Allow to explicitly choose a preferred plugin for a mimetype - r2.</desc>
            <filename>0001-Allow-to-explicitly-choose-a-preferred-plugin-for-a-.patch</filename>
            <type>text/plain</type>
            <size>4725</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSBkOGY1MzI2NWYwOTU3NGMzYTM0OTdmZTMzYTQyOTk4NDU1YmUyNzViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFdlZCwgMjkgSnVsIDIwMDkgMjI6NDM6MTUgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0g
QWxsb3cgdG8gZXhwbGljaXRseSBjaG9vc2UgYSBwcmVmZXJyZWQgcGx1Z2luIGZvciBhIG1pbWV0
eXBlLgoKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCgpXaGVu
IHRoZSBwcmVmZXJyZWQgcGx1Z2luIGlzIHNldCBmb3IgYSBzcGVjaWZpYyBNSU1FIHR5cGUsIGl0
IHdpbGwgYmUKYWx3YXlzIHBpY2tlZCB1cCwgcmVnYXJkbGVzcyBvZiBpdHMgdmVyc2lvbiwgcXVp
cmtzIGV0Yy4KCkNsaWVudCBhcHBsaWNhdGlvbnMgbWF5IHdhbnQgdG8gdXNlIHRoYXQgQVBJIHRv
IHJlc29sdmUgbWltZXR5cGUKYW1iaWd1aXR5IGluIGEgY3VzdG9tIHdheSwgcmF0aGVyIHRoYW4g
aW4gdGhlIGRlZmF1bHQgd2F5IHRoYXQgaXMKY3VycmVudGx5IHVzZWQgaW4gV2ViS2l0LgotLS0K
IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgfCAgIDMwICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrLQogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggICB8ICAg
IDIgKysKIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA2YmM1NjU1Li4wNWZjZjg3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTE2MSw2ICsxNjEsMTIgQEAgUGx1Z2luUGFj
a2FnZSogUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAKICAgICBTdHJpbmcga2V5ID0gbWltZVR5cGUubG93ZXIoKTsKICAgICBQbHVnaW5T
ZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2lucy5lbmQoKTsKKyAgICBQbHVnaW5QYWNr
YWdlKiBwcmVmZXJyZWRQbHVnaW4gPSBtX3ByZWZlcnJlZFBsdWdpbnMuZ2V0KGtleSkuZ2V0KCk7
CisgICAgaWYgKHByZWZlcnJlZFBsdWdpbgorICAgICAgICAmJiBwcmVmZXJyZWRQbHVnaW4tPmlz
RW5hYmxlZCgpCisgICAgICAgICYmIHByZWZlcnJlZFBsdWdpbi0+bWltZVRvRGVzY3JpcHRpb25z
KCkuY29udGFpbnMoa2V5KSkgeworICAgICAgICByZXR1cm4gcHJlZmVycmVkUGx1Z2luOworICAg
IH0KIAogICAgIFZlY3RvcjxQbHVnaW5QYWNrYWdlKiwgMj4gcGx1Z2luQ2hvaWNlczsKIApAQCAt
MTk5LDEzICsyMDUsMTkgQEAgU3RyaW5nIFBsdWdpbkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgY29uc3QKICAgICAgICAgTUlNRVRvRXh0ZW5z
aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgbWltZV9lbmQgPSAoKml0KS0+bWltZVRvRXh0ZW5zaW9u
cygpLmVuZCgpOwogCiAgICAgICAgIGZvciAoTUlNRVRvRXh0ZW5zaW9uc01hcDo6Y29uc3RfaXRl
cmF0b3IgbWltZV9pdCA9ICgqaXQpLT5taW1lVG9FeHRlbnNpb25zKCkuYmVnaW4oKTsgbWltZV9p
dCAhPSBtaW1lX2VuZDsgKyttaW1lX2l0KSB7CisgICAgICAgICAgICBtaW1lVHlwZSA9IG1pbWVf
aXQtPmZpcnN0OworICAgICAgICAgICAgUGx1Z2luUGFja2FnZSogcHJlZmVycmVkUGx1Z2luID0g
bV9wcmVmZXJyZWRQbHVnaW5zLmdldChtaW1lVHlwZSkuZ2V0KCk7CiAgICAgICAgICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyA9IG1pbWVfaXQtPnNlY29uZDsKICAgICAgICAg
ICAgIGJvb2wgZm91bmRNYXBwaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShleHRlbnNpb25zW2ldLCBleHRlbnNpb24pKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbiA9ICgqaXQpLmdldCgpOworCisgICAg
ICAgICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRQbHVnaW4gJiYgUGx1Z2luUGFja2FnZTo6ZXF1
YWwoKnBsdWdpbiwgKnByZWZlcnJlZFBsdWdpbikpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWltZVR5cGU7CisKICAgICAgICAgICAgICAgICAgICAgcGx1Z2luQ2hvaWNlcy5hcHBl
bmQocGx1Z2luKTsKLSAgICAgICAgICAgICAgICAgICAgbWltZVR5cGVGb3JQbHVnaW4uYWRkKHBs
dWdpbiwgbWltZV9pdC0+Zmlyc3QpOworICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZUZvclBs
dWdpbi5hZGQocGx1Z2luLCBtaW1lVHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWFw
cGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KQEAgLTI0Nyw2ICsyNTksMTQgQEAgUGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OmZp
bmRQbHVnaW4oY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBw
bHVnaW47CiB9CiAKK3ZvaWQgUGx1Z2luRGF0YWJhc2U6OnNldFByZWZlcnJlZFBsdWdpbkZvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBsdWdpblBhY2thZ2UqIHBsdWdpbikKK3sK
KyAgICBpZiAocGx1Z2luICYmICFwbHVnaW4tPm1pbWVUb0V4dGVuc2lvbnMoKS5jb250YWlucyht
aW1lVHlwZSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3ByZWZlcnJlZFBsdWdpbnMu
c2V0KG1pbWVUeXBlLmxvd2VyKCksIHBsdWdpbik7Cit9CisKIHZvaWQgUGx1Z2luRGF0YWJhc2U6
OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYgcGx1Z2lucykgY29uc3QKIHsKICAgICBQbHVn
aW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2lucy5lbmQoKTsKQEAgLTI3MSw2ICsy
OTEsMTMgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6YWRkKFBhc3NSZWZQdHI8UGx1Z2luUGFja2Fn
ZT4gcHJwUGFja2FnZSkKIAogdm9pZCBQbHVnaW5EYXRhYmFzZTo6cmVtb3ZlKFBsdWdpblBhY2th
Z2UqIHBhY2thZ2UpCiB7CisgICAgTUlNRVRvRXh0ZW5zaW9uc01hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuYmVnaW4oKTsKKyAgICBNSU1FVG9FeHRl
bnNpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25z
KCkuZW5kKCk7CisgICAgZm9yICggOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKG1f
cHJlZmVycmVkUGx1Z2lucy5jb250YWlucyhpdC0+Zmlyc3QpICYmIG1fcHJlZmVycmVkUGx1Z2lu
cy5nZXQoaXQtPmZpcnN0KSA9PSBwYWNrYWdlKQorICAgICAgICAgICAgbV9wcmVmZXJyZWRQbHVn
aW5zLnJlbW92ZShpdC0+Zmlyc3QpOworICAgIH0KKyAgICAKICAgICBtX3BsdWdpbnMucmVtb3Zl
KHBhY2thZ2UpOwogICAgIG1fcGx1Z2luc0J5UGF0aC5yZW1vdmUocGFja2FnZS0+cGF0aCgpKTsK
IH0KQEAgLTI4MSw2ICszMDgsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpjbGVhcigpCiAgICAg
bV9wbHVnaW5zQnlQYXRoLmNsZWFyKCk7CiAgICAgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5jbGVh
cigpOwogICAgIG1fcmVnaXN0ZXJlZE1JTUVUeXBlcy5jbGVhcigpOworICAgIG1fcHJlZmVycmVk
UGx1Z2lucy5jbGVhcigpOwogfQogCiAjaWYgIVBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0o
V1gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaCBiL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IGIyYjAwOTYuLmY4ODRiNTkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5oCkBAIC02NCw2ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBQbHVnaW5QYWNrYWdlKiBmaW5kUGx1Z2luKGNvbnN0IEtVUkwmLCBTdHJp
bmcmIG1pbWVUeXBlKTsKICAgICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luRm9yTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgICAgIHZvaWQgc2V0UHJlZmVycmVkUGx1Z2lu
Rm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1Z2luUGFja2FnZSogcGx1Z2lu
KTsKIAogICAgICAgICB2b2lkIHNldFBsdWdpbkRpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgewpAQCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFBsdWdpblNldCBtX3BsdWdpbnM7CiAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4gPiBtX3BsdWdpbnNCeVBhdGg7CiAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCB0aW1lX3Q+IG1fcGx1Z2luUGF0aHNXaXRoVGltZXM7CisgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4gPiBtX3ByZWZlcnJlZFBsdWdp
bnM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33766</attachid>
            <date>2009-07-30 03:43:16 -0700</date>
            <delta_ts>2009-07-30 09:48:33 -0700</delta_ts>
            <desc>Allow to explicitly choose a preferred plugin for a mimetype - r3.</desc>
            <filename>0001-Allow-to-explicitly-choose-a-preferred-plugin-for-a-.patch</filename>
            <type>text/plain</type>
            <size>5949</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSBlN2EzNGY0OTlhMjljN2QwMDA3MTJlYTc3ZmExYWZiNjU5NTgwOTMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFdlZCwgMjkgSnVsIDIwMDkgMjI6NDM6MTUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBBbGxv
dyB0byBleHBsaWNpdGx5IGNob29zZSBhIHByZWZlcnJlZCBwbHVnaW4gZm9yIGEgbWltZXR5cGUu
CgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKCldoZW4gdGhl
IHByZWZlcnJlZCBwbHVnaW4gaXMgc2V0IGZvciBhIHNwZWNpZmljIE1JTUUgdHlwZSwgaXQgd2ls
bCBiZQphbHdheXMgcGlja2VkIHVwLCByZWdhcmRsZXNzIG9mIGl0cyB2ZXJzaW9uLCBxdWlya3Mg
ZXRjLgoKQ2xpZW50IGFwcGxpY2F0aW9ucyBtYXkgd2FudCB0byB1c2UgdGhhdCBBUEkgdG8gcmVz
b2x2ZSBtaW1ldHlwZQphbWJpZ3VpdHkgaW4gYSBjdXN0b20gd2F5LCByYXRoZXIgdGhhbiBpbiB0
aGUgZGVmYXVsdCB3YXkgdGhhdCBpcwpjdXJyZW50bHkgdXNlZCBpbiBXZWJLaXQuCi0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysrKysrKysrKysr
KysrKysKIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgfCAgIDMwICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrLQogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgg
ICB8ICAgIDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDI0MmU1OGUuLmFmY2IzYWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDctMzAgIEpha3Vi
IFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgdG8gZXhwbGljaXRseSBjaG9vc2UgYSBwcmVm
ZXJyZWQgcGx1Z2luIGZvciBhIG1pbWV0eXBlLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisgICAgICAgIAorICAgICAgICBX
aGVuIHRoZSBwcmVmZXJyZWQgcGx1Z2luIGlzIHNldCBmb3IgYSBzcGVjaWZpYyBNSU1FIHR5cGUs
IGl0IHdpbGwgYmUKKyAgICAgICAgYWx3YXlzIHBpY2tlZCB1cCwgcmVnYXJkbGVzcyBvZiBpdHMg
dmVyc2lvbiwgcXVpcmtzIGV0Yy4KKyAgICAgICAgCisgICAgICAgIENsaWVudCBhcHBsaWNhdGlv
bnMgbWF5IHdhbnQgdG8gdXNlIHRoYXQgQVBJIHRvIHJlc29sdmUgbWltZXR5cGUKKyAgICAgICAg
YW1iaWd1aXR5IGluIGEgY3VzdG9tIHdheSwgcmF0aGVyIHRoYW4gaW4gdGhlIGRlZmF1bHQgd2F5
IHRoYXQgaXMKKyAgICAgICAgY3VycmVudGx5IHVzZWQgaW4gV2ViS2l0LgorCisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
YmFzZTo6cGx1Z2luRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJh
c2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
YXRhYmFzZTo6Y2xlYXIpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaDoKKwog
MjAwOS0wNy0zMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApp
bmRleCA2YmM1NjU1Li4wNWZjZjg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAg
LTE2MSw2ICsxNjEsMTIgQEAgUGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZv
ck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKICAgICBTdHJpbmcga2V5ID0gbWlt
ZVR5cGUubG93ZXIoKTsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1
Z2lucy5lbmQoKTsKKyAgICBQbHVnaW5QYWNrYWdlKiBwcmVmZXJyZWRQbHVnaW4gPSBtX3ByZWZl
cnJlZFBsdWdpbnMuZ2V0KGtleSkuZ2V0KCk7CisgICAgaWYgKHByZWZlcnJlZFBsdWdpbgorICAg
ICAgICAmJiBwcmVmZXJyZWRQbHVnaW4tPmlzRW5hYmxlZCgpCisgICAgICAgICYmIHByZWZlcnJl
ZFBsdWdpbi0+bWltZVRvRGVzY3JpcHRpb25zKCkuY29udGFpbnMoa2V5KSkgeworICAgICAgICBy
ZXR1cm4gcHJlZmVycmVkUGx1Z2luOworICAgIH0KIAogICAgIFZlY3RvcjxQbHVnaW5QYWNrYWdl
KiwgMj4gcGx1Z2luQ2hvaWNlczsKIApAQCAtMTk5LDEzICsyMDUsMTkgQEAgU3RyaW5nIFBsdWdp
bkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikg
Y29uc3QKICAgICAgICAgTUlNRVRvRXh0ZW5zaW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgbWltZV9l
bmQgPSAoKml0KS0+bWltZVRvRXh0ZW5zaW9ucygpLmVuZCgpOwogCiAgICAgICAgIGZvciAoTUlN
RVRvRXh0ZW5zaW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgbWltZV9pdCA9ICgqaXQpLT5taW1lVG9F
eHRlbnNpb25zKCkuYmVnaW4oKTsgbWltZV9pdCAhPSBtaW1lX2VuZDsgKyttaW1lX2l0KSB7Cisg
ICAgICAgICAgICBtaW1lVHlwZSA9IG1pbWVfaXQtPmZpcnN0OworICAgICAgICAgICAgUGx1Z2lu
UGFja2FnZSogcHJlZmVycmVkUGx1Z2luID0gbV9wcmVmZXJyZWRQbHVnaW5zLmdldChtaW1lVHlw
ZSkuZ2V0KCk7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyA9
IG1pbWVfaXQtPnNlY29uZDsKICAgICAgICAgICAgIGJvb2wgZm91bmRNYXBwaW5nID0gZmFsc2U7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7
IGkrKykgewogICAgICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShleHRlbnNpb25z
W2ldLCBleHRlbnNpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBs
dWdpbiA9ICgqaXQpLmdldCgpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRQ
bHVnaW4gJiYgUGx1Z2luUGFja2FnZTo6ZXF1YWwoKnBsdWdpbiwgKnByZWZlcnJlZFBsdWdpbikp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGU7CisKICAgICAgICAgICAg
ICAgICAgICAgcGx1Z2luQ2hvaWNlcy5hcHBlbmQocGx1Z2luKTsKLSAgICAgICAgICAgICAgICAg
ICAgbWltZVR5cGVGb3JQbHVnaW4uYWRkKHBsdWdpbiwgbWltZV9pdC0+Zmlyc3QpOworICAgICAg
ICAgICAgICAgICAgICBtaW1lVHlwZUZvclBsdWdpbi5hZGQocGx1Z2luLCBtaW1lVHlwZSk7CiAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwcGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTI0Nyw2ICsyNTksMTQgQEAgUGx1Z2lu
UGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4oY29uc3QgS1VSTCYgdXJsLCBTdHJp
bmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBwbHVnaW47CiB9CiAKK3ZvaWQgUGx1Z2luRGF0YWJh
c2U6OnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFBsdWdpblBhY2thZ2UqIHBsdWdpbikKK3sKKyAgICBpZiAocGx1Z2luICYmICFwbHVnaW4tPm1p
bWVUb0V4dGVuc2lvbnMoKS5jb250YWlucyhtaW1lVHlwZSkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX3ByZWZlcnJlZFBsdWdpbnMuc2V0KG1pbWVUeXBlLmxvd2VyKCksIHBsdWdpbik7
Cit9CisKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYg
cGx1Z2lucykgY29uc3QKIHsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
cGx1Z2lucy5lbmQoKTsKQEAgLTI3MSw2ICsyOTEsMTMgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6
YWRkKFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gcHJwUGFja2FnZSkKIAogdm9pZCBQbHVnaW5E
YXRhYmFzZTo6cmVtb3ZlKFBsdWdpblBhY2thZ2UqIHBhY2thZ2UpCiB7CisgICAgTUlNRVRvRXh0
ZW5zaW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25z
KCkuYmVnaW4oKTsKKyAgICBNSU1FVG9FeHRlbnNpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZW5kKCk7CisgICAgZm9yICggOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKG1fcHJlZmVycmVkUGx1Z2lucy5jb250YWlucyhpdC0+
Zmlyc3QpICYmIG1fcHJlZmVycmVkUGx1Z2lucy5nZXQoaXQtPmZpcnN0KSA9PSBwYWNrYWdlKQor
ICAgICAgICAgICAgbV9wcmVmZXJyZWRQbHVnaW5zLnJlbW92ZShpdC0+Zmlyc3QpOworICAgIH0K
KyAgICAKICAgICBtX3BsdWdpbnMucmVtb3ZlKHBhY2thZ2UpOwogICAgIG1fcGx1Z2luc0J5UGF0
aC5yZW1vdmUocGFja2FnZS0+cGF0aCgpKTsKIH0KQEAgLTI4MSw2ICszMDgsNyBAQCB2b2lkIFBs
dWdpbkRhdGFiYXNlOjpjbGVhcigpCiAgICAgbV9wbHVnaW5zQnlQYXRoLmNsZWFyKCk7CiAgICAg
bV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5jbGVhcigpOwogICAgIG1fcmVnaXN0ZXJlZE1JTUVUeXBl
cy5jbGVhcigpOworICAgIG1fcHJlZmVycmVkUGx1Z2lucy5jbGVhcigpOwogfQogCiAjaWYgIVBM
QVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oV1gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmlu
ZGV4IGIyYjAwOTYuLmY4ODRiNTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5oCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCkBAIC02NCw2
ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQbHVnaW5QYWNrYWdlKiBm
aW5kUGx1Z2luKGNvbnN0IEtVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICAgICAgUGx1Z2lu
UGFja2FnZSogcGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAg
ICAgIHZvaWQgc2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgUGx1Z2luUGFja2FnZSogcGx1Z2luKTsKIAogICAgICAgICB2b2lkIHNldFBsdWdpbkRp
cmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgewpA
QCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsdWdpblNldCBt
X3BsdWdpbnM7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4g
PiBtX3BsdWdpbnNCeVBhdGg7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCB0aW1lX3Q+IG1fcGx1
Z2luUGF0aHNXaXRoVGltZXM7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2lu
UGFja2FnZT4gPiBtX3ByZWZlcnJlZFBsdWdpbnM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33894</attachid>
            <date>2009-07-31 13:01:24 -0700</date>
            <delta_ts>2009-08-15 09:05:36 -0700</delta_ts>
            <desc>Add normalizePath() function to the FileSystem files.</desc>
            <filename>0001-Add-normalizePath-function-to-the-FileSystem-files.patch</filename>
            <type>text/plain</type>
            <size>5861</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSAwODIxNmRlOGIzOTRhZGIwNGFiNTk5Y2FlNzUyNjY1ODI0YTkyMmE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IEZyaSwgMzEgSnVsIDIwMDkgMTk6NTM6NDQgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0g
QWRkIG5vcm1hbGl6ZVBhdGgoKSBmdW5jdGlvbiB0byB0aGUgRmlsZVN5c3RlbSBmaWxlcy4KCmh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQoKSW1wbGVtZW50IHRo
ZSBmdW5jdGlvbiBmb3IgdGhlIFF0IHBvcnQuCgpUaGUgZnVuY3Rpb24gbWlnaHQgYmUgaGFuZHkg
d2hlbiBjb21wYXJpbmcgdHdvIGZpbGUgcGF0aHMuIFRoZSBwYXRocwpzaG91bGQgYmUgbm9ybWFs
aXplZCBiZWZvcmUgdGhlIGNvbXBhcmlzb24uCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrKysrKysrKysrKysrKysrCiBX
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK
IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcCB8ICAgIDYg
KysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwICAgICAgICAgICB8
ICAgIDYgKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCAg
ICAgICB8ICAgIDYgKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcCAg
ICAgICAgICAgICB8ICAgIDUgKysrKwogV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdp
bi5jcHAgICAgICAgICAgIHwgICAgNiArKysrKwogV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lz
dGVtV3guY3BwICAgICAgICAgICAgIHwgICAgNiArKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA2MyBp
bnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4M2YyYy4uMzhmMTZiMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MCBAQAorMjAwOS0wNy0zMSAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbm9ybWFs
aXplUGF0aCgpIGZ1bmN0aW9uIHRvIHRoZSBGaWxlU3lzdGVtIGZpbGVzLgorICAgICAgICAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisgICAg
ICAgIAorICAgICAgICBJbXBsZW1lbnQgdGhlIGZ1bmN0aW9uIGZvciB0aGUgUXQgcG9ydC4KKyAg
ICAgICAgCisgICAgICAgIFRoZSBmdW5jdGlvbiBtaWdodCBiZSBoYW5keSB3aGVuIGNvbXBhcmlu
ZyB0d28gZmlsZSBwYXRocy4gVGhlIHBhdGhzCisgICAgICAgIHNob3VsZCBiZSBub3JtYWxpemVk
IGJlZm9yZSB0aGUgY29tcGFyaXNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0ZpbGVTeXN0ZW1HdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplUGF0aCk6Cisg
ICAgICAgICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om5vcm1hbGl6ZVBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1R
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVQYXRoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVQ
YXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bm9ybWFsaXplUGF0aCk6CisKIDIwMDktMDctMzAgIEplcmVteSBPcmxvdyAgPGpv
cmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCmluZGV4IGUyM2I2ZGEuLmUyYzRlOTAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3Rl
bS5oCkBAIC0xNDIsNiArMTQyLDcgQEAgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwogU3RyaW5nIHBhdGhHZXRG
aWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmlu
ZyYpOworU3RyaW5nIG5vcm1hbGl6ZVBhdGgoY29uc3QgU3RyaW5nJik7CiAKIFZlY3RvcjxTdHJp
bmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRl
ciA9IFN0cmluZygpKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
aWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lz
dGVtQ2hyb21pdW0uY3BwCmluZGV4IDBhNDg4NTIuLmQ5ZjgxNzIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTY2LDYgKzY2LDEy
IEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCitTdHJpbmcgbm9ybWFsaXplUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKwogU3RyaW5nIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29t
cG9uZW50KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVT
eXN0ZW1HdGsuY3BwCmluZGV4IGZjZGM4NjMuLjlkNWIzYTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0ZpbGVTeXN0ZW1HdGsuY3BwCkBAIC0xOTksNiArMTk5LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJu
YW1lLmdldCgpKTsKIH0KIAorU3RyaW5nIG5vcm1hbGl6ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKIFZlY3Rv
cjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGZpbHRlcikKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGRhMTI0YTguLjJkYmVjZWEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTE1Nyw2ICsxNTcs
MTIgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBkaXJuYW1lKGZzUmVwLm11dGFibGVEYXRhKCkpOwogfQogCitTdHJpbmcgbm9ybWFsaXplUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gcGF0aDsKK30KKwogLy8gT0sgdG8gbm90IGltcGxlbWVudCBsaXN0RGlyZWN0b3J5IGF0IHRo
ZSBtb21lbnQsIGJlY2F1c2UgaXQncyBvbmx5IHVzZWQgZm9yIHBsdWctaW5zLCBhbmQKIC8vIGFs
bCBwbGF0Zm9ybXMgdGhhdCB1c2UgdGhlIHNoYXJlZCBwbHVnLWluIGltcGxlbWVudGF0aW9uIGhh
dmUgaW1wbGVtZW50YXRpb25zLiBXZSdkIG5lZWQKIC8vIHRvIGltcGxlbWVudCBpdCBpZiB3ZSB3
YW50ZWQgdG8gdXNlIFBsdWdpbkRhdGFiYXNlLmNwcCBvbiB0aGUgTWFjLiBCZXR0ZXIgdG8gbm90
IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCmluZGV4IDI4ZDNjYTcu
LjMzZjUzZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKQEAgLTk5LDYgKzk5
LDExIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1
cm4gU3RyaW5nKFFGaWxlSW5mbyhwYXRoKS5hYnNvbHV0ZVBhdGgoKSk7CiB9CiAKK1N0cmluZyBu
b3JtYWxpemVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gUURpcjo6Y2xl
YW5QYXRoKHBhdGgpOworfQorCiBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
ZW50cmllczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggYTY3NmY4
Ny4uNzg0M2Y4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTEz
OSw2ICsxMzksMTIgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIHJldHVybiBkaXJOYW1lOwogfQogCitTdHJpbmcgbm9ybWFsaXplUGF0aChjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcGF0aDsKK30K
Kwogc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAppbmRleCA3ZGU0MjVlLi40OGZj
M2I3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwCkBAIC05Nyw2ICs5NywxMiBA
QCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQogCitTdHJpbmcgbm9ybWFsaXplUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKwogQ1N0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFyKiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="18080"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33895</attachid>
            <date>2009-07-31 13:01:52 -0700</date>
            <delta_ts>2009-08-12 04:43:15 -0700</delta_ts>
            <desc>Don&apos;t clear the plugin database when changing search paths.</desc>
            <filename>0002-Don-t-clear-the-plugin-database-when-changing-search.patch</filename>
            <type>text/plain</type>
            <size>6059</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSA5YmE3ZTk0ZDk4NjZkYTk3ZTE4YWJiYTliYmNiMzk0NTAzMTcxZGEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IEZyaSwgMzEgSnVsIDIwMDkgMTU6NTA6MzYgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0g
RG9uJ3QgY2xlYXIgdGhlIHBsdWdpbiBkYXRhYmFzZSB3aGVuIGNoYW5naW5nIHNlYXJjaCBwYXRo
cy4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQoKUmF0aGVy
IHRoYW4gY2xlYXJpbmcgdGhlIHBsdWdpbiBkYXRhYmFzZSBhZnRlciBzZXR0aW5nIGEgbmV3IHNl
dCBvZgpzZWFyY2ggcGF0aHMsIGxldCB0aGUgcmVmcmVzaCgpIG1ldGhvZCB0YWtlIGNhcmUgb2Yg
dGhlIHBsdWdpbnMgdGhhdCBhcmUKbm8gbG9uZ2VyIGxvY2F0ZWQgaW4gdGhlIHNlYXJjaCBwYXRo
cyBhbmQgdGh1cyBzaG91bGQgbm90IGJlIHRha2VuIGludG8KYWNjb3VudCBhbnkgbW9yZS4KLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrKysr
KysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwICAg
ICAgICB8ICAgMjEgKysrKysrKysrKysrKysrKystLS0tCiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuaCAgICAgICAgICB8ICAgIDcgKy0tLS0tLQogV2ViQ29yZS9wbHVnaW5zL3dpbi9Q
bHVnaW5EYXRhYmFzZVdpbi5jcHAgfCAgICA0ICsrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDYgaW5z
ZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOGYxNmIzLi40NDhmNWFlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDMw
IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgRG9u
J3QgY2xlYXIgdGhlIHBsdWdpbiBkYXRhYmFzZSB3aGVuIGNoYW5naW5nIHNlYXJjaCBwYXRocy4K
KyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzY1MQorICAgICAgICAKKyAgICAgICAgUmF0aGVyIHRoYW4gY2xlYXJpbmcgdGhlIHBsdWdp
biBkYXRhYmFzZSBhZnRlciBzZXR0aW5nIGEgbmV3IHNldCBvZgorICAgICAgICBzZWFyY2ggcGF0
aHMsIGxldCB0aGUgcmVmcmVzaCgpIG1ldGhvZCB0YWtlIGNhcmUgb2YgdGhlIHBsdWdpbnMgdGhh
dCBhcmUKKyAgICAgICAgbm8gbG9uZ2VyIGxvY2F0ZWQgaW4gdGhlIHNlYXJjaCBwYXRocyBhbmQg
dGh1cyBzaG91bGQgbm90IGJlIHRha2VuIGludG8KKyAgICAgICAgYWNjb3VudCBhbnkgbW9yZS4K
KworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRGF0YWJhc2U6OmFkZEV4dHJhUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lucyk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpzZXRQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
YmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
bkRhdGFiYXNlOjppc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgICogcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5oOgorICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNl
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2lu
RGlyZWN0b3JpZXMpOgorCisyMDA5LTA3LTMxICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAg
IEFkZCBub3JtYWxpemVQYXRoKCkgZnVuY3Rpb24gdG8gdGhlIEZpbGVTeXN0ZW0gZmlsZXMuCiAg
ICAgICAgIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc2NTEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDI5OTA4MzYuLjk4YWQwMTgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIFBs
dWdpbkRhdGFiYXNlOjppc01JTUVUeXBlUmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjphZGRFeHRyYVBsdWdpbkRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSkKIHsKLSAgICBtX3BsdWdpbkRpcmVjdG9yaWVzLmFwcGVuZChkaXJl
Y3RvcnkpOworICAgIG1fcGx1Z2luRGlyZWN0b3JpZXMuYXBwZW5kKG5vcm1hbGl6ZVBhdGgoZGly
ZWN0b3J5KSk7CiAgICAgcmVmcmVzaCgpOwogfQogCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBQ
bHVnaW5EYXRhYmFzZTo6Z2V0RGVsZXRlZFBsdWdpbnMoUGx1Z2luU2V0JiBwbHVnaW5zKSBjb25z
dAogewogICAgIFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5zLmVuZCgp
OwogICAgIGZvciAoUGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z2lucy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCgqaXQpLT5w
YXRoKCkpKQorICAgICAgICBpZiAoIWZpbGVFeGlzdHMoKCppdCktPnBhdGgoKSkgfHwgbV9wbHVn
aW5EaXJlY3Rvcmllcy5maW5kKCgqaXQpLT5wYXJlbnREaXJlY3RvcnkoKSkgPT0gLTEpCiAgICAg
ICAgICAgICBwbHVnaW5zLmFkZCgqaXQpOwogICAgIH0KIH0KQEAgLTI4MSw2ICsyODEsNyBAQCBi
b29sIFBsdWdpbkRhdGFiYXNlOjphZGQoUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPiBwcnBQYWNr
YWdlKQogICAgIEFTU0VSVF9BUkcocHJwUGFja2FnZSwgcHJwUGFja2FnZSk7CiAKICAgICBSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IHBycFBhY2thZ2U7CisgICAgQVNTRVJUKG1fcGx1
Z2luRGlyZWN0b3JpZXMuZmluZChwYWNrYWdlLT5wYXJlbnREaXJlY3RvcnkoKSkgIT0gLTEpOwog
CiAgICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UpLnNlY29uZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzEyLDYgKzMxMywxNSBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpjbGVhcigp
CiAgICAgbV9wcmVmZXJyZWRQbHVnaW5zLmNsZWFyKCk7CiB9CiAKK3ZvaWQgUGx1Z2luRGF0YWJh
c2U6OnNldFBsdWdpbkRpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKK3sKKyAgICBtX3BsdWdpbkRpcmVjdG9yaWVzID0gZGlyZWN0b3JpZXM7CisKKyAgICBWZWN0
b3I8U3RyaW5nPjo6aXRlcmF0b3IgZW5kID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5lbmQoKTsKKyAg
ICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAqaXQgPSBub3JtYWxpemVQYXRoKCpp
dCk7Cit9CisKICNpZiAhUExBVEZPUk0oV0lOX09TKSB8fCBQTEFURk9STShXWCkKIC8vIEZvciBT
YWZhcmkvV2luIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKIC8v
IGluIFBsdWdpbkRhdGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29yZSBjb25z
dHJ1Y3RzCkBAIC0zNzUsNiArMzg1LDEwIEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIHBhdGhzLmFwcGVuZChxdFBhdGhzKTsK
ICNlbmRpZgogCisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9IHBhdGhzLmVuZCgp
OworICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gcGF0aHMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQorICAgICAgICAqaXQgPSBub3JtYWxpemVQYXRoKCppdCk7CisKICAg
ICByZXR1cm4gcGF0aHM7CiB9CiAKQEAgLTM5MCw4ICs0MDQsNyBAQCBib29sIFBsdWdpbkRhdGFi
YXNlOjppc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
cHJlZmVycmVkUGF0aC5hcHBlbmQoU3RyaW5nKCJcXEFwcGxpY2F0aW9uIERhdGFcXE1vemlsbGFc
XHBsdWdpbnMiKSk7CiAjZW5kaWYKIAotICAgIC8vIFRPRE86IFdlIHNob3VsZCBub3JtYWxpemUg
dGhlIHBhdGggYmVmb3JlIGRvaW5nIGEgY29tcGFyaXNvbi4KLSAgICByZXR1cm4gcGF0aCA9PSBw
cmVmZXJyZWRQYXRoOworICAgIHJldHVybiBub3JtYWxpemVQYXRoKHBhdGgpID09IG5vcm1hbGl6
ZVBhdGgocHJlZmVycmVkUGF0aCk7CiB9CiAKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdp
blBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuaAppbmRleCBmODg0YjU5Li5kNDMyYjQxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuaApAQCAtNjYsMTIgKzY2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBQbHVnaW5QYWNrYWdlKiBwbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKICAgICAgICAgdm9pZCBzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBQbHVnaW5QYWNrYWdlKiBwbHVnaW4pOwogCi0gICAgICAgIHZvaWQgc2V0
UGx1Z2luRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjbGVhcigpOwotICAgICAgICAgICAgbV9wbHVnaW5EaXJlY3Rv
cmllcyA9IGRpcmVjdG9yaWVzOwotICAgICAgICB9Ci0KKyAgICAgICAgdm9pZCBzZXRQbHVnaW5E
aXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpOwogICAgICAgICBz
dGF0aWMgVmVjdG9yPFN0cmluZz4gZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHBsdWdpbkRpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW5EaXJlY3RvcmllczsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdp
bkRhdGFiYXNlV2luLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4u
Y3BwCmluZGV4IDYzNGIyYTEuLmEyZGUwZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy93
aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2lu
RGF0YWJhc2VXaW4uY3BwCkBAIC0zODQsNiArMzg0LDEwIEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdp
bkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIGFkZFdpbmRvd3NNZWRp
YVBsYXllclBsdWdpbkRpcmVjdG9yeShkaXJlY3Rvcmllcyk7CiAgICAgYWRkTWFjcm9tZWRpYVBs
dWdpbkRpcmVjdG9yaWVzKGRpcmVjdG9yaWVzKTsKIAorICAgIFZlY3RvcjxTdHJpbmc+OjppdGVy
YXRvciBlbmQgPSBkaXJlY3Rvcmllcy5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpp
dGVyYXRvciBpdCA9IGRpcmVjdG9yaWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgKml0ID0gbm9ybWFsaXplUGF0aCgqaXQpOworCiAgICAgcmV0dXJuIGRpcmVjdG9yaWVzOwog
fQogCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33941</attachid>
            <date>2009-08-01 13:34:10 -0700</date>
            <delta_ts>2009-08-12 04:43:53 -0700</delta_ts>
            <desc>Add QWebPluginDatabase class to the Qt API - r3.</desc>
            <filename>0001-Add-QWebPluginDatabase-API-to-the-Qt-API.patch</filename>
            <type>text/plain</type>
            <size>39584</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSA3MTYzOWRhZDEyMjcyNmM3MjUxZDNkMGYxNjM1MmVkYmU3YWM5OWQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFRodSwgMzAgSnVsIDIwMDkgMjI6NDc6NDIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBBZGQg
UVdlYlBsdWdpbkRhdGFiYXNlIEFQSSB0byB0aGUgUXQgQVBJLgoKaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFdlYkNvcmUvV2ViQ29yZS5wcm8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvcXQvQXBpL2hl
YWRlcnMucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0Fw
aS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwICAgICAgICAgICAgICAgfCAgMzk2ICsrKysrKysrKysr
KysrKysrKysKIFdlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmggICAgICAgICAgICAg
ICAgIHwgIDEwMCArKysrKwogV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2VfcC5oICAg
ICAgICAgICAgICAgfCAgIDQ2ICsrKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5o
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDU0ICsrKwogLi4uL3F3ZWJwbHVnaW5kYXRh
YmFzZS9xd2VicGx1Z2luZGF0YWJhc2UucHJvICAgICAgfCAgICA2ICsKIC4uLi9xd2VicGx1Z2lu
ZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgIHwgIDQwMSArKysrKysrKysrKysr
KysrKysrKwogV2ViS2l0L3F0L3Rlc3RzL3Rlc3RzLnBybyAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiAxMiBmaWxlcyBjaGFuZ2VkLCAxMDMzIGluc2VydGlvbnMoKyksIDMgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0
YWJhc2UuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0
YWJhc2UuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFi
YXNlX3AuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0
YWJhc2UvcXdlYnBsdWdpbmRhdGFiYXNlLnBybwogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9x
dC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ0
OGY1YWUuLmU4ZjEzNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDgtMDEgIEpha3ViIFdpZWN6b3Jl
ayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFFXZWJQbHVnaW5EYXRhYmFzZSBBUEkgdG8gdGhlIFF0IEFQSS4K
KyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzY1MQorCisgICAgICAgICogV2ViQ29yZS5wcm86CisKIDIwMDktMDctMzEgIEpha3ViIFdp
ZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCBlZGNmMjVkLi41MGE5YTEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIxNTUsNiArMjE1NSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwIFwKICAgICAu
Li9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkv
cXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwIFwKKyAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVn
aW5kYXRhYmFzZS5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmZhY3Rvcnku
Y3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAgXAogICAg
IC4uL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFiYXNlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQXBpL2hlYWRlcnMucHJpIGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQppbmRleCBkNzNh
ZGIwLi45MmExMjBkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpCisrKyBi
L1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKQEAgLTcsNiArNyw3IEBAIFdFQktJVF9BUElfSEVB
REVSUyA9ICQkUFdEL3F3ZWJmcmFtZS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3
ZWJkYXRhYmFzZS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJzZWN1cml0eW9y
aWdpbi5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJlbGVtZW50LmggXAorICAg
ICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmRhdGFiYXNlLmggXAogICAgICAgICAg
ICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmZhY3RvcnkuaCBcCiAgICAgICAgICAgICAgICAg
ICAgICAkJFBXRC9xd2ViaGlzdG9yeS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3
ZWJraXR2ZXJzaW9uLmgKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFi
YXNlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTkzYzE1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCkBAIC0wLDAgKzEsMzk2IEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZS5o
IgorI2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZV9wLmgiCisKKyNpbmNsdWRlICJQbHVnaW5E
YXRhYmFzZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKKy8qIQorICAgIFxjbGFzcyBRV2ViUGx1Z2luOjpNaW1lVHlwZQorICAgIFxz
aW5jZSA0LjYKKyAgICBcYnJpZWYgUmVwcmVzZW50cyBhIHNpbmdsZSBNSU1FIHR5cGUgc3VwcG9y
dGVkIGJ5IGEgcGx1Z2luLgorKi8KKworLyohCisgICAgXHZhcmlhYmxlIFFXZWJQbHVnaW46Ok1p
bWVUeXBlOjpuYW1lCisgICAgXGJyaWVmIHRoZSBuYW1lIG9mIHRoZSBNSU1FIHR5cGUgZS5nLiB0
ZXh0L3BsYWluCisqLworCisvKiEKKyAgICBcdmFyaWFibGUgUVdlYlBsdWdpbjo6TWltZVR5cGU6
OmRlc2NyaXB0aW9uCisgICAgXGJyaWVmIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgTUlNRSB0eXBl
CisqLworCisvKiEKKyAgICBcdmFyaWFibGUgUVdlYlBsdWdpbjo6TWltZVR5cGU6OmZpbGVFeHRl
bnNpb25zCisgICAgXGJyaWVmIGEgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgdGhhdCBhcmUgYXNz
b2NpYXRlZCB3aXRoIHRoZSBtaW1lIHR5cGUKKyovCisKK1FXZWJQbHVnaW5Qcml2YXRlOjpRV2Vi
UGx1Z2luUHJpdmF0ZShSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGx1Z2luUGFja2FnZSkKKyAgICA6
IHBsdWdpbihwbHVnaW5QYWNrYWdlKQoreworfQorCitRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRl
OjpRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlKFBsdWdpbkRhdGFiYXNlKiBwbHVnaW5EYXRhYmFz
ZSkKKyAgICA6IGRhdGFiYXNlKHBsdWdpbkRhdGFiYXNlKQoreworfQorCitib29sIFFXZWJQbHVn
aW46Ok1pbWVUeXBlOjpvcGVyYXRvcj09KGNvbnN0IE1pbWVUeXBlJiBvdGhlcikgY29uc3QKK3sK
KyAgICByZXR1cm4gbmFtZSA9PSBvdGhlci5uYW1lCisgICAgICAgICAgICYmIGRlc2NyaXB0aW9u
ID09IG90aGVyLmRlc2NyaXB0aW9uCisgICAgICAgICAgICYmIGZpbGVFeHRlbnNpb25zID09IG90
aGVyLmZpbGVFeHRlbnNpb25zOworfQorCisvKiEKKyAgICBcY2xhc3MgUVdlYlBsdWdpbgorICAg
IFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJQbHVnaW4gY2xhc3MgcmVwcmVzZW50cyBh
IHNpbmdsZSBOZXRzY2FwZSBwbHVnaW4uCisKKyAgICBUaGUgUVdlYlBsdWdpbiByZXByZXNlbnRz
IGEgTmV0c2NhcGUgcGx1Z2luLCB0aGF0IGlzIHBpY2tlZCB1cCBieSBXZWJLaXQKKyAgICBhbmQg
aW5jbHVkZWQgaW4gdGhlIHBsdWdpbiBkYXRhYmFzZS4gVGhlIGNsYXNzIGNvbnRhaW5zIGluZm9y
bWF0aW9uIGFib3V0CisgICAgdGhlIHBsdWdpbjogaXRzIG5hbWUoKSwgZGVzY3JpcHRpb24oKSwg
YSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhhdCBpdCBzdXBwb3J0czoKKyAgICBtaW1lVHlwZXMoKSBh
bmQgdGhlIHBhdGggb2YgdGhlIHBsdWdpbiBmaWxlLgorCisgICAgUGFydGljdWxhciBwbHVnaW5z
IGNhbiBiZSBkaXNhYmxlZCwgdGhpcyB3YXkgdGhleSB3b24ndCBiZSB1c2VkIGJ5IFdlYktpdAor
ICAgIGZvciBoYW5kbGluZyBzdXBwb3J0ZWQgTUlNRSB0eXBlczogc2V0RW5hYmxlZCgpLCBlbmFi
bGVkKCkuCisKKyAgICBcc2EgUVdlYlBsdWdpbkRhdGFiYXNlCisqLworCisvKiEKKyAgICBDb25z
dHJ1Y3RzIGEgbnVsbCBRV2ViUGx1Z2luLgorKi8KK1FXZWJQbHVnaW46OlFXZWJQbHVnaW4oKQor
ICAgIDogZChuZXcgUVdlYlBsdWdpblByaXZhdGUoMCkpCit7Cit9CisKK1FXZWJQbHVnaW46OlFX
ZWJQbHVnaW4oUGx1Z2luUGFja2FnZSogcGx1Z2luKQorICAgIDogZChuZXcgUVdlYlBsdWdpblBy
aXZhdGUocGx1Z2luKSkKK3sKK30KKworLyohCisgICAgQ29udHJ1Y3RzIGEgY29weSBvZiBcYSBv
dGhlci4KKyovCitRV2ViUGx1Z2luOjpRV2ViUGx1Z2luKGNvbnN0IFFXZWJQbHVnaW4mIG90aGVy
KQorICAgIDogZChuZXcgUVdlYlBsdWdpblByaXZhdGUob3RoZXIuZC0+cGx1Z2luKSkKK3sKK30K
KworUVdlYlBsdWdpbjo6flFXZWJQbHVnaW4oKQoreworICAgIGRlbGV0ZSBkOworfQorCisvKiEK
KyAgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwbHVnaW4uCisKKyAgICBcc2EgZGVzY3JpcHRp
b24oKQorKi8KK1FTdHJpbmcgUVdlYlBsdWdpbjo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFk
LT5wbHVnaW4pCisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgcmV0dXJuIGQtPnBsdWdp
bi0+bmFtZSgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUg
cGx1Z2luLgorCisgICAgXHNhIG5hbWUoKQorKi8KK1FTdHJpbmcgUVdlYlBsdWdpbjo6ZGVzY3Jp
cHRpb24oKSBjb25zdAoreworICAgIGlmICghZC0+cGx1Z2luKQorICAgICAgICByZXR1cm4gUVN0
cmluZygpOworICAgIHJldHVybiBkLT5wbHVnaW4tPmRlc2NyaXB0aW9uKCk7Cit9CisKKy8qIQor
ICAgIFJldHVybnMgYSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHRo
ZSBwbHVnaW4uCisKKyAgICBcc2Egc3VwcG9ydHNNaW1lVHlwZSgpCisqLworUUxpc3Q8UVdlYlBs
dWdpbjo6TWltZVR5cGU+IFFXZWJQbHVnaW46Om1pbWVUeXBlcygpIGNvbnN0Cit7CisgICAgaWYg
KCFkLT5wbHVnaW4pCisgICAgICAgIHJldHVybiBRTGlzdDxNaW1lVHlwZT4oKTsKKworICAgIFFM
aXN0PE1pbWVUeXBlPiBtaW1lVHlwZXM7CisgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFw
JiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBkLT5wbHVnaW4tPm1pbWVUb0Rlc2NyaXB0aW9ucygpOwor
ICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVz
Y3JpcHRpb25zLmVuZCgpOworICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgTWltZVR5cGUgbWltZVR5cGU7CisgICAgICAgIG1pbWVUeXBlLm5hbWUgPSBp
dC0+Zmlyc3Q7CisgICAgICAgIG1pbWVUeXBlLmRlc2NyaXB0aW9uID0gaXQtPnNlY29uZDsKKwor
ICAgICAgICBRU3RyaW5nTGlzdCBmaWxlRXh0ZW5zaW9uczsKKyAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gZXh0ZW5zaW9ucyA9IGQtPnBsdWdpbi0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lVHlw
ZS5uYW1lKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIGZpbGVFeHRlbnNpb25zLmFwcGVuZChleHRlbnNpb25z
W2ldKTsKKworICAgICAgICBtaW1lVHlwZS5maWxlRXh0ZW5zaW9ucyA9IGZpbGVFeHRlbnNpb25z
OworICAgICAgICBtaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbWltZVR5cGVzOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIHBsdWdpbiBz
dXBwb3J0cyBhIHNwZWNpZmljIFxhIG1pbWVUeXBlLCBmYWxzZSBvdGhlcndpc2UuCisKKyAgICBc
c2EgbWltZVR5cGVzKCkKKyovCitib29sIFFXZWJQbHVnaW46OnN1cHBvcnRzTWltZVR5cGUoY29u
c3QgUVN0cmluZyYgbWltZVR5cGUpIGNvbnN0Cit7CisgICAgUUxpc3Q8TWltZVR5cGU+IHR5cGVz
ID0gbWltZVR5cGVzKCk7CisgICAgZm9yZWFjaCAoY29uc3QgTWltZVR5cGUmIHR5cGUsIHR5cGVz
KSB7CisgICAgICAgIGlmICh0eXBlLm5hbWUgPT0gbWltZVR5cGUpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIQorICAgIFJldHVy
bnMgYW4gYWJzb2x1dGUgcGF0aCB0byB0aGUgcGx1Z2luIGZpbGUuCisqLworUVN0cmluZyBRV2Vi
UGx1Z2luOjpwYXRoKCkgY29uc3QKK3sKKyAgICBpZiAoIWQtPnBsdWdpbikKKyAgICAgICAgcmV0
dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gZC0+cGx1Z2luLT5wYXRoKCk7Cit9CisKKy8qIQor
ICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGx1Z2luIGlzIGEgbnVsbCBwbHVnaW4sIGZhbHNlIG90
aGVyd2lzZS4KKyovCitib29sIFFXZWJQbHVnaW46OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFkLT5wbHVnaW47Cit9CisKKy8qIQorICAgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHBs
dWdpbi4KKworICAgIERpc2FibGVkIHBsdWdpbnMgd2lsbCBub3QgYmUgcGlja2VkIHVwIGJ5IFdl
YktpdCB3aGVuIGxvb2tpbmcgZm9yIGEgcGx1Z2luIHN1cHBvcnRpbmcKKyAgICBhIHBhcnRpY3Vs
YXIgTUlNRSB0eXBlLgorCisgICAgXHNhIGlzRW5hYmxlZCgpCisqLwordm9pZCBRV2ViUGx1Z2lu
OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoIWQtPnBsdWdpbikKKyAgICAg
ICAgcmV0dXJuOworICAgIGQtPnBsdWdpbi0+c2V0RW5hYmxlZChlbmFibGVkKTsKK30KKworLyoh
CisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3
aXNlLgorCisgICAgXHNhIHNldEVuYWJsZWQoKQorKi8KK2Jvb2wgUVdlYlBsdWdpbjo6aXNFbmFi
bGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIWQtPnBsdWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBkLT5wbHVnaW4tPmlzRW5hYmxlZCgpOworfQorCitib29sIFFXZWJQbHVn
aW46Om9wZXJhdG9yPT0oY29uc3QgUVdlYlBsdWdpbiYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGQtPnBsdWdpbiA9PSBvdGhlci5kLT5wbHVnaW47Cit9CisKK2Jvb2wgUVdlYlBsdWdpbjo6
b3BlcmF0b3IhPShjb25zdCBRV2ViUGx1Z2luJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
ZC0+cGx1Z2luICE9IG90aGVyLmQtPnBsdWdpbjsKK30KKworUVdlYlBsdWdpbiBRV2ViUGx1Z2lu
OjpvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdpbiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgPT0g
Jm90aGVyKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBkLT5wbHVnaW4gPSBvdGhlci5k
LT5wbHVnaW47CisgICAgcmV0dXJuICp0aGlzOworfQorCisvKiEKKyAgICBcY2xhc3MgUVdlYlBs
dWdpbkRhdGFiYXNlCisgICAgXHNpbmNlIDQuNgorICAgIFxicmllZiBUaGUgUVdlYlBsdWdpbkRh
dGFiYXNlIGNsYXNzIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgbWFuYWdpbmcKKyAgICBOZXRz
Y2FwZSBwbHVnaW5zIHVzZWQgYnkgV2ViS2l0IGluIFFXZWJQYWdlcy4KKworICAgIFRoZSBRV2Vi
UGx1Z2luRGF0YWJhc2UgY2xhc3MgaXMgYSBkYXRhYmFzZSBvZiBOZXRzY2FwZSBwbHVnaW5zIHRo
YXQgYXJlIHVzZWQKKyAgICBieSBXZWJLaXQuIFRoZSBwbHVnaW5zIGFyZSBwaWNrZWQgdXAgYnkg
V2ViS2l0IGJ5IGxvb2tpbmcgdXAgYSBzZXQgb2Ygc2VhcmNoIHBhdGhzLgorICAgIFRoZSBkZWZh
dWx0IHNldCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgZGVmYXVsdFNlYXJjaFBhdGhzKCkuIFRoZSBz
ZWFyY2ggcGF0aHMKKyAgICBjYW4gYmUgY2hhbmdlZCwgc2VlIHNlYXJjaFBhdGhzKCkgYW5kIHNl
dFNlYXJjaFBhdGhzKCkuIEFkZGl0aW9uYWwgc2VhcmNoIHBhdGhzCisgICAgY2FuIGFsc28gYmUg
YWRkZWQgdXNpbmcgYWRkU2VhcmNoUGF0aCgpLgorCisgICAgVGhlIHBsdWdpbnMgdGhhdCBoYXZl
IGJlZW4gZGV0ZWN0ZWQgYXJlIGV4cG9zZWQgYnkgdGhlIHBsdWdpbnMoKSBtZXRob2QuCisgICAg
VGhlIGxpc3QgY29udGFpbnMgUVdlYlBsdWdpbiBvYmplY3RzIHRoYXQgaG9sZCBib3RoIHRoZSBt
ZXRhZGF0YSBhbmQgdGhlIE1JTUUKKyAgICB0eXBlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgcGFy
dGljdWxhciBwbHVnaW5zLgorCisgICAgV2ViS2l0IHNwZWNpZmllcyBhIHBsdWdpbiBmb3IgYSBN
SU1FIHR5cGUgYnkgbG9va2luZyBmb3IgdGhlIGZpcnN0IHBsdWdpbiB0aGF0CisgICAgc3VwcG9y
dHMgdGhlIHNwZWNpZmljIE1JTUUgdHlwZS4gVG8gZ2V0IGEgcGx1Z2luLCB0aGF0IGlzIHVzZWQg
YnkgV2ViS2l0IHRvCisgICAgaGFuZGxlIGEgc3BlY2lmaWMgTUlNRSB0eXBlLCB5b3UgY2FuIHVz
ZSB0aGUgcGx1Z2luRm9yTWltZVR5cGUoKSBmdW5jdGlvbi4KKworICAgIFRvIGNoYW5nZSB0aGUg
d2F5IG9mIHJlc29sdmluZyBNSU1FIHR5cGVzIGFtYmlndWl0eSwgeW91IGNhbiBleHBsaWNpdGx5
IHNldAorICAgIGEgcHJlZmVycmVkIHBsdWdpbiBmb3IgYSBzcGVjaWZpYyBNSU1FIHR5cGUsIHVz
aW5nIHNldFByZWZlcnJlZFBsdWdpbkZvck1pbWVUeXBlKCkuCisKKyAgICBcc2EgUVdlYlBsdWdp
biwgUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpCisqLworCitRV2ViUGx1Z2luRGF0YWJh
c2U6OlFXZWJQbHVnaW5EYXRhYmFzZShRT2JqZWN0KiBwYXJlbnQpCisgICAgOiBRT2JqZWN0KHBh
cmVudCkKKyAgICAsIGQobmV3IFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUoUGx1Z2luRGF0YWJh
c2U6Omluc3RhbGxlZFBsdWdpbnMoKSkpCit7Cit9CisKK1FXZWJQbHVnaW5EYXRhYmFzZTo6flFX
ZWJQbHVnaW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlIGQ7Cit9CisKKy8qIQorICAgIFJldHVy
bnMgYSBsaXN0IG9mIHBsdWdpbnMgaW5zdGFsbGVkIGluIHRoZSBzZWFyY2ggcGF0aHMuCisgICAg
VGhlIGxpc3QgaW5jbHVkZXMgZGlzYWJsZWQgcGx1Z2lucywgZXZlbiB0aG91Z2ggdGhleSBhcmUg
bm90IHVzZWQuCisKKyAgICBcc2EgcGx1Z2luRm9yTWltZVR5cGUoKQorKi8KK1FMaXN0PFFXZWJQ
bHVnaW4+IFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2lucygpIGNvbnN0Cit7CisgICAgUUxpc3Q8
UVdlYlBsdWdpbj4gcXdlYnBsdWdpbnM7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2Uq
PiYgcGx1Z2lucyA9IGQtPmRhdGFiYXNlLT5wbHVnaW5zKCk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUGx1Z2luUGFj
a2FnZSogcGx1Z2luID0gcGx1Z2luc1tpXTsKKyAgICAgICAgcXdlYnBsdWdpbnMuYXBwZW5kKFFX
ZWJQbHVnaW4ocGx1Z2luKSk7CisgICAgfQorCisgICAgcmV0dXJuIHF3ZWJwbHVnaW5zOworfQor
CisvKiEKKyAgICBSZXR1cm5zIGEgZGVmYXVsdCBzZXQgb2Ygc2VhcmNoIHBhdGhzLgorCisgICAg
XHNhIHNlYXJjaFBhdGhzKCksIHNldFNlYXJjaFBhdGhzKCkKKyovCitRU3RyaW5nTGlzdCBRV2Vi
UGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocygpCit7CisgICAgUVN0cmluZ0xpc3Qg
cGF0aHM7CisKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMgPSBQbHVnaW5E
YXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBkaXJlY3Rvcmllcy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0aHMuYXBw
ZW5kKGRpcmVjdG9yaWVzW2ldKTsKKworICAgIHJldHVybiBwYXRoczsKK30KKworLyohCisgICAg
UmV0dXJucyBhIGxpc3Qgb2Ygc2VhcmNoIHBhdGhzIHRoYXQgYXJlIHVzZWQgYnkgV2ViS2l0IHRv
IGxvb2sgZm9yIHBsdWdpbnMuCisKKyAgICBcc2EgZGVmYXVsdFNlYXJjaFBhdGhzKCksIHNldFNl
YXJjaFBhdGhzKCkKKyovCitRU3RyaW5nTGlzdCBRV2ViUGx1Z2luRGF0YWJhc2U6OnNlYXJjaFBh
dGhzKCkgY29uc3QKK3sKKyAgICBRU3RyaW5nTGlzdCBwYXRoczsKKworICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcyA9IGQtPmRhdGFiYXNlLT5wbHVnaW5EaXJlY3Rvcmllcygp
OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGlyZWN0b3JpZXMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIHBhdGhzLmFwcGVuZChkaXJlY3Rvcmllc1tpXSk7CisKKyAgICByZXR1cm4g
cGF0aHM7Cit9CisKKy8qIQorICAgIENoYW5nZXMgdGhlIHNlYXJjaCBwYXRocyB0byBcYSBwYXRo
cy4KKyAgICBUaGUgZGF0YWJhc2UgaXMgYXV0b21hdGljYWxseSByZWZyZXNoZWQuCisKKyAgICBc
c2Egc2VhcmNoUGF0aHMoKSwgZGVmYXVsdFNlYXJjaFBhdGhzKCkKKyovCit2b2lkIFFXZWJQbHVn
aW5EYXRhYmFzZTo6c2V0U2VhcmNoUGF0aHMoY29uc3QgUVN0cmluZ0xpc3QmIHBhdGhzKQorewor
ICAgIFZlY3RvcjxTdHJpbmc+IGRpcmVjdG9yaWVzOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwYXRocy5jb3VudCgpOyArK2kpCisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVu
ZChwYXRocy5hdChpKSk7CisKKyAgICBkLT5kYXRhYmFzZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMo
ZGlyZWN0b3JpZXMpOworICAgIC8vIFBsdWdpbkRhdGFiYXNlOjpzZXRQbHVnaW5EaXJlY3Rvcmll
cygpIGRvZXMgbm90IHJlZnJlc2ggdGhlIGRhdGFiYXNlLgorICAgIGQtPmRhdGFiYXNlLT5yZWZy
ZXNoKCk7Cit9CisKKy8qIQorICAgIEFkZHMgYW4gYWRkaXRpb25hbCBcYSBwYXRoIHRvIHRoZSBj
dXJyZW50IHNldC4KKyAgICBUaGUgZGF0YWJhc2UgaXMgYXV0b21hdGljYWxseSByZWZyZXNoZWQu
CisKKyAgICBcc2Egc2VhcmNoUGF0aHMoKSwgc2V0U2VhcmNoUGF0aHMoKQorKi8KK3ZvaWQgUVdl
YlBsdWdpbkRhdGFiYXNlOjphZGRTZWFyY2hQYXRoKGNvbnN0IFFTdHJpbmcmIHBhdGgpCit7Cisg
ICAgZC0+ZGF0YWJhc2UtPmFkZEV4dHJhUGx1Z2luRGlyZWN0b3J5KHBhdGgpOworICAgIC8vIFBs
dWdpbkRhdGFiYXNlOjphZGRFeHRyYVBsdWdpbkRpcmVjdG9yeSgpIGRvZXMgcmVmcmVzaCB0aGUg
ZGF0YWJhc2UuCit9CisKKy8qIQorICAgIFJlZnJlc2hlcyB0aGUgcGx1Z2luIGRhdGFiYXNlLCBh
ZGRzIG5ldyBwbHVnaW5zIHRoYXQgaGF2ZSBiZWVuIGZvdW5kIGFuZCByZW1vdmVzCisgICAgdGhl
IG9uZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSBpbiB0aGUgc2VhcmNoIHBhdGhzLgor
CisgICAgWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiB0aGUgc2V0IG9mIHBsdWdpbnMg
aW5zdGFsbGVkIGluIHRoZSBzZWFyY2ggcGF0aHMKKyAgICBjaGFuZ2VzLiBZb3UgZG8gbm90IG5l
ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gY2hhbmdpbmcgc2VhcmNoIHBhdGhzLAorICAg
IGluIHRoYXQgY2FzZSBXZWJLaXQgYXV0b21hdGljYWxseSByZWZyZXNoZXMgdGhlIGRhdGFiYXNl
LgorKi8KK3ZvaWQgUVdlYlBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKK3sKKyAgICBkLT5kYXRh
YmFzZS0+cmVmcmVzaCgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBwbHVnaW4gdGhhdCBp
cyBjdXJyZW50bHkgdXNlZCBieSBXZWJLaXQgZm9yIGEgZ2l2ZW4gXGEgbWltZVR5cGUuCisKKyAg
ICBcc2Egc2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUoKQorKi8KK1FXZWJQbHVnaW4gUVdl
YlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlw
ZSkKK3sKKyAgICByZXR1cm4gUVdlYlBsdWdpbihkLT5kYXRhYmFzZS0+cGx1Z2luRm9yTUlNRVR5
cGUobWltZVR5cGUpKTsKK30KKworLyohCisgICAgQ2hhbmdlcyB0aGUgcHJlZmVycmVkIHBsdWdp
biBmb3IgYSBnaXZlbiBcYSBtaW1lVHlwZSB0byBcYSBwbHVnaW4uIFRoZSBcYSBwbHVnaW4KKyAg
ICBoYXMgdG8gc3VwcG9ydCB0aGUgZ2l2ZW4gXGEgbWltZVR5cGUsIG90aGVyd2lzZSB0aGUgc2V0
dGluZyB3aWxsIGhhdmUgbm8gZWZmZWN0LgorCisgICAgQ2FsbGluZyB0aGUgZnVuY3Rpb24gd2l0
aCBhIG51bGwgXGEgcGx1Z2luIHJlc2V0cyB0aGUgc2V0dGluZy4KKworICAgIFxzYSBwbHVnaW5G
b3JNaW1lVHlwZSgpCisqLwordm9pZCBRV2ViUGx1Z2luRGF0YWJhc2U6OnNldFByZWZlcnJlZFBs
dWdpbkZvck1pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBRV2ViUGx1Z2lu
JiBwbHVnaW4pCit7CisgICAgZC0+ZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVU
eXBlKG1pbWVUeXBlLCBwbHVnaW4uZC0+cGx1Z2luLmdldCgpKTsKK30KZGlmZiAtLWdpdCBhL1dl
YktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVn
aW5kYXRhYmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NGI3ZDUK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oCkBA
IC0wLDAgKzEsMTAwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9y
ZWsgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBRV0VCUExVR0lOREFUQUJBU0VfSAor
I2RlZmluZSBRV0VCUExVR0lOREFUQUJBU0VfSAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5o
IgorCisjaW5jbHVkZSA8UXRDb3JlL3FvYmplY3QuaD4KKyNpbmNsdWRlIDxRdENvcmUvcXN0cmlu
Z2xpc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7
Cit9CisKK2NsYXNzIFFXZWJQbHVnaW5Qcml2YXRlOworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdl
YlBsdWdpbiB7CitwdWJsaWM6CisgICAgUVdlYlBsdWdpbigpOworICAgIFFXZWJQbHVnaW4oY29u
c3QgUVdlYlBsdWdpbiYgb3RoZXIpOworICAgIH5RV2ViUGx1Z2luKCk7CisKK3ByaXZhdGU6Cisg
ICAgUVdlYlBsdWdpbihXZWJDb3JlOjpQbHVnaW5QYWNrYWdlKiBwbHVnaW4pOworCitwdWJsaWM6
CisgICAgY2xhc3MgTWltZVR5cGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgUVN0cmluZyBuYW1l
OworICAgICAgICBRU3RyaW5nIGRlc2NyaXB0aW9uOworICAgICAgICBRU3RyaW5nTGlzdCBmaWxl
RXh0ZW5zaW9uczsKKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWltZVR5cGUmIG90
aGVyKSBjb25zdDsKKyAgICB9OworCisgICAgUVN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgUVN0
cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXMo
KSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3QgUVN0cmluZyYgbWltZVR5
cGUpIGNvbnN0OworICAgIFFTdHJpbmcgcGF0aCgpIGNvbnN0OworCisgICAgYm9vbCBpc051bGwo
KSBjb25zdDsKKworICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIGJvb2wg
aXNFbmFibGVkKCkgY29uc3Q7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUVdlYlBsdWdp
biYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRV2ViUGx1Z2luJiBv
dGhlcikgY29uc3Q7CisgICAgUVdlYlBsdWdpbiBvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdpbiYg
b3RoZXIpOworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJQbHVnaW5EYXRhYmFzZTsKKworcHJpdmF0
ZToKKyAgICBRV2ViUGx1Z2luUHJpdmF0ZSAqZDsKK307CisKK2NsYXNzIFFXZWJQbHVnaW5EYXRh
YmFzZVByaXZhdGU7CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViUGx1Z2luRGF0YWJhc2UgOiBw
dWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKworcHJpdmF0ZToKKyAgICBRV2ViUGx1Z2lu
RGF0YWJhc2UoUU9iamVjdCogcGFyZW50ID0gMCk7CisgICAgflFXZWJQbHVnaW5EYXRhYmFzZSgp
OworCitwdWJsaWM6CisgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1Z2lucygpIGNvbnN0OworCisg
ICAgc3RhdGljIFFTdHJpbmdMaXN0IGRlZmF1bHRTZWFyY2hQYXRocygpOworICAgIFFTdHJpbmdM
aXN0IHNlYXJjaFBhdGhzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTZWFyY2hQYXRocyhjb25zdCBR
U3RyaW5nTGlzdCYgcGF0aHMpOworICAgIHZvaWQgYWRkU2VhcmNoUGF0aChjb25zdCBRU3RyaW5n
JiBwYXRoKTsKKworICAgIHZvaWQgcmVmcmVzaCgpOworCisgICAgUVdlYlBsdWdpbiBwbHVnaW5G
b3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgdm9pZCBzZXRQcmVmZXJy
ZWRQbHVnaW5Gb3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUVdlYlBs
dWdpbiYgcGx1Z2luKTsKKworICAgIGZyaWVuZCBjbGFzcyBRV2ViU2V0dGluZ3M7CisKK3ByaXZh
dGU6CisgICAgUVdlYlBsdWdpbkRhdGFiYXNlUHJpdmF0ZSAqZDsKK307CisKKyNlbmRpZiAvLyBR
V0VCUExVR0lOREFUQUJBU0VfSApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2lu
ZGF0YWJhc2VfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2VfcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYWU2ZDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmgKQEAgLTAsMCArMSw0NiBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSmFrdWIgV2llY3pvcmVrIDxmYXcyMTdAZ21haWwu
Y29tPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpZm5kZWYgUVdFQlBMVUdJTkRBVEFCQVNFX1BfSAorI2RlZmluZSBRV0VCUExV
R0lOREFUQUJBU0VfUF9ICisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBQbHVnaW5Q
YWNrYWdlOworICAgIGNsYXNzIFBsdWdpbkRhdGFiYXNlOworfTsKKworY2xhc3MgUVdlYlBsdWdp
blByaXZhdGUgeworcHVibGljOgorICAgIFFXZWJQbHVnaW5Qcml2YXRlKFJlZlB0cjxXZWJDb3Jl
OjpQbHVnaW5QYWNrYWdlPiBwbHVnaW5QYWNrYWdlKTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpQ
bHVnaW5QYWNrYWdlPiBwbHVnaW47Cit9OworCitjbGFzcyBRV2ViUGx1Z2luRGF0YWJhc2VQcml2
YXRlIHsKK3B1YmxpYzoKKyAgICBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlKFdlYkNvcmU6OlBs
dWdpbkRhdGFiYXNlKiBwbHVnaW5EYXRhYmFzZSk7CisKKyAgICBXZWJDb3JlOjpQbHVnaW5EYXRh
YmFzZSogZGF0YWJhc2U7Cit9OworCisjZW5kaWYgLy8gUVdFQlBMVUdJTkRBVEFCQVNFX1BfSApk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDQ1Zjc3YjkuLjYxZWRmOTAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgInF3ZWJwYWdlLmgiCiAjaW5j
bHVkZSAicXdlYnBhZ2VfcC5oIgorI2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZS5oIgogCiAj
aW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlLmgiCkBAIC01MzksNiArNTQwLDE3IEBAIFFJY29uIFFXZWJTZXR0aW5nczo6aWNvbkZvclVy
bChjb25zdCBRVXJsJiB1cmwpCiB9CiAKIC8qIQorICAgIFJldHVybnMgdGhlIHBsdWdpbiBkYXRh
YmFzZSBvYmplY3QuCisqLworUVdlYlBsdWdpbkRhdGFiYXNlICpRV2ViU2V0dGluZ3M6OnBsdWdp
bkRhdGFiYXNlKCkKK3sKKyAgICBzdGF0aWMgUVdlYlBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9
IDA7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAgICAgZGF0YWJhc2UgPSBuZXcgUVdlYlBsdWdp
bkRhdGFiYXNlKCk7CisgICAgcmV0dXJuIGRhdGFiYXNlOworfQorCisvKiEKICAgICBTZXRzIFxh
IGdyYXBoaWMgdG8gYmUgZHJhd24gd2hlbiBRdFdlYktpdCBuZWVkcyB0byBkcmF3IGFuIGltYWdl
IG9mIHRoZQogICAgIGdpdmVuIFxhIHR5cGUuCiAKQEAgLTYyNiw3ICs2MzgsNyBAQCBpbnQgUVdl
YlNldHRpbmdzOjptYXhpbXVtUGFnZXNJbkNhY2hlKCkKIAogICAgVGhlIFxhIGNhY2hlTWluRGVh
ZENhcGFjaXR5IHNwZWNpZmllcyB0aGUgXGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdAog
ICAgZGVhZCBvYmplY3RzIHNob3VsZCBjb25zdW1lIHdoZW4gdGhlIGNhY2hlIGlzIHVuZGVyIHBy
ZXNzdXJlLgotICAgCisKICAgIFxhIGNhY2hlTWF4RGVhZCBpcyB0aGUgXGUgbWF4aW11bSBudW1i
ZXIgb2YgYnl0ZXMgdGhhdCBkZWFkIG9iamVjdHMgc2hvdWxkCiAgICBjb25zdW1lIHdoZW4gdGhl
IGNhY2hlIGlzIFxib2xkIG5vdCB1bmRlciBwcmVzc3VyZS4KIApAQCAtNjg2LDcgKzY5OCw3IEBA
IHZvaWQgUVdlYlNldHRpbmdzOjpyZXNldEZvbnRGYW1pbHkoRm9udEZhbWlseSB3aGljaCkKIAog
LyohCiAgICAgXGZuIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRBdHRyaWJ1dGUoV2ViQXR0cmlidXRl
IGF0dHJpYnV0ZSwgYm9vbCBvbikKLSAgICAKKwogICAgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhl
IHNwZWNpZmllZCBcYSBhdHRyaWJ1dGUgZmVhdHVyZSBkZXBlbmRpbmcgb24gdGhlCiAgICAgdmFs
dWUgb2YgXGEgb24uCiAqLwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
aCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKaW5kZXggZTBkNDMzYi4uYjdlYTU0YiAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAorKysgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IH0KIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViUGx1Z2luRGF0YWJhc2U7CiBjbGFzcyBR
V2ViU2V0dGluZ3NQcml2YXRlOwogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRVXJsOwpAQCAt
MTAyLDYgKzEwMyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjbGVhckljb25EYXRhYmFz
ZSgpOwogICAgIHN0YXRpYyBRSWNvbiBpY29uRm9yVXJsKGNvbnN0IFFVcmwgJnVybCk7CiAKKyAg
ICBzdGF0aWMgUVdlYlBsdWdpbkRhdGFiYXNlICpwbHVnaW5EYXRhYmFzZSgpOworCiAgICAgc3Rh
dGljIHZvaWQgc2V0V2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUsIGNvbnN0IFFQaXhtYXAgJmdy
YXBoaWMpOwogICAgIHN0YXRpYyBRUGl4bWFwIHdlYkdyYXBoaWMoV2ViR3JhcGhpYyB0eXBlKTsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cK
aW5kZXggMzllY2E3NC4uNWM0MmE1MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZwor
KysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMDktMDgtMDEgIEph
a3ViIFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFFXZWJQbHVnaW5EYXRhYmFzZSBBUEkgdG8g
dGhlIFF0IEFQSS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzY1MQorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgorICAgICAg
ICAqIEFwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJQbHVn
aW5Qcml2YXRlOjpRV2ViUGx1Z2luUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJh
c2VQcml2YXRlOjpRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQbHVn
aW46Ok1pbWVUeXBlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFFXZWJQbHVnaW46OlFXZWJQbHVn
aW4pOgorICAgICAgICAoUVdlYlBsdWdpbjo6flFXZWJQbHVnaW4pOgorICAgICAgICAoUVdlYlBs
dWdpbjo6bmFtZSk6CisgICAgICAgIChRV2ViUGx1Z2luOjpkZXNjcmlwdGlvbik6CisgICAgICAg
IChRV2ViUGx1Z2luOjptaW1lVHlwZXMpOgorICAgICAgICAoUVdlYlBsdWdpbjo6c3VwcG9ydHNN
aW1lVHlwZSk6CisgICAgICAgIChRV2ViUGx1Z2luOjpwYXRoKToKKyAgICAgICAgKFFXZWJQbHVn
aW46OmlzTnVsbCk6CisgICAgICAgIChRV2ViUGx1Z2luOjpzZXRFbmFibGVkKToKKyAgICAgICAg
KFFXZWJQbHVnaW46OmlzRW5hYmxlZCk6CisgICAgICAgIChRV2ViUGx1Z2luOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFFXZWJQbHVnaW46Om9wZXJhdG9yIT0pOgorICAgICAgICAoUVdlYlBsdWdp
bjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6UVdlYlBsdWdpbkRh
dGFiYXNlKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6flFXZWJQbHVnaW5EYXRhYmFz
ZSk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdpbnMpOgorICAgICAgICAoUVdl
YlBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0U2VhcmNoUGF0aHMpOgorICAgICAgICAoUVdlYlBsdWdp
bkRhdGFiYXNlOjpzZWFyY2hQYXRocyk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OnNl
dFNlYXJjaFBhdGhzKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6YWRkU2VhcmNoUGF0
aCk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAoUVdl
YlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNaW1lVHlwZSk6CisgICAgICAgIChRV2ViUGx1Z2lu
RGF0YWJhc2U6OnNldFByZWZlcnJlZFBsdWdpbkZvck1pbWVUeXBlKToKKyAgICAgICAgKiBBcGkv
cXdlYnBsdWdpbmRhdGFiYXNlLmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0
YWJhc2VfcC5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAg
ICAgKFFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UpOgorICAgICAgICAqIEFwaS9xd2Vic2V0
dGluZ3MuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvcXdlYnBsdWdpbmRh
dGFiYXNlLnBybzogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3Rz
dF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRzdF9RV2ViUGx1Z2lu
RGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRh
YmFzZTo6c2VhcmNoUGF0aHMpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6bnVs
bF9kYXRhKToKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Om51bGwpOgorICAgICAg
ICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAo
dHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6ZW5hYmxlZCk6CisgICAgICAgICh0c3RfUVdlYlBsdWdp
bkRhdGFiYXNlOjpvcGVyYXRvcmVxdWFsX2RhdGEpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5E
YXRhYmFzZTo6b3BlcmF0b3JlcXVhbCk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNl
OjpwcmVmZXJyZWRQbHVnaW4pOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBybzoKKwogMjAwOS0w
Ny0zMSAgSmFrb2IgUGV0c292aXRzICA8amFrb2IucGV0c292aXRzQHRvcmNobW9iaWxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2VicGx1Z2luZGF0YWJhc2UucHJvIGIvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2VicGx1Z2luZGF0YWJhc2UucHJvCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMTA5OTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3F3ZWJwbHVnaW5kYXRhYmFzZS5w
cm8KQEAgLTAsMCArMSw2IEBACitURU1QTEFURSA9IGFwcAorVEFSR0VUID0gdHN0X3F3ZWJwbHVn
aW5kYXRhYmFzZQoraW5jbHVkZSguLi8uLi8uLi8uLi9XZWJLaXQucHJpKQorU09VUkNFUyAgKz0g
dHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKK1FUICs9IHRlc3RsaWIgbmV0d29yaworUU1BS0Vf
UlBBVEhESVIgPSAkJE9VVFBVVF9ESVIvbGliICQkUU1BS0VfUlBBVEhESVIKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFz
ZS5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3RzdF9xd2VicGx1Z2lu
ZGF0YWJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNGNjOTMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3Rz
dF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCkBAIC0wLDAgKzEsNDAxIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisKKyNpbmNsdWRlIDxxZGlyLmg+CisjaW5jbHVkZSA8cXdl
YmZyYW1lLmg+CisjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KKyNpbmNsdWRlIDxxd2VicGx1Z2luZGF0
YWJhc2UuaD4KKyNpbmNsdWRlIDxxd2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxxdmFyaWFudC5o
PgorCitjbGFzcyB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlIDogcHVibGljIFFPYmplY3QKK3sKKyAg
ICBRX09CSkVDVAorCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgaW5zdGFsbGVkUGx1Z2lucygp
OworICAgIHZvaWQgc2VhcmNoUGF0aHMoKTsKKyAgICB2b2lkIG51bGxfZGF0YSgpOworICAgIHZv
aWQgbnVsbCgpOworICAgIHZvaWQgcGx1Z2luRm9yTWltZVR5cGUoKTsKKyAgICB2b2lkIGVuYWJs
ZWQoKTsKKyAgICB2b2lkIG9wZXJhdG9yZXF1YWxfZGF0YSgpOworICAgIHZvaWQgb3BlcmF0b3Jl
cXVhbCgpOworICAgIHZvaWQgcHJlZmVycmVkUGx1Z2luKCk7Cit9OworCit0eXBlZGVmIFFXZWJQ
bHVnaW46Ok1pbWVUeXBlIE1pbWVUeXBlOworCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6
Omluc3RhbGxlZFBsdWdpbnMoKQoreworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgcGFnZS5zZXR0
aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCwgdHJ1ZSk7
CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisKKyAgICBRVmFyaWFu
dE1hcCBqc1BsdWdpbnNNYXAgPSBmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ3aW5kb3cubmF2
aWdhdG9yLnBsdWdpbnMiKS50b01hcCgpOworICAgIFFMaXN0PFFXZWJQbHVnaW4+IHBsdWdpbnMg
PSBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCktPnBsdWdpbnMoKTsKKyAgICBRQ09NUEFS
RShwbHVnaW5zLCBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCktPnBsdWdpbnMoKSk7CisK
KyAgICBpbnQgbGVuZ3RoID0ganNQbHVnaW5zTWFwWyJsZW5ndGgiXS50b0ludCgpOworICAgIFFD
T01QQVJFKGxlbmd0aCwgcGx1Z2lucy5jb3VudCgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW4gPSBwbHVnaW5zLmF0
KGkpOworCisgICAgICAgIFFWYXJpYW50TWFwIGpzUGx1Z2luID0gZnJhbWUtPmV2YWx1YXRlSmF2
YVNjcmlwdChRU3RyaW5nKCJ3aW5kb3cubmF2aWdhdG9yLnBsdWdpbnNbJTFdIikuYXJnKGkpKS50
b01hcCgpOworICAgICAgICBRU3RyaW5nIG5hbWUgPSBqc1BsdWdpblsibmFtZSJdLnRvU3RyaW5n
KCk7CisgICAgICAgIFFTdHJpbmcgZGVzY3JpcHRpb24gPSBqc1BsdWdpblsiZGVzY3JpcHRpb24i
XS50b1N0cmluZygpOworICAgICAgICBRU3RyaW5nIGZpbGVOYW1lID0ganNQbHVnaW5bImZpbGVu
YW1lIl0udG9TdHJpbmcoKTsKKworICAgICAgICBRQ09NUEFSRShwbHVnaW4ubmFtZSgpLCBuYW1l
KTsKKyAgICAgICAgUUNPTVBBUkUocGx1Z2luLmRlc2NyaXB0aW9uKCksIGRlc2NyaXB0aW9uKTsK
KyAgICAgICAgUUNPTVBBUkUoUUZpbGVJbmZvKHBsdWdpbi5wYXRoKCkpLmZpbGVOYW1lKCksIGZp
bGVOYW1lKTsKKworICAgICAgICBRTGlzdDxNaW1lVHlwZT4gbWltZVR5cGVzOworICAgICAgICBp
bnQgbWltZVR5cGVzQ291bnQgPSBqc1BsdWdpblsibGVuZ3RoIl0udG9JbnQoKTsKKworICAgICAg
ICBmb3IgKGludCBqID0gMDsgaiA8IG1pbWVUeXBlc0NvdW50OyArK2opIHsKKyAgICAgICAgICAg
IFFWYXJpYW50TWFwIGpzTWltZVR5cGUgPSBmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0KFFTdHJp
bmcoIndpbmRvdy5uYXZpZ2F0b3IucGx1Z2luc1slMV1bJTJdIikuYXJnKGkpLmFyZyhqKSkudG9N
YXAoKTsKKworICAgICAgICAgICAgTWltZVR5cGUgbWltZVR5cGU7CisgICAgICAgICAgICBtaW1l
VHlwZS5uYW1lID0ganNNaW1lVHlwZVsidHlwZSJdLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBt
aW1lVHlwZS5kZXNjcmlwdGlvbiA9IGpzTWltZVR5cGVbImRlc2NyaXB0aW9uIl0udG9TdHJpbmco
KTsKKyAgICAgICAgICAgIG1pbWVUeXBlLmZpbGVFeHRlbnNpb25zID0ganNNaW1lVHlwZVsic3Vm
Zml4ZXMiXS50b1N0cmluZygpLnNwbGl0KCcsJywgUVN0cmluZzo6U2tpcEVtcHR5UGFydHMpOwor
CisgICAgICAgICAgICBtaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKyAgICAgICAgICAgIFFW
RVJJRlkocGx1Z2luLnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUubmFtZSkpOworICAgICAgICB9
CisKKyAgICAgICAgUUNPTVBBUkUocGx1Z2luLm1pbWVUeXBlcygpLCBtaW1lVHlwZXMpOworCisg
ICAgICAgIFFWRVJJRlkoIXBsdWdpbi5pc051bGwoKSk7CisgICAgICAgIFFWRVJJRlkocGx1Z2lu
LmlzRW5hYmxlZCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgdHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6
c2VhcmNoUGF0aHMoKQoreworICAgIFFXZWJQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBRV2Vi
U2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCk7CisgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1Z2lu
cyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisgICAgUVN0cmluZ0xpc3QgZGlyZWN0b3JpZXMgPSBk
YXRhYmFzZS0+c2VhcmNoUGF0aHMoKTsKKyAgICBRQ09NUEFSRShRV2ViUGx1Z2luRGF0YWJhc2U6
OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisKKyAgICBkYXRhYmFzZS0+c2V0
U2VhcmNoUGF0aHMoZGlyZWN0b3JpZXMpOworICAgIFFDT01QQVJFKFFXZWJQbHVnaW5EYXRhYmFz
ZTo6ZGVmYXVsdFNlYXJjaFBhdGhzKCksIGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShkYXRh
YmFzZS0+c2VhcmNoUGF0aHMoKSwgZGlyZWN0b3JpZXMpOworICAgIFFDT01QQVJFKGRhdGFiYXNl
LT5wbHVnaW5zKCksIHBsdWdpbnMpOworICAgIGRhdGFiYXNlLT5yZWZyZXNoKCk7CisgICAgUUNP
TVBBUkUoZGF0YWJhc2UtPnBsdWdpbnMoKSwgcGx1Z2lucyk7CisKKyAgICBkYXRhYmFzZS0+c2V0
U2VhcmNoUGF0aHMoUVN0cmluZ0xpc3QoKSk7CisgICAgUUNPTVBBUkUoUVdlYlBsdWdpbkRhdGFi
YXNlOjpkZWZhdWx0U2VhcmNoUGF0aHMoKSwgZGlyZWN0b3JpZXMpOworICAgIFFDT01QQVJFKGRh
dGFiYXNlLT5zZWFyY2hQYXRocygpLCBRU3RyaW5nTGlzdCgpKTsKKyAgICBRQ09NUEFSRShkYXRh
YmFzZS0+cGx1Z2lucygpLmNvdW50KCksIDApOworCisgICAgZGF0YWJhc2UtPnNldFNlYXJjaFBh
dGhzKGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShkYXRhYmFzZS0+c2VhcmNoUGF0aHMoKSwg
ZGlyZWN0b3JpZXMpOworICAgIGRhdGFiYXNlLT5hZGRTZWFyY2hQYXRoKFFEaXI6OnRlbXBQYXRo
KCkpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5zZWFyY2hQYXRocygpLmNvdW50KCksIGRpcmVj
dG9yaWVzLmNvdW50KCkgKyAxKTsKKyAgICBRVkVSSUZZKGRhdGFiYXNlLT5zZWFyY2hQYXRocygp
LmNvbnRhaW5zKFFEaXI6OnRlbXBQYXRoKCkpKTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmQoUURp
cjo6dGVtcFBhdGgoKSk7CisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCksIGRp
cmVjdG9yaWVzKTsKKworICAgIC8vIEFzIGFuIGVtcHR5IHNldCBvZiBzZWFyY2ggcGF0aHMgaGFz
IGJlZW4gc2V0LCB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gcmVidWlsdAorICAgIC8vIGZyb20gc2Ny
YXRjaCBhZnRlciBicmluZ2luZyB0aGUgb2xkIHBhdGggc2V0IGJhY2suCisgICAgLy8gQmVjYXVz
ZSB0aGUgUVdlYlBsdWdpbnMgbm8gbG9uZ2VyIHBvaW50IHRvIHRoZSBzYW1lIFBsdWdpblBhY2th
Z2VzLAorICAgIC8vIHRoZSBsaXN0IGlzIGFsc28gbm8gbG9uZ2VyIGVxdWFsIHRvIHRoZSBvbGRl
ciBvbmUsIGV2ZW4gdGhvdWdoIGl0IGNvbnRhaW5zCisgICAgLy8gdGhlIHNhbWUgaW5mb3JtYXRp
b24uCisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbnMoKS5jb3VudCgpLCBwbHVnaW5zLmNv
dW50KCkpOworICAgIHBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworICAgIFFDT01QQVJF
KGRhdGFiYXNlLT5wbHVnaW5zKCksIHBsdWdpbnMpOworCisgICAgZm9yIChpbnQgaSA9IChkaXJl
Y3Rvcmllcy5jb3VudCgpIC0gMSk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIFFEaXIgZGlyZWN0
b3J5KGRpcmVjdG9yaWVzLmF0KGkpKTsKKyAgICAgICAgaWYgKCFkaXJlY3RvcnkuZXhpc3RzKCkg
fHwgIWRpcmVjdG9yeS5jb3VudCgpKQorICAgICAgICAgICAgZGlyZWN0b3JpZXMucmVtb3ZlQXQo
aSk7CisgICAgfQorCisgICAgZGF0YWJhc2UtPnNldFNlYXJjaFBhdGhzKGRpcmVjdG9yaWVzKTsK
KyAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2lucygpLCBwbHVnaW5zKTsKKyAgICBkYXRhYmFz
ZS0+cmVmcmVzaCgpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5zKCksIHBsdWdpbnMp
OworCisgICAgZGF0YWJhc2UtPnNldFNlYXJjaFBhdGhzKFFXZWJQbHVnaW5EYXRhYmFzZTo6ZGVm
YXVsdFNlYXJjaFBhdGhzKCkpOworICAgIGRpcmVjdG9yaWVzID0gUVdlYlBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0U2VhcmNoUGF0aHMoKTsKKyAgICBRQ09NUEFSRShRV2ViUGx1Z2luRGF0YWJhc2U6
OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisgICAgUUNPTVBBUkUoZGF0YWJh
c2UtPnNlYXJjaFBhdGhzKCksIGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShkYXRhYmFzZS0+
cGx1Z2lucygpLCBwbHVnaW5zKTsKK30KKworUV9ERUNMQVJFX01FVEFUWVBFKFFXZWJQbHVnaW4p
Cit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Om51bGxfZGF0YSgpCit7CisgICAgUVRlc3Q6
OmFkZENvbHVtbjxRV2ViUGx1Z2luPigicGx1Z2luIik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxi
b29sPigibnVsbCIpOworCisgICAgUVRlc3Q6Om5ld1JvdygibnVsbCIpIDw8IFFXZWJQbHVnaW4o
KSA8PCB0cnVlOworICAgIFFUZXN0OjpuZXdSb3coImZvbyIpIDw8IFFXZWJTZXR0aW5nczo6cGx1
Z2luRGF0YWJhc2UoKS0+cGx1Z2luRm9yTWltZVR5cGUoImZvb2JhcmJheiIpIDw8IHRydWU7CisK
KyAgICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5zID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRh
YmFzZSgpLT5wbHVnaW5zKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50
KCk7ICsraSkKKyAgICAgICAgUVRlc3Q6Om5ld1JvdyhRU3RyaW5nOjpudW1iZXIoaSkudG9VdGY4
KCkuY29uc3REYXRhKCkpIDw8IHBsdWdpbnMuYXQoaSkgPDwgZmFsc2U7Cit9CisKK3ZvaWQgdHN0
X1FXZWJQbHVnaW5EYXRhYmFzZTo6bnVsbCgpCit7CisgICAgUUZFVENIKFFXZWJQbHVnaW4sIHBs
dWdpbik7CisgICAgUUZFVENIKGJvb2wsIG51bGwpOworCisgICAgUUNPTVBBUkUocGx1Z2luLmlz
TnVsbCgpLCBudWxsKTsKK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5G
b3JNaW1lVHlwZSgpCit7CisgICAgUU11bHRpTWFwPFFTdHJpbmcsIFFXZWJQbHVnaW4+IHBsdWdp
bnNNYXA7CisgICAgUVdlYlBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9IFFXZWJTZXR0aW5nczo6
cGx1Z2luRGF0YWJhc2UoKTsKKyAgICBRTGlzdDxRV2ViUGx1Z2luPiBwbHVnaW5zID0gZGF0YWJh
c2UtPnBsdWdpbnMoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5jb3VudCgp
OyArK2kpIHsKKyAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW4gPSBwbHVnaW5zLmF0KGkpOworCisg
ICAgICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXMgPSBwbHVnaW4ubWltZVR5cGVzKCk7Cisg
ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWltZVR5cGVzLmNvdW50KCk7ICsraikgeworICAg
ICAgICAgICAgUVN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlcy5hdChqKS5uYW1lOworICAgICAg
ICAgICAgcGx1Z2luc01hcC5pbnNlcnQobWltZVR5cGUsIHBsdWdpbik7CisgICAgICAgICAgICBR
VkVSSUZZKHBsdWdpbi5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlKSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBsdWdpbnMuY291bnQoKTsgKytpKSB7Cisg
ICAgICAgIFFXZWJQbHVnaW4gcGx1Z2luID0gcGx1Z2lucy5hdChpKTsKKworICAgICAgICBRTGlz
dDxNaW1lVHlwZT4gbWltZVR5cGVzID0gcGx1Z2luLm1pbWVUeXBlcygpOworICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG1pbWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAgICAgICAgICAgIFFT
dHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZXMuYXQoaikubmFtZTsKKworICAgICAgICAgICAgUVZF
UklGWShwbHVnaW5zTWFwLmNvdW50KG1pbWVUeXBlKSA+IDApOworICAgICAgICAgICAgaWYgKHBs
dWdpbnNNYXAuY291bnQobWltZVR5cGUpID4gMSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW5Gb3JNaW1lVHlwZSA9IGRhdGFiYXNlLT5w
bHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSk7CisgICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5G
b3JNaW1lVHlwZSwgcGx1Z2luKTsKKyAgICAgICAgICAgIGRhdGFiYXNlLT5zZXRTZWFyY2hQYXRo
cyhkYXRhYmFzZS0+c2VhcmNoUGF0aHMoKSk7CisgICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5G
b3JNaW1lVHlwZSwgcGx1Z2luKTsKKyAgICAgICAgICAgIFFDT01QQVJFKHBsdWdpbkZvck1pbWVU
eXBlLCBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUudG9VcHBlcigpKSk7Cisg
ICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5Gb3JNaW1lVHlwZSwgZGF0YWJhc2UtPnBsdWdpbkZv
ck1pbWVUeXBlKG1pbWVUeXBlLnRvTG93ZXIoKSkpOworICAgICAgICAgICAgUVZFUklGWShwbHVn
aW4uc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpOworICAgICAgICAgICAgUVZFUklGWSghcGx1
Z2luRm9yTWltZVR5cGUuaXNOdWxsKCkpOworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2luLmlz
TnVsbCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFi
YXNlOjplbmFibGVkKCkKK3sKKyAgICBRTXVsdGlNYXA8UVN0cmluZywgUVdlYlBsdWdpbj4gcGx1
Z2luc01hcDsKKyAgICBRV2ViUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdz
OjpwbHVnaW5EYXRhYmFzZSgpOworICAgIFFMaXN0PFFXZWJQbHVnaW4+IHBsdWdpbnMgPSBkYXRh
YmFzZS0+cGx1Z2lucygpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50
KCk7ICsraSkgeworICAgICAgICBRV2ViUGx1Z2luIHBsdWdpbiA9IHBsdWdpbnMuYXQoaSk7CisK
KyAgICAgICAgUUxpc3Q8TWltZVR5cGU+IG1pbWVUeXBlcyA9IHBsdWdpbi5taW1lVHlwZXMoKTsK
KyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lVHlwZXMuY291bnQoKTsgKytqKSB7Cisg
ICAgICAgICAgICBRU3RyaW5nIG1pbWVUeXBlID0gbWltZVR5cGVzLmF0KGopLm5hbWU7CisgICAg
ICAgICAgICBwbHVnaW5zTWFwLmluc2VydChtaW1lVHlwZSwgcGx1Z2luKTsKKyAgICAgICAgICAg
IFFWRVJJRlkocGx1Z2luLnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIFFNdWx0aU1hcDxRU3RyaW5nLCBRV2ViUGx1Z2luPjo6aXRlcmF0b3IgaXQg
PSBwbHVnaW5zTWFwLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IHBsdWdpbnNNYXAuZW5kKCkp
IHsKKyAgICAgICAgUVN0cmluZyBtaW1lVHlwZSA9IGl0LmtleSgpOworICAgICAgICBRV2ViUGx1
Z2luIHBsdWdpbiA9IGl0LnZhbHVlKCk7CisgICAgICAgIFFXZWJQbHVnaW4gcGx1Z2luRm9yTWlt
ZVR5cGUgPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpOworCisgICAgICAg
IFFWRVJJRlkocGx1Z2luc01hcC5jb3VudChtaW1lVHlwZSkgPiAwKTsKKworICAgICAgICBpZiAo
cGx1Z2luc01hcC5jb3VudChtaW1lVHlwZSkgPT0gMSkgeworICAgICAgICAgICAgUUNPTVBBUkUo
cGx1Z2luLCBwbHVnaW5Gb3JNaW1lVHlwZSk7CisKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2lu
LmlzRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luRm9yTWltZVR5cGUuaXNF
bmFibGVkKCkpOworICAgICAgICAgICAgcGx1Z2luLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAg
ICAgICAgUVZFUklGWSghcGx1Z2luLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlko
IXBsdWdpbkZvck1pbWVUeXBlLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFFWRVJJRlkocGx1Z2luLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlko
cGx1Z2luRm9yTWltZVR5cGUuaXNFbmFibGVkKCkpOworICAgICAgICAgICAgcGx1Z2luLnNldEVu
YWJsZWQoZmFsc2UpOworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2luLmlzRW5hYmxlZCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIFFWRVJJRlkoIXBsdWdpbi5pc051bGwoKSk7CisgICAgICAg
IFFWRVJJRlkoIXBsdWdpbkZvck1pbWVUeXBlLmlzTnVsbCgpKTsKKworICAgICAgICBRV2ViUGx1
Z2luIHBsdWdpbkZvck1pbWVUeXBlMiA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1l
VHlwZSk7CisgICAgICAgIGlmIChwbHVnaW5zTWFwLmNvdW50KG1pbWVUeXBlKSA9PSAxKSB7Cisg
ICAgICAgICAgICBRVkVSSUZZKHBsdWdpbkZvck1pbWVUeXBlMiAhPSBwbHVnaW4pOworICAgICAg
ICAgICAgUVZFUklGWShwbHVnaW5Gb3JNaW1lVHlwZTIuaXNOdWxsKCkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgUVZFUklGWShwbHVnaW5Gb3JNaW1lVHlwZTIgIT0gcGx1Z2luKTsK
KyAgICAgICAgICAgIFFWRVJJRlkoIXBsdWdpbkZvck1pbWVUeXBlMi5pc051bGwoKSk7CisgICAg
ICAgIH0KKworICAgICAgICBwbHVnaW4uc2V0RW5hYmxlZCh0cnVlKTsKKworICAgICAgICArK2l0
OworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRvcmVxdWFs
X2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48UVdlYlBsdWdpbj4oImZpcnN0Iik7Cisg
ICAgUVRlc3Q6OmFkZENvbHVtbjxRV2ViUGx1Z2luPigic2Vjb25kIik7CisgICAgUVRlc3Q6OmFk
ZENvbHVtbjxib29sPigiZXF1YWwiKTsKKworICAgIFFXZWJQbHVnaW5EYXRhYmFzZSogZGF0YWJh
c2UgPSBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCk7CisgICAgUVRlc3Q6Om5ld1Jvdygi
bnVsbCIpIDw8IFFXZWJQbHVnaW4oKSA8PCBRV2ViUGx1Z2luKCkgPDwgdHJ1ZTsKKyAgICBRVGVz
dDo6bmV3Um93KCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIDw8IGRhdGFiYXNlLT5w
bHVnaW5Gb3JNaW1lVHlwZSgiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZGF0YWJhc2Ut
PnBsdWdpbkZvck1pbWVUeXBlKCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIDw8IHRy
dWU7CisgICAgUVRlc3Q6Om5ld1JvdygiZm9vL2Jhci1iYXoiKSA8PCBkYXRhYmFzZS0+cGx1Z2lu
Rm9yTWltZVR5cGUoImZvby9iYXItYmF6IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZSgiZm9vL2Jhci1iYXoiKSA8PCB0cnVl
OworCisgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAocGx1Z2lucy5jb3VudCgpIC0gMSk7ICsraSkgewor
ICAgICAgICBRV2ViUGx1Z2luIGZpcnN0ID0gcGx1Z2lucy5hdChpKTsKKyAgICAgICAgUVdlYlBs
dWdpbiBzZWNvbmQgPSBwbHVnaW5zLmF0KGkgKyAxKTsKKworICAgICAgICBRVGVzdDo6bmV3Um93
KFFTdHJpbmcoIiUxPT0lMiIpLmFyZyhmaXJzdC5uYW1lKCksIHNlY29uZC5uYW1lKCkpLnRvVXRm
OCgpLmNvbnN0RGF0YSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
Zmlyc3QgPDwgc2Vjb25kIDw8IGZhbHNlOworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdp
bkRhdGFiYXNlOjpvcGVyYXRvcmVxdWFsKCkKK3sKKyAgICBRRkVUQ0goUVdlYlBsdWdpbiwgZmly
c3QpOworICAgIFFGRVRDSChRV2ViUGx1Z2luLCBzZWNvbmQpOworICAgIFFGRVRDSChib29sLCBl
cXVhbCk7CisKKyAgICBRQ09NUEFSRShmaXJzdCA9PSBzZWNvbmQsIGVxdWFsKTsKK30KKwordm9p
ZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwcmVmZXJyZWRQbHVnaW4oKQoreworICAgIFFNdWx0
aU1hcDxRU3RyaW5nLCBRV2ViUGx1Z2luPiBwbHVnaW5zTWFwOworICAgIFFXZWJQbHVnaW5EYXRh
YmFzZSogZGF0YWJhc2UgPSBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCk7CisgICAgUUxp
c3Q8UVdlYlBsdWdpbj4gcGx1Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHBsdWdpbnMuY291bnQoKTsgKytpKSB7CisgICAgICAgIFFXZWJQbHVn
aW4gcGx1Z2luID0gcGx1Z2lucy5hdChpKTsKKworICAgICAgICBRTGlzdDxNaW1lVHlwZT4gbWlt
ZVR5cGVzID0gcGx1Z2luLm1pbWVUeXBlcygpOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8
IG1pbWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAgICAgICAgICAgIFFTdHJpbmcgbWltZVR5cGUg
PSBtaW1lVHlwZXMuYXQoaikubmFtZTsKKyAgICAgICAgICAgIHBsdWdpbnNNYXAuaW5zZXJ0KG1p
bWVUeXBlLCBwbHVnaW4pOworICAgICAgICB9CisgICAgfQorCisgICAgUU11bHRpTWFwPFFTdHJp
bmcsIFFXZWJQbHVnaW4+OjppdGVyYXRvciBpdCA9IHBsdWdpbnNNYXAuYmVnaW4oKTsKKyAgICB3
aGlsZSAoaXQgIT0gcGx1Z2luc01hcC5lbmQoKSkgeworICAgICAgICBRU3RyaW5nIG1pbWVUeXBl
ID0gaXQua2V5KCk7CisKKyAgICAgICAgaWYgKHBsdWdpbnNNYXAuY291bnQobWltZVR5cGUpID4g
MSkgeworICAgICAgICAgICAgUUxpc3Q8UVdlYlBsdWdpbj4gcGx1Z2luc0Zvck1pbWVUeXBlID0g
cGx1Z2luc01hcC52YWx1ZXMobWltZVR5cGUpOworICAgICAgICAgICAgUVdlYlBsdWdpbiBwbHVn
aW4gPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpOworICAgICAgICAgICAg
UVZFUklGWShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpOworCisgICAgICAgICAg
ICBwbHVnaW5zRm9yTWltZVR5cGUucmVtb3ZlQWxsKHBsdWdpbik7CisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHBsdWdpbnNGb3JNaW1lVHlwZS5jb3VudCgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBRV2ViUGx1Z2luIGFub3RoZXJQbHVnaW4gPSBwbHVnaW5zRm9yTWltZVR5cGUu
YXQoaSk7CisgICAgICAgICAgICAgICAgUVZFUklGWShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZSht
aW1lVHlwZSkpOworICAgICAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luICE9IGFub3RoZXJQbHVn
aW4pOworCisgICAgICAgICAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVU
eXBlKG1pbWVUeXBlKSwgcGx1Z2luKTsKKyAgICAgICAgICAgICAgICBkYXRhYmFzZS0+c2V0UHJl
ZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUsIGFub3RoZXJQbHVnaW4pOworICAgICAg
ICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSks
IGFub3RoZXJQbHVnaW4pOworCisgICAgICAgICAgICAgICAgYW5vdGhlclBsdWdpbi5zZXRFbmFi
bGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2luRm9y
TWltZVR5cGUobWltZVR5cGUpLCBwbHVnaW4pOworCisgICAgICAgICAgICAgICAgYW5vdGhlclBs
dWdpbi5zZXRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNl
LT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIGFub3RoZXJQbHVnaW4pOworICAgICAgICAg
ICAgICAgIGRhdGFiYXNlLT5zZXRTZWFyY2hQYXRocyhkYXRhYmFzZS0+c2VhcmNoUGF0aHMoKSk7
CisgICAgICAgICAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1p
bWVUeXBlKSwgYW5vdGhlclBsdWdpbik7CisKKyAgICAgICAgICAgICAgICBkYXRhYmFzZS0+c2V0
UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUsIFFXZWJQbHVnaW4oKSk7CisgICAg
ICAgICAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBl
KSwgcGx1Z2luKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IFFXZWJQbHVnaW4gcGx1Z2luID0gZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBl
KTsKKyAgICAgICAgICAgIFFDT01QQVJFKHBsdWdpbnNNYXAudmFsdWUobWltZVR5cGUpLCBwbHVn
aW4pOworCisgICAgICAgICAgICBkYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5
cGUobWltZVR5cGUsIHBsdWdpbik7CisgICAgICAgICAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1
Z2luRm9yTWltZVR5cGUobWltZVR5cGUpLCBwbHVnaW4pOworCisgICAgICAgICAgICBwbHVnaW4u
c2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2lu
Rm9yTWltZVR5cGUobWltZVR5cGUpLCBRV2ViUGx1Z2luKCkpOworICAgICAgICAgICAgcGx1Z2lu
LnNldEVuYWJsZWQodHJ1ZSk7CisKKyAgICAgICAgICAgIGRhdGFiYXNlLT5zZXRQcmVmZXJyZWRQ
bHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSwgUVdlYlBsdWdpbigpKTsKKyAgICAgICAgICAgIFFD
T01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIHBsdWdpbik7Cisg
ICAgICAgIH0KKworICAgICAgICArK2l0OworICAgIH0KKworICAgIGlmIChwbHVnaW5zTWFwLmtl
eXMoKS5jb3VudCgpID49IDIpIHsKKyAgICAgICAgUVN0cmluZ0xpc3QgbWltZVR5cGVzID0gcGx1
Z2luc01hcC51bmlxdWVLZXlzKCk7CisKKyAgICAgICAgUVN0cmluZyBtaW1lVHlwZTEgPSBtaW1l
VHlwZXMuYXQoMCk7CisgICAgICAgIFFTdHJpbmcgbWltZVR5cGUyID0gbWltZVR5cGVzLmF0KDEp
OworICAgICAgICBRV2ViUGx1Z2luIHBsdWdpbjEgPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5
cGUobWltZVR5cGUxKTsKKyAgICAgICAgUVdlYlBsdWdpbiBwbHVnaW4yID0gZGF0YWJhc2UtPnBs
dWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMik7CisKKyAgICAgICAgaW50IGkgPSAyOworICAgICAg
ICB3aGlsZSAocGx1Z2luMi5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlMSkKKyAgICAgICAgICAg
ICAgICYmICFtaW1lVHlwZTIuaXNFbXB0eSgpCisgICAgICAgICAgICAgICAmJiBpIDwgbWltZVR5
cGVzLmNvdW50KCkpIHsKKyAgICAgICAgICAgIG1pbWVUeXBlMiA9IG1pbWVUeXBlcy5hdChpKTsK
KyAgICAgICAgICAgIHBsdWdpbjIgPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5
cGUyKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorCisgICAgICAgIHBsdWdpbjEgPSBk
YXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUxKTsKKyAgICAgICAgUVZFUklGWShw
bHVnaW4xLnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUxKSk7CisgICAgICAgIFFWRVJJRlkoIXBs
dWdpbjEuaXNOdWxsKCkpOworICAgICAgICBwbHVnaW4yID0gZGF0YWJhc2UtPnBsdWdpbkZvck1p
bWVUeXBlKG1pbWVUeXBlMik7CisgICAgICAgIFFWRVJJRlkocGx1Z2luMi5zdXBwb3J0c01pbWVU
eXBlKG1pbWVUeXBlMikpOworICAgICAgICBRVkVSSUZZKCFwbHVnaW4yLmlzTnVsbCgpKTsKKwor
ICAgICAgICBkYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUy
LCBwbHVnaW4xKTsKKyAgICAgICAgUVZFUklGWSghcGx1Z2luMS5zdXBwb3J0c01pbWVUeXBlKG1p
bWVUeXBlMikpOworICAgICAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUo
bWltZVR5cGUyKSwgcGx1Z2luMik7CisKKyAgICAgICAgZGF0YWJhc2UtPnNldFByZWZlcnJlZFBs
dWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMSwgcGx1Z2luMSk7CisgICAgICAgIFFWRVJJRlkoIXBs
dWdpbjIuc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZTEpKTsKKyAgICAgICAgUUNPTVBBUkUoZGF0
YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMiksIHBsdWdpbjIpOworICAgIH0KK30K
KworUVRFU1RfTUFJTih0c3RfUVdlYlBsdWdpbkRhdGFiYXNlKQorCisjaW5jbHVkZSAidHN0X3F3
ZWJwbHVnaW5kYXRhYmFzZS5tb2MiCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvdGVzdHMu
cHJvIGIvV2ViS2l0L3F0L3Rlc3RzL3Rlc3RzLnBybwppbmRleCBlNzE3ZThmLi5iNWY2NmVlIDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvdGVzdHMvdGVzdHMucHJvCisrKyBiL1dlYktpdC9xdC90ZXN0
cy90ZXN0cy5wcm8KQEAgLTEsNCArMSw0IEBACiAKIFRFTVBMQVRFID0gc3ViZGlycwotU1VCRElS
UyA9IHF3ZWJmcmFtZSBxd2VicGFnZSBxd2ViZWxlbWVudCBxd2ViaGlzdG9yeWludGVyZmFjZSBx
d2VidmlldyBxd2ViaGlzdG9yeQorU1VCRElSUyA9IHF3ZWJmcmFtZSBxd2VicGFnZSBxd2ViZWxl
bWVudCBxd2ViaGlzdG9yeWludGVyZmFjZSBxd2VicGx1Z2luZGF0YWJhc2UgcXdlYnZpZXcgcXdl
Ymhpc3RvcnkKIGdyZWF0ZXJUaGFuKFFUX01JTk9SX1ZFUlNJT04sIDQpOiBTVUJESVJTICs9IGJl
bmNobWFya3MvcGFpbnRpbmcvdHN0X3BhaW50aW5nLnBybyBiZW5jaG1hcmtzL2xvYWRpbmcvdHN0
X2xvYWRpbmcucHJvCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34653</attachid>
            <date>2009-08-12 04:47:50 -0700</date>
            <delta_ts>2009-09-05 04:53:23 -0700</delta_ts>
            <desc>Remove the private classes from QWebPluginDatabase.</desc>
            <filename>0001-Remove-the-private-classes-from-QWebPluginDatabase.patch</filename>
            <type>text/plain</type>
            <size>13218</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSBjNjMyNjU3ODQ4NGZlYTllOTExYzFhNTc2MmQ5OThlYWY5ZGI0MGMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjI6MDY6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvNl0g
UmVtb3ZlIHRoZSBwcml2YXRlIGNsYXNzZXMgZnJvbSBRV2ViUGx1Z2luRGF0YWJhc2UuCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKCkluc3RlYWQsIGhvbGQg
dGhlIFBsdWdpbkRhdGFiYXNlIGFuZCBQbHVnaW5QYWNrYWdlIG9iamVjdHMgYXMgY2xhc3MKbWVt
YmVycyBhbmQgdGFrZSBjYXJlIG9mIHJlZmNvdW50aW5nIG9uIG91ciBvd24gaW5zdGVhZCBvZiB1
c2luZyBSZWZQdHIuCgpUaGlzIHdheSB3ZSBub3Qgb25seSBtYWRlIHRoZSBjb2RlIGNsZWFuZXIg
YnV0IGFsc28gZ290IHJpZCBvZgpyZWR1bmRhbnQgYWxsb2NhdGlvbnMgd2hlbiBjb25zdHJ1Y3Rp
bmcgbnVsbCBRV2ViUGx1Z2luSW5mbyBvYmplY3RzLgotLS0KIFdlYktpdC9xdC9BcGkvcXdlYnBs
dWdpbmRhdGFiYXNlLmNwcCB8ICAgODQgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t
CiBXZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oICAgfCAgICA5ICsrLS0KIFdlYktp
dC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaCB8ICAgNDYgLS0tLS0tLS0tLS0tLS0tLS0t
CiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgfCAgIDM4ICsrKysrKysrKysr
KysrKwogNCBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmgK
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgYi9XZWJL
aXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKaW5kZXggODc1OGM2MC4uM2E3MGYwMyAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCisrKyBiL1dl
YktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAtMTksNyArMTksNiBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlLmgiCi0jaW5j
bHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlX3AuaCIKIAogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgpAQCAtMzIsMTYgKzMxLDYgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgXGJyaWVmIFJlcHJlc2VudHMgYSBzaW5nbGUgTUlNRSB0
eXBlIHN1cHBvcnRlZCBieSBhIHBsdWdpbi4KICovCiAKLVFXZWJQbHVnaW5JbmZvUHJpdmF0ZTo6
UVdlYlBsdWdpbkluZm9Qcml2YXRlKFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwbHVnaW5QYWNrYWdl
KQotICAgIDogcGx1Z2luKHBsdWdpblBhY2thZ2UpCi17Ci19Ci0KLVFXZWJQbHVnaW5EYXRhYmFz
ZVByaXZhdGU6OlFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUoUGx1Z2luRGF0YWJhc2UqIHBsdWdp
bkRhdGFiYXNlKQotICAgIDogZGF0YWJhc2UocGx1Z2luRGF0YWJhc2UpCi17Ci19Ci0KIC8qIQog
ICAgIFxjbGFzcyBRV2ViUGx1Z2luSW5mbwogICAgIFxzaW5jZSA0LjYKQEAgLTY0LDIxICs1Mywy
NSBAQCBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlOjpRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRl
KFBsdWdpbkRhdGFiYXNlKiBwbHVnaW5EYXRhYgogICAgIENvbnN0cnVjdHMgYSBudWxsIFFXZWJQ
bHVnaW5JbmZvLgogKi8KIFFXZWJQbHVnaW5JbmZvOjpRV2ViUGx1Z2luSW5mbygpCi0gICAgOiBk
KG5ldyBRV2ViUGx1Z2luSW5mb1ByaXZhdGUoMCkpCisgICAgOiBtX3BhY2thZ2UoMCkKIHsKIH0K
IAotUVdlYlBsdWdpbkluZm86OlFXZWJQbHVnaW5JbmZvKFBsdWdpblBhY2thZ2UqIHBsdWdpbikK
LSAgICA6IGQobmV3IFFXZWJQbHVnaW5JbmZvUHJpdmF0ZShwbHVnaW4pKQorUVdlYlBsdWdpbklu
Zm86OlFXZWJQbHVnaW5JbmZvKFBsdWdpblBhY2thZ2UqIHBhY2thZ2UpCisgICAgOiBtX3BhY2th
Z2UocGFja2FnZSkKIHsKKyAgICBpZiAobV9wYWNrYWdlKQorICAgICAgICBtX3BhY2thZ2UtPnJl
ZigpOwogfQogCiAvKiEKICAgICBDb250cnVjdHMgYSBjb3B5IG9mIFxhIG90aGVyLgogKi8KIFFX
ZWJQbHVnaW5JbmZvOjpRV2ViUGx1Z2luSW5mbyhjb25zdCBRV2ViUGx1Z2luSW5mbyYgb3RoZXIp
Ci0gICAgOiBkKG5ldyBRV2ViUGx1Z2luSW5mb1ByaXZhdGUob3RoZXIuZC0+cGx1Z2luKSkKKyAg
ICA6IG1fcGFja2FnZShvdGhlci5tX3BhY2thZ2UpCiB7CisgICAgaWYgKG1fcGFja2FnZSkKKyAg
ICAgICAgbV9wYWNrYWdlLT5yZWYoKTsKIH0KIAogLyohCkBAIC04Niw3ICs3OSw4IEBAIFFXZWJQ
bHVnaW5JbmZvOjpRV2ViUGx1Z2luSW5mbyhjb25zdCBRV2ViUGx1Z2luSW5mbyYgb3RoZXIpCiAq
LwogUVdlYlBsdWdpbkluZm86On5RV2ViUGx1Z2luSW5mbygpCiB7Ci0gICAgZGVsZXRlIGQ7Cisg
ICAgaWYgKG1fcGFja2FnZSkKKyAgICAgICAgbV9wYWNrYWdlLT5kZXJlZigpOwogfQogCiAvKiEK
QEAgLTk2LDkgKzkwLDkgQEAgUVdlYlBsdWdpbkluZm86On5RV2ViUGx1Z2luSW5mbygpCiAqLwog
UVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFkLT5wbHVn
aW4pCisgICAgaWYgKCFtX3BhY2thZ2UpCiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIGQtPnBsdWdpbi0+bmFtZSgpOworICAgIHJldHVybiBtX3BhY2thZ2UtPm5hbWUoKTsK
IH0KIAogLyohCkBAIC0xMDgsOSArMTAyLDkgQEAgUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6bmFt
ZSgpIGNvbnN0CiAqLwogUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6ZGVzY3JpcHRpb24oKSBjb25z
dAogewotICAgIGlmICghZC0+cGx1Z2luKQorICAgIGlmICghbV9wYWNrYWdlKQogICAgICAgICBy
ZXR1cm4gUVN0cmluZygpOwotICAgIHJldHVybiBkLT5wbHVnaW4tPmRlc2NyaXB0aW9uKCk7Cisg
ICAgcmV0dXJuIG1fcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKIH0KIAogLyohCkBAIC0xMjAsMTEg
KzExNCwxMSBAQCBRU3RyaW5nIFFXZWJQbHVnaW5JbmZvOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAq
LwogUUxpc3Q8UVdlYlBsdWdpbkluZm86Ok1pbWVUeXBlPiBRV2ViUGx1Z2luSW5mbzo6bWltZVR5
cGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIWQtPnBsdWdpbikKKyAgICBpZiAoIW1fcGFja2FnZSkK
ICAgICAgICAgcmV0dXJuIFFMaXN0PE1pbWVUeXBlPigpOwogCiAgICAgUUxpc3Q8TWltZVR5cGU+
IG1pbWVUeXBlczsKLSAgICBjb25zdCBNSU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2Ny
aXB0aW9ucyA9IGQtPnBsdWdpbi0+bWltZVRvRGVzY3JpcHRpb25zKCk7CisgICAgY29uc3QgTUlN
RVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBtX3BhY2thZ2UtPm1pbWVU
b0Rlc2NyaXB0aW9ucygpOwogICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwogICAgIGZvciAoTUlNRVRvRGVzY3Jp
cHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgTWltZVR5cGUgbWltZVR5cGU7CkBAIC0xMzIs
NyArMTI2LDcgQEAgUUxpc3Q8UVdlYlBsdWdpbkluZm86Ok1pbWVUeXBlPiBRV2ViUGx1Z2luSW5m
bzo6bWltZVR5cGVzKCkgY29uc3QKICAgICAgICAgbWltZVR5cGUuZGVzY3JpcHRpb24gPSBpdC0+
c2Vjb25kOwogCiAgICAgICAgIFFTdHJpbmdMaXN0IGZpbGVFeHRlbnNpb25zOwotICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gZC0+cGx1Z2luLT5taW1lVG9FeHRlbnNpb25zKCku
Z2V0KG1pbWVUeXBlLm5hbWUpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0g
bV9wYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWVUeXBlLm5hbWUpOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgKytpKQogICAg
ICAgICAgICAgZmlsZUV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbnNbaV0pOwpAQCAtMTY2LDkg
KzE2MCw5IEBAIGJvb2wgUVdlYlBsdWdpbkluZm86OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgUVN0
cmluZyYgbWltZVR5cGUpIGNvbnN0CiAqLwogUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6cGF0aCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFkLT5wbHVnaW4pCisgICAgaWYgKCFtX3BhY2thZ2UpCiAgICAg
ICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGQtPnBsdWdpbi0+cGF0aCgpOworICAg
IHJldHVybiBtX3BhY2thZ2UtPnBhdGgoKTsKIH0KIAogLyohCkBAIC0xNzYsNyArMTcwLDcgQEAg
UVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6cGF0aCgpIGNvbnN0CiAqLwogYm9vbCBRV2ViUGx1Z2lu
SW5mbzo6aXNOdWxsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWQtPnBsdWdpbjsKKyAgICByZXR1
cm4gIW1fcGFja2FnZTsKIH0KIAogLyohCkBAIC0xODksOSArMTgzLDkgQEAgYm9vbCBRV2ViUGx1
Z2luSW5mbzo6aXNOdWxsKCkgY29uc3QKICovCiB2b2lkIFFXZWJQbHVnaW5JbmZvOjpzZXRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAoIWQtPnBsdWdpbikKKyAgICBpZiAoIW1fcGFj
a2FnZSkKICAgICAgICAgcmV0dXJuOwotICAgIGQtPnBsdWdpbi0+c2V0RW5hYmxlZChlbmFibGVk
KTsKKyAgICBtX3BhY2thZ2UtPnNldEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIC8qIQpAQCAtMjAx
LDE5ICsxOTUsMTkgQEAgdm9pZCBRV2ViUGx1Z2luSW5mbzo6c2V0RW5hYmxlZChib29sIGVuYWJs
ZWQpCiAqLwogYm9vbCBRV2ViUGx1Z2luSW5mbzo6aXNFbmFibGVkKCkgY29uc3QKIHsKLSAgICBp
ZiAoIWQtPnBsdWdpbikKKyAgICBpZiAoIW1fcGFja2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBkLT5wbHVnaW4tPmlzRW5hYmxlZCgpOworICAgIHJldHVybiBtX3BhY2th
Z2UtPmlzRW5hYmxlZCgpOwogfQogCiBib29sIFFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj09KGNv
bnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+cGx1Z2lu
ID09IG90aGVyLmQtPnBsdWdpbjsKKyAgICByZXR1cm4gbV9wYWNrYWdlID09IG90aGVyLm1fcGFj
a2FnZTsKIH0KIAogYm9vbCBRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3IhPShjb25zdCBRV2ViUGx1
Z2luSW5mbyYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPnBsdWdpbiAhPSBvdGhlci5k
LT5wbHVnaW47CisgICAgcmV0dXJuIG1fcGFja2FnZSAhPSBvdGhlci5tX3BhY2thZ2U7CiB9CiAK
IFFXZWJQbHVnaW5JbmZvICZRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9KGNvbnN0IFFXZWJQbHVn
aW5JbmZvJiBvdGhlcikKQEAgLTIyMSw3ICsyMTUsMTIgQEAgUVdlYlBsdWdpbkluZm8gJlFXZWJQ
bHVnaW5JbmZvOjpvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKQogICAgIGlm
ICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgZC0+cGx1Z2lu
ID0gb3RoZXIuZC0+cGx1Z2luOworICAgIGlmIChtX3BhY2thZ2UpCisgICAgICAgIG1fcGFja2Fn
ZS0+ZGVyZWYoKTsKKyAgICBtX3BhY2thZ2UgPSBvdGhlci5tX3BhY2thZ2U7CisgICAgaWYgKG1f
cGFja2FnZSkKKyAgICAgICAgbV9wYWNrYWdlLT5yZWYoKTsKKwogICAgIHJldHVybiAqdGhpczsK
IH0KIApAQCAtMjUzLDEzICsyNTIsMTIgQEAgUVdlYlBsdWdpbkluZm8gJlFXZWJQbHVnaW5JbmZv
OjpvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKQogCiBRV2ViUGx1Z2luRGF0
YWJhc2U6OlFXZWJQbHVnaW5EYXRhYmFzZShRT2JqZWN0KiBwYXJlbnQpCiAgICAgOiBRT2JqZWN0
KHBhcmVudCkKLSAgICAsIGQobmV3IFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUoUGx1Z2luRGF0
YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKSkpCisgICAgLCBtX2RhdGFiYXNlKFBsdWdpbkRhdGFi
YXNlOjppbnN0YWxsZWRQbHVnaW5zKCkpCiB7CiB9CiAKIFFXZWJQbHVnaW5EYXRhYmFzZTo6flFX
ZWJQbHVnaW5EYXRhYmFzZSgpCiB7Ci0gICAgZGVsZXRlIGQ7CiB9CiAKIC8qIQpAQCAtMjczLDcg
KzI3MSw3IEBAIFFXZWJQbHVnaW5EYXRhYmFzZTo6flFXZWJQbHVnaW5EYXRhYmFzZSgpCiBRTGlz
dDxRV2ViUGx1Z2luSW5mbz4gUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5zKCkgY29uc3QKIHsK
ICAgICBRTGlzdDxRV2ViUGx1Z2luSW5mbz4gcXdlYnBsdWdpbnM7Ci0gICAgY29uc3QgVmVjdG9y
PFBsdWdpblBhY2thZ2UqPiYgcGx1Z2lucyA9IGQtPmRhdGFiYXNlLT5wbHVnaW5zKCk7CisgICAg
Y29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiYgcGx1Z2lucyA9IG1fZGF0YWJhc2UtPnBsdWdp
bnMoKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7
ICsraSkgewogICAgICAgICBQbHVnaW5QYWNrYWdlKiBwbHVnaW4gPSBwbHVnaW5zW2ldOwpAQCAt
MzA4LDcgKzMwNiw3IEBAIFFTdHJpbmdMaXN0IFFXZWJQbHVnaW5EYXRhYmFzZTo6c2VhcmNoUGF0
aHMoKSBjb25zdAogewogICAgIFFTdHJpbmdMaXN0IHBhdGhzOwogCi0gICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRpcmVjdG9yaWVzID0gZC0+ZGF0YWJhc2UtPnBsdWdpbkRpcmVjdG9yaWVzKCk7
CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzID0gbV9kYXRhYmFzZS0+cGx1
Z2luRGlyZWN0b3JpZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGRpcmVj
dG9yaWVzLnNpemUoKTsgKytpKQogICAgICAgICBwYXRocy5hcHBlbmQoZGlyZWN0b3JpZXNbaV0p
OwogCkBAIC0zMjgsOSArMzI2LDkgQEAgdm9pZCBRV2ViUGx1Z2luRGF0YWJhc2U6OnNldFNlYXJj
aFBhdGhzKGNvbnN0IFFTdHJpbmdMaXN0JiBwYXRocykKICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBhdGhzLmNvdW50KCk7ICsraSkKICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5k
KHBhdGhzLmF0KGkpKTsKIAotICAgIGQtPmRhdGFiYXNlLT5zZXRQbHVnaW5EaXJlY3Rvcmllcyhk
aXJlY3Rvcmllcyk7CisgICAgbV9kYXRhYmFzZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMoZGlyZWN0
b3JpZXMpOwogICAgIC8vIFBsdWdpbkRhdGFiYXNlOjpzZXRQbHVnaW5EaXJlY3RvcmllcygpIGRv
ZXMgbm90IHJlZnJlc2ggdGhlIGRhdGFiYXNlLgotICAgIGQtPmRhdGFiYXNlLT5yZWZyZXNoKCk7
CisgICAgbV9kYXRhYmFzZS0+cmVmcmVzaCgpOwogfQogCiAvKiEKQEAgLTM0MSw3ICszMzksNyBA
QCB2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6c2V0U2VhcmNoUGF0aHMoY29uc3QgUVN0cmluZ0xp
c3QmIHBhdGhzKQogKi8KIHZvaWQgUVdlYlBsdWdpbkRhdGFiYXNlOjphZGRTZWFyY2hQYXRoKGNv
bnN0IFFTdHJpbmcmIHBhdGgpCiB7Ci0gICAgZC0+ZGF0YWJhc2UtPmFkZEV4dHJhUGx1Z2luRGly
ZWN0b3J5KHBhdGgpOworICAgIG1fZGF0YWJhc2UtPmFkZEV4dHJhUGx1Z2luRGlyZWN0b3J5KHBh
dGgpOwogICAgIC8vIFBsdWdpbkRhdGFiYXNlOjphZGRFeHRyYVBsdWdpbkRpcmVjdG9yeSgpIGRv
ZXMgcmVmcmVzaCB0aGUgZGF0YWJhc2UuCiB9CiAKQEAgLTM1NSw3ICszNTMsNyBAQCB2b2lkIFFX
ZWJQbHVnaW5EYXRhYmFzZTo6YWRkU2VhcmNoUGF0aChjb25zdCBRU3RyaW5nJiBwYXRoKQogKi8K
IHZvaWQgUVdlYlBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKIHsKLSAgICBkLT5kYXRhYmFzZS0+
cmVmcmVzaCgpOworICAgIG1fZGF0YWJhc2UtPnJlZnJlc2goKTsKIH0KIAogLyohCkBAIC0zNjUs
NyArMzYzLDcgQEAgdm9pZCBRV2ViUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogKi8KIFFXZWJQ
bHVnaW5JbmZvIFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTWltZVR5cGUoY29uc3QgUVN0
cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIFFXZWJQbHVnaW5JbmZvKGQtPmRhdGFiYXNl
LT5wbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSkpOworICAgIHJldHVybiBRV2ViUGx1Z2luSW5m
byhtX2RhdGFiYXNlLT5wbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSkpOwogfQogCiAvKiEKQEAg
LTM3OCw1ICszNzYsNSBAQCBRV2ViUGx1Z2luSW5mbyBRV2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdp
bkZvck1pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlKQogKi8KIHZvaWQgUVdlYlBsdWdp
bkRhdGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgUVdlYlBsdWdpbkluZm8mIHBsdWdpbikKIHsKLSAgICBkLT5kYXRhYmFz
ZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGUsIHBsdWdpbi5kLT5wbHVn
aW4uZ2V0KCkpOworICAgIG1fZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBl
KG1pbWVUeXBlLCBwbHVnaW4ubV9wYWNrYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9B
cGkvcXdlYnBsdWdpbmRhdGFiYXNlLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFz
ZS5oCmluZGV4IDRiNTAxMTkuLjdiYjhkNmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdl
YnBsdWdpbmRhdGFiYXNlLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2Uu
aApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSA8UXRDb3JlL3FzdHJpbmdsaXN0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZTsKICAgICBjbGFz
cyBQbHVnaW5QYWNrYWdlOwogfQogCi1jbGFzcyBRV2ViUGx1Z2luSW5mb1ByaXZhdGU7CiBjbGFz
cyBRV0VCS0lUX0VYUE9SVCBRV2ViUGx1Z2luSW5mbyB7CiBwdWJsaWM6CiAgICAgUVdlYlBsdWdp
bkluZm8oKTsKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5RV2ViUGx1Z2luSW5mbygp
OwogCiBwcml2YXRlOgotICAgIFFXZWJQbHVnaW5JbmZvKFdlYkNvcmU6OlBsdWdpblBhY2thZ2Uq
IHBsdWdpbik7CisgICAgUVdlYlBsdWdpbkluZm8oV2ViQ29yZTo6UGx1Z2luUGFja2FnZSogcGFj
a2FnZSk7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIFFXZWJQbHVnaW5GYWN0b3J5OjpNaW1lVHlw
ZSBNaW1lVHlwZTsKQEAgLTYxLDEwICs2MSw5IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3Mg
UVdlYlBsdWdpbkRhdGFiYXNlOwogCiBwcml2YXRlOgotICAgIFFXZWJQbHVnaW5JbmZvUHJpdmF0
ZSAqZDsKKyAgICBXZWJDb3JlOjpQbHVnaW5QYWNrYWdlKiBtX3BhY2thZ2U7CiB9OwogCi1jbGFz
cyBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlOwogY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlBs
dWdpbkRhdGFiYXNlIDogcHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCiAKQEAgLTg4LDcg
Kzg3LDcgQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBRV2ViU2V0dGluZ3M7CiAKIHByaXZh
dGU6Ci0gICAgUVdlYlBsdWdpbkRhdGFiYXNlUHJpdmF0ZSAqZDsKKyAgICBXZWJDb3JlOjpQbHVn
aW5EYXRhYmFzZSogbV9kYXRhYmFzZTsKIH07CiAKICNlbmRpZiAvLyBRV0VCUExVR0lOREFUQUJB
U0VfSApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2VfcC5oIGIv
V2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2VfcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3MTQ0NThmLi4wMDAwMDAwCi0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdp
bmRhdGFiYXNlX3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA5IEpha3ViIFdpZWN6b3JlayA8ZmF3MjE3QGdtYWlsLmNvbT4KLQotICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0j
aWZuZGVmIFFXRUJQTFVHSU5EQVRBQkFTRV9QX0gKLSNkZWZpbmUgUVdFQlBMVUdJTkRBVEFCQVNF
X1BfSAotCi0jaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKLSAg
ICBjbGFzcyBQbHVnaW5EYXRhYmFzZTsKLX07Ci0KLWNsYXNzIFFXZWJQbHVnaW5JbmZvUHJpdmF0
ZSB7Ci1wdWJsaWM6Ci0gICAgUVdlYlBsdWdpbkluZm9Qcml2YXRlKFJlZlB0cjxXZWJDb3JlOjpQ
bHVnaW5QYWNrYWdlPiBwbHVnaW5QYWNrYWdlKTsKLQotICAgIFJlZlB0cjxXZWJDb3JlOjpQbHVn
aW5QYWNrYWdlPiBwbHVnaW47Ci19OwotCi1jbGFzcyBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRl
IHsKLXB1YmxpYzoKLSAgICBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlKFdlYkNvcmU6OlBsdWdp
bkRhdGFiYXNlKiBwbHVnaW5EYXRhYmFzZSk7Ci0KLSAgICBXZWJDb3JlOjpQbHVnaW5EYXRhYmFz
ZSogZGF0YWJhc2U7Ci19OwotCi0jZW5kaWYgLy8gUVdFQlBMVUdJTkRBVEFCQVNFX1BfSApkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
NmIwNWIxOC4uOGY4YmIyMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMDktMDgtMTAgIEpha3ViIFdp
ZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBwcml2YXRlIGNsYXNzZXMgZnJvbSBRV2Vi
UGx1Z2luRGF0YWJhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1MQorICAgICAgICAKKyAgICAgICAgSW5zdGVhZCwgaG9sZCB0aGUgUGx1Z2lu
RGF0YWJhc2UgYW5kIFBsdWdpblBhY2thZ2Ugb2JqZWN0cyBhcyBjbGFzcworICAgICAgICBtZW1i
ZXJzIGFuZCB0YWtlIGNhcmUgb2YgcmVmY291bnRpbmcgb24gb3VyIG93biBpbnN0ZWFkIG9mIHVz
aW5nIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgd2F5IHdlIG5vdCBvbmx5IG1hZGUg
dGhlIGNvZGUgY2xlYW5lciBidXQgYWxzbyBnb3QgcmlkIG9mCisgICAgICAgIHJlZHVuZGFudCBh
bGxvY2F0aW9ucyB3aGVuIGNvbnN0cnVjdGluZyBudWxsIFFXZWJQbHVnaW5JbmZvIG9iamVjdHMu
CisKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFFXZWJQ
bHVnaW5JbmZvOjpRV2ViUGx1Z2luSW5mbyk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6flFX
ZWJQbHVnaW5JbmZvKToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjpuYW1lKToKKyAgICAgICAg
KFFXZWJQbHVnaW5JbmZvOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6
bWltZVR5cGVzKToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjpwYXRoKToKKyAgICAgICAgKFFX
ZWJQbHVnaW5JbmZvOjppc051bGwpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OnNldEVuYWJs
ZWQpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OmlzRW5hYmxlZCk6CisgICAgICAgIChRV2Vi
UGx1Z2luSW5mbzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6b3BlcmF0
b3IhPSk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFFX
ZWJQbHVnaW5EYXRhYmFzZTo6UVdlYlBsdWdpbkRhdGFiYXNlKToKKyAgICAgICAgKFFXZWJQbHVn
aW5EYXRhYmFzZTo6flFXZWJQbHVnaW5EYXRhYmFzZSk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0
YWJhc2U6OnBsdWdpbnMpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpzZWFyY2hQYXRo
cyk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OnNldFNlYXJjaFBhdGhzKToKKyAgICAg
ICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6YWRkU2VhcmNoUGF0aCk6CisgICAgICAgIChRV2ViUGx1
Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVn
aW5Gb3JNaW1lVHlwZSk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OnNldFByZWZlcnJl
ZFBsdWdpbkZvck1pbWVUeXBlKToKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmg6
CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmg6IFJlbW92ZWQuCisKIDIwMDkt
MDgtMTAgIEthdmluZHJhIFBhbGFyYWphICA8a2F2aW5kcmEucGFsYXJhamFAbm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="18803"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34654</attachid>
            <date>2009-08-12 04:49:43 -0700</date>
            <delta_ts>2009-09-07 11:53:40 -0700</delta_ts>
            <desc>Optimize the QWebPluginInfo::supportsMimeType() function.</desc>
            <filename>0002-Speed-up-the-QWebPluginInfo-supportsMimeType-functio.patch</filename>
            <type>text/plain</type>
            <size>2032</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSA2MTUyZjM1Y2FhZDk2MzRjY2U5MWRhOWU4NTQzM2RmMGMzMDc2NDgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjI6MjU6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvNl0g
U3BlZWQgdXAgdGhlIFFXZWJQbHVnaW5JbmZvOjpzdXBwb3J0c01pbWVUeXBlKCkgZnVuY3Rpb24u
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKCkluc3RlYWQg
b2YgZ29pbmcgdGhyb3VnaCB0aGUgTUlNRSB0eXBlcyBsaXN0IGNvbnN0cnVjdGVkIHdpdGgKbWlt
ZVR5cGVzKCkgZnVuY3Rpb24sIGxvb2sgdXAgdGhlIGludGVybmFsIG1pbWVUb0Rlc2NyaXB0aW9u
cyBtYXAuCi0tLQogV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwIHwgICAxMCAr
KystLS0tLS0tCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgfCAgIDEzICsr
KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKaW5kZXggM2E3MGYwMy4uOWRk
ZTFiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAtMTQ2LDEzICsxNDYs
OSBAQCBRTGlzdDxRV2ViUGx1Z2luSW5mbzo6TWltZVR5cGU+IFFXZWJQbHVnaW5JbmZvOjptaW1l
VHlwZXMoKSBjb25zdAogKi8KIGJvb2wgUVdlYlBsdWdpbkluZm86OnN1cHBvcnRzTWltZVR5cGUo
Y29uc3QgUVN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiB7Ci0gICAgUUxpc3Q8TWltZVR5cGU+IHR5
cGVzID0gbWltZVR5cGVzKCk7Ci0gICAgZm9yZWFjaCAoY29uc3QgTWltZVR5cGUmIHR5cGUsIHR5
cGVzKSB7Ci0gICAgICAgIGlmICh0eXBlLm5hbWUgPT0gbWltZVR5cGUpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3BhY2th
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wYWNrYWdlLT5taW1lVG9E
ZXNjcmlwdGlvbnMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOGY4YmIyMC4u
YTEyOGQzNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0yLDYgKzIsMTkgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KIAorICAgICAgICBTcGVlZCB1cCB0aGUgUVdlYlBsdWdpbkluZm86OnN1cHBvcnRz
TWltZVR5cGUoKSBmdW5jdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NjUxCisgICAgICAgIAorICAgICAgICBJbnN0ZWFkIG9mIGdvaW5nIHRo
cm91Z2ggdGhlIE1JTUUgdHlwZXMgbGlzdCBjb25zdHJ1Y3RlZCB3aXRoCisgICAgICAgIG1pbWVU
eXBlcygpIGZ1bmN0aW9uLCBsb29rIHVwIHRoZSBpbnRlcm5hbCBtaW1lVG9EZXNjcmlwdGlvbnMg
bWFwLgorCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6CisgICAgICAgIChR
V2ViUGx1Z2luSW5mbzo6c3VwcG9ydHNNaW1lVHlwZSk6CisKKzIwMDktMDgtMTAgIEpha3ViIFdp
ZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKICAgICAgICAgUmVtb3ZlIHRoZSBwcml2YXRlIGNsYXNzZXMgZnJvbSBRV2Vi
UGx1Z2luRGF0YWJhc2UuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1MQogICAgICAgICAKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34655</attachid>
            <date>2009-08-12 04:50:59 -0700</date>
            <delta_ts>2009-09-05 05:26:48 -0700</delta_ts>
            <desc>Optimize the QWebPluginInfo::mimeTypes() function.</desc>
            <filename>0003-Speed-up-the-QWebPluginInfo-mimeTypes-function.patch</filename>
            <type>text/plain</type>
            <size>6934</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSA5YWNhZTlkZDU0YTZlYTg3YTk5NjU4OTc5YjZjODkwNDk3N2M2YTU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjI6NDQ6NDEgKzAyMDAKU3ViamVjdDogW1BBVENIIDMvNl0g
U3BlZWQgdXAgdGhlIFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMoKSBmdW5jdGlvbi4KIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQoKSW5zdGVhZCBvZiBjb25z
dHJ1Y3RpbmcgYSBsaXN0IG9mIE1JTUUgdHlwZXMgZXZlcnkgdGltZSBpdCBpcyBjYWxsZWQsIGRv
CnRoaXMgb25seSBvbiBjb25zdHJ1Y3Rpb24gYW5kIHJlLWFzc2lnbm1lbnQgdGltZS4KLS0tCiBX
ZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgICAgICAgICAgICAgICB8ICAgNTIg
KysrKysrKysrKystLS0tLS0tLQogV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuaCAg
ICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyMCArKysrKysrKwogLi4uL3F3ZWJwbHVnaW5kYXRhYmFz
ZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcCAgfCAgIDM2ICsrKysrKysrKysrKysrCiA0IGZp
bGVzIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcCBiL1dlYktpdC9xdC9BcGkv
cXdlYnBsdWdpbmRhdGFiYXNlLmNwcAppbmRleCA5ZGRlMWI0Li44NTg4ODlmIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKKysrIGIvV2ViS2l0L3F0L0Fw
aS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCkBAIC02Miw2ICs2Miw4IEBAIFFXZWJQbHVnaW5JbmZv
OjpRV2ViUGx1Z2luSW5mbyhQbHVnaW5QYWNrYWdlKiBwYWNrYWdlKQogewogICAgIGlmIChtX3Bh
Y2thZ2UpCiAgICAgICAgIG1fcGFja2FnZS0+cmVmKCk7CisKKyAgICBpbml0KCk7CiB9CiAKIC8q
IQpAQCAtNzIsNiArNzQsOCBAQCBRV2ViUGx1Z2luSW5mbzo6UVdlYlBsdWdpbkluZm8oY29uc3Qg
UVdlYlBsdWdpbkluZm8mIG90aGVyKQogewogICAgIGlmIChtX3BhY2thZ2UpCiAgICAgICAgIG1f
cGFja2FnZS0+cmVmKCk7CisKKyAgICBpbml0KCk7CiB9CiAKIC8qIQpAQCAtODMsNiArODcsMzAg
QEAgUVdlYlBsdWdpbkluZm86On5RV2ViUGx1Z2luSW5mbygpCiAgICAgICAgIG1fcGFja2FnZS0+
ZGVyZWYoKTsKIH0KIAordm9pZCBRV2ViUGx1Z2luSW5mbzo6aW5pdCgpCit7CisgICAgbV9taW1l
VHlwZXMuY2xlYXIoKTsKKyAgICBpZiAoIW1fcGFja2FnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBtX3Bh
Y2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOworICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOworICAgIGZvciAo
TUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0
aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTWltZVR5cGUgbWltZVR5
cGU7CisgICAgICAgIG1pbWVUeXBlLm5hbWUgPSBpdC0+Zmlyc3Q7CisgICAgICAgIG1pbWVUeXBl
LmRlc2NyaXB0aW9uID0gaXQtPnNlY29uZDsKKworICAgICAgICBRU3RyaW5nTGlzdCBmaWxlRXh0
ZW5zaW9uczsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IG1fcGFja2FnZS0+
bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lVHlwZS5uYW1lKTsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGZp
bGVFeHRlbnNpb25zLmFwcGVuZChleHRlbnNpb25zW2ldKTsKKworICAgICAgICBtaW1lVHlwZS5m
aWxlRXh0ZW5zaW9ucyA9IGZpbGVFeHRlbnNpb25zOworICAgICAgICBtX21pbWVUeXBlcy5hcHBl
bmQobWltZVR5cGUpOworICAgIH0KK30KKwogLyohCiAgICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0
aGUgcGx1Z2luLgogCkBAIC0xMTQsMjggKzE0Miw3IEBAIFFTdHJpbmcgUVdlYlBsdWdpbkluZm86
OmRlc2NyaXB0aW9uKCkgY29uc3QKICovCiBRTGlzdDxRV2ViUGx1Z2luSW5mbzo6TWltZVR5cGU+
IFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMoKSBjb25zdAogewotICAgIGlmICghbV9wYWNrYWdl
KQotICAgICAgICByZXR1cm4gUUxpc3Q8TWltZVR5cGU+KCk7Ci0KLSAgICBRTGlzdDxNaW1lVHlw
ZT4gbWltZVR5cGVzOwotICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVz
Y3JpcHRpb25zID0gbV9wYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKLSAgICBNSU1FVG9E
ZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5l
bmQoKTsKLSAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IE1pbWVUeXBlIG1pbWVUeXBlOwotICAgICAgICBtaW1lVHlwZS5uYW1lID0gaXQtPmZpcnN0Owot
ICAgICAgICBtaW1lVHlwZS5kZXNjcmlwdGlvbiA9IGl0LT5zZWNvbmQ7Ci0KLSAgICAgICAgUVN0
cmluZ0xpc3QgZmlsZUV4dGVuc2lvbnM7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lv
bnMgPSBtX3BhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZVR5cGUubmFtZSk7Ci0K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBmaWxlRXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uc1tpXSk7Ci0KLSAg
ICAgICAgbWltZVR5cGUuZmlsZUV4dGVuc2lvbnMgPSBmaWxlRXh0ZW5zaW9uczsKLSAgICAgICAg
bWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1pbWVUeXBl
czsKKyAgICByZXR1cm4gbV9taW1lVHlwZXM7CiB9CiAKIC8qIQpAQCAtMjE2LDYgKzIyMyw3IEBA
IFFXZWJQbHVnaW5JbmZvICZRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9KGNvbnN0IFFXZWJQbHVn
aW5JbmZvJiBvdGhlcikKICAgICBtX3BhY2thZ2UgPSBvdGhlci5tX3BhY2thZ2U7CiAgICAgaWYg
KG1fcGFja2FnZSkKICAgICAgICAgbV9wYWNrYWdlLT5yZWYoKTsKKyAgICBtX21pbWVUeXBlcyA9
IG90aGVyLm1fbWltZVR5cGVzOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBs
dWdpbmRhdGFiYXNlLmgKaW5kZXggN2JiOGQ2Yi4uNmNkN2Q1YyAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVn
aW5kYXRhYmFzZS5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBR
V2ViUGx1Z2luSW5mbyhXZWJDb3JlOjpQbHVnaW5QYWNrYWdlKiBwYWNrYWdlKTsKKyAgICB2b2lk
IGluaXQoKTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgUVdlYlBsdWdpbkZhY3Rvcnk6Ok1pbWVU
eXBlIE1pbWVUeXBlOwpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UGx1Z2luUGFja2FnZSogbV9wYWNrYWdlOworICAgIFFMaXN0PE1pbWVUeXBlPiBt
X21pbWVUeXBlczsKIH07CiAKIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQbHVnaW5EYXRhYmFz
ZSA6IHB1YmxpYyBRT2JqZWN0IHsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGExMjhkMzcuLjQxMDFlY2IgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMiw2ICsyLDI2
IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgU3Bl
ZWQgdXAgdGhlIFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMoKSBmdW5jdGlvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisgICAgICAgIAor
ICAgICAgICBJbnN0ZWFkIG9mIGNvbnN0cnVjdGluZyBhIGxpc3Qgb2YgTUlNRSB0eXBlcyBldmVy
eSB0aW1lIGl0IGlzIGNhbGxlZCwgZG8KKyAgICAgICAgdGhpcyBvbmx5IG9uIGNvbnN0cnVjdGlv
biBhbmQgcmUtYXNzaWdubWVudCB0aW1lLgorCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRh
YmFzZS5jcHA6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6UVdlYlBsdWdpbkluZm8pOgorICAg
ICAgICAoUVdlYlBsdWdpbkluZm86OmluaXQpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86Om1p
bWVUeXBlcyk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9KToKKyAgICAgICAg
KiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRh
dGFiYXNlL3RzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQbHVn
aW5EYXRhYmFzZTo6b3BlcmF0b3Jhc3NpZ25fZGF0YSk6CisgICAgICAgICh0c3RfUVdlYlBsdWdp
bkRhdGFiYXNlOjpvcGVyYXRvcmFzc2lnbik6CisKKzIwMDktMDgtMTAgIEpha3ViIFdpZWN6b3Jl
ayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKICAgICAgICAgU3BlZWQgdXAgdGhlIFFXZWJQbHVnaW5JbmZvOjpzdXBwb3J0c01pbWVU
eXBlKCkgZnVuY3Rpb24uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1MQogICAgICAgICAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2Vi
cGx1Z2luZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgYi9XZWJLaXQvcXQvdGVz
dHMvcXdlYnBsdWdpbmRhdGFiYXNlL3RzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCmluZGV4IGMw
NTMzYWQuLjFlZTYyMDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0
YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAtNDAsNiArNDAs
OCBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgb3BlcmF0b3JlcXVhbF9kYXRhKCk7CiAgICAg
dm9pZCBvcGVyYXRvcmVxdWFsKCk7CiAgICAgdm9pZCBwcmVmZXJyZWRQbHVnaW4oKTsKKyAgICB2
b2lkIG9wZXJhdG9yYXNzaWduX2RhdGEoKTsKKyAgICB2b2lkIG9wZXJhdG9yYXNzaWduKCk7CiB9
OwogCiB0eXBlZGVmIFFXZWJQbHVnaW5JbmZvOjpNaW1lVHlwZSBNaW1lVHlwZTsKQEAgLTM5Niw2
ICszOTgsNDAgQEAgdm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwcmVmZXJyZWRQbHVnaW4o
KQogICAgIH0KIH0KIAordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRvcmFzc2ln
bl9kYXRhKCkKK3sKKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFXZWJQbHVnaW5JbmZvPigiZmlyc3Qi
KTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFXZWJQbHVnaW5JbmZvPigic2Vjb25kIik7CisKKyAg
ICBRV2ViUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRh
YmFzZSgpOworICAgIFFUZXN0OjpuZXdSb3coIm51bGwiKSA8PCBRV2ViUGx1Z2luSW5mbygpIDw8
IFFXZWJQbHVnaW5JbmZvKCk7CisKKyAgICBRTGlzdDxRV2ViUGx1Z2luSW5mbz4gcGx1Z2lucyA9
IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAocGx1Z2lucy5j
b3VudCgpIC0gMSk7ICsraSkgeworICAgICAgICBRV2ViUGx1Z2luSW5mbyBmaXJzdCA9IHBsdWdp
bnMuYXQoaSk7CisgICAgICAgIFFXZWJQbHVnaW5JbmZvIHNlY29uZCA9IHBsdWdpbnMuYXQoaSAr
IDEpOworCisgICAgICAgIFFUZXN0OjpuZXdSb3coUVN0cmluZygiJTE9JTIiKS5hcmcoZmlyc3Qu
bmFtZSgpLCBzZWNvbmQubmFtZSgpKS50b1V0ZjgoKS5jb25zdERhdGEoKSkgPDwgZmlyc3QgPDwg
c2Vjb25kOworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRv
cmFzc2lnbigpCit7CisgICAgUUZFVENIKFFXZWJQbHVnaW5JbmZvLCBmaXJzdCk7CisgICAgUUZF
VENIKFFXZWJQbHVnaW5JbmZvLCBzZWNvbmQpOworCisgICAgUVdlYlBsdWdpbkluZm8gaW5mbzsK
KyAgICBRQ09NUEFSRShpbmZvLm1pbWVUeXBlcygpLCBRTGlzdDxNaW1lVHlwZT4oKSk7CisgICAg
UUNPTVBBUkUoaW5mbyA9IGZpcnN0LCBmaXJzdCk7CisgICAgUUNPTVBBUkUoaW5mbywgZmlyc3Qp
OworICAgIFFDT01QQVJFKGluZm8ubWltZVR5cGVzKCksIGZpcnN0Lm1pbWVUeXBlcygpKTsKKyAg
ICBRQ09NUEFSRShpbmZvID0gc2Vjb25kLCBzZWNvbmQpOworICAgIFFDT01QQVJFKGluZm8sIHNl
Y29uZCk7CisgICAgUUNPTVBBUkUoaW5mby5taW1lVHlwZXMoKSwgc2Vjb25kLm1pbWVUeXBlcygp
KTsKKyAgICBRQ09NUEFSRShpbmZvID0gUVdlYlBsdWdpbkluZm8oKSwgUVdlYlBsdWdpbkluZm8o
KSk7CisgICAgUUNPTVBBUkUoaW5mby5taW1lVHlwZXMoKSwgUUxpc3Q8TWltZVR5cGU+KCkpOwor
fQorCiBRVEVTVF9NQUlOKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2UpCiAKICNpbmNsdWRlICJ0c3Rf
cXdlYnBsdWdpbmRhdGFiYXNlLm1vYyIKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="18805"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34656</attachid>
            <date>2009-08-12 04:53:44 -0700</date>
            <delta_ts>2009-08-15 08:36:34 -0700</delta_ts>
            <desc>Move the PluginDatabase::setPluginDirectories() function definition out of the header.</desc>
            <filename>0004-Move-the-PluginDatabase-setPluginDirectories-functio.patch</filename>
            <type>text/plain</type>
            <size>3021</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSAzNjg1MzY1NGFhYjAwYzIyM2VjYzYwMGI4NjdiYjAxZDYzMTBlZmE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjM6MTY6MTIgKzAyMDAKU3ViamVjdDogW1BBVENIIDQvNl0g
TW92ZSB0aGUgUGx1Z2luRGF0YWJhc2U6OnNldFBsdWdpbkRpcmVjdG9yaWVzKCkgZnVuY3Rpb24g
ZGVmaW5pdGlvbiBvdXQKIG9mIHRoZSBQbHVnaW5EYXRhYmFzZS5oIGhlYWRlci4KIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQoKLS0tCiBXZWJDb3JlL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgIHwgICAxMiArKysrKysrKysrKysKIFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHAgfCAgICA2ICsrKysrKwogV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmggICB8ICAgIDkgKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDIwIGluc2Vy
dGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OWI2YjVjLi40Y2JhY2VmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDA5LTA4LTEwICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIFBsdWdp
bkRhdGFiYXNlOjpzZXRQbHVnaW5EaXJlY3RvcmllcygpIGZ1bmN0aW9uIGRlZmluaXRpb24gb3V0
CisgICAgICAgIG9mIHRoZSBQbHVnaW5EYXRhYmFzZS5oIGhlYWRlci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
OjpzZXRQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5oOgorCiAyMDA5LTA4LTEwICBBbmR5IFNoYXcgPGFuZHkuc2hhd0Bub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcAppbmRleCAyOTkwODM2Li5mMTIzZjYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAKQEAgLTM3OCw2ICszNzgsMTIgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRl
ZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiAgICAgcmV0dXJuIHBhdGhzOwogfQogCit2b2lkIFBs
dWdpbkRhdGFiYXNlOjpzZXRQbHVnaW5EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZGlyZWN0b3JpZXMpCit7CisgICAgY2xlYXIoKTsKKyAgICBtX3BsdWdpbkRpcmVjdG9yaWVzID0g
ZGlyZWN0b3JpZXM7Cit9CisKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmlzUHJlZmVycmVkUGx1Z2lu
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgcHJlZmVycmVkUGF0
aCA9IGhvbWVEaXJlY3RvcnlQYXRoKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IGY4
ODRiNTkuLmY3ZTQ1MDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5oCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCkBAIC01Nyw3ICs1Nyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVhcigpOwogICAgICAgICBW
ZWN0b3I8UGx1Z2luUGFja2FnZSo+IHBsdWdpbnMoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc01J
TUVUeXBlUmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICAgICAgdm9pZCBh
ZGRFeHRyYVBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMg
Ym9vbCBpc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7
CiAgICAgICAgIHN0YXRpYyBpbnQgcHJlZmVycmVkUGx1Z2luQ29tcGFyZShjb25zdCB2b2lkKiwg
Y29uc3Qgdm9pZCopOwpAQCAtNjYsMTQgKzY1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CiAgICAgICAgIHZvaWQgc2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgUGx1Z2luUGFja2FnZSogcGx1Z2luKTsKIAotICAgICAgICB2b2lk
IHNldFBsdWdpbkRpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykK
LSAgICAgICAgewotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgICAgIG1fcGx1Z2luRGly
ZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKLSAgICAgICAgfQotCiAgICAgICAgIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKTsKICAgICAgICAgVmVjdG9yPFN0
cmluZz4gcGx1Z2luRGlyZWN0b3JpZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRpcmVjdG9y
aWVzOyB9CisgICAgICAgIHZvaWQgc2V0UGx1Z2luRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRpcmVjdG9yaWVzKTsKKyAgICAgICAgdm9pZCBhZGRFeHRyYVBsdWdpbkRpcmVjdG9y
eShjb25zdCBTdHJpbmcmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZ2V0UGx1Z2lu
UGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0OwotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34896</attachid>
            <date>2009-08-15 08:32:53 -0700</date>
            <delta_ts>2009-09-06 01:51:11 -0700</delta_ts>
            <desc>Add arePathsEqual() function to the FileSystem files.</desc>
            <filename>0001-Add-arePathsEqual-function-to-the-FileSystem-files.patch</filename>
            <type>text/plain</type>
            <size>7353</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSBiMDljYzlhZjk2M2I2MjEyN2JmOTU1NDk4NTAwYWFiNmY3MmU3YTEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFNhdCwgMTUgQXVnIDIwMDkgMTg6NTk6MDUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBBZGQg
YXJlUGF0aHNFcXVhbCgpIGZ1bmN0aW9uIHRvIHRoZSBGaWxlU3lzdGVtIGZpbGVzLgogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCgpJbXBsZW1lbnQgdGhlIGZ1
bmN0aW9uIGZvciB0aGUgUXQgcG9ydC4KClRoZSBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBub3Jt
YWxpemUgdGhlIHBhdGhzIGJlZm9yZSBjb21wYXJpbmcgdGhlbSwKZS5nLiByZW1vdmUgYSB0cmFp
bGluZyBzbGFzaCwgcmVzb2x2ZSByZWxhdGl2ZSBwYXRocyBzdWNoIGFzCi9mb28vYmFyLy4uL2Jh
eiwgdW5pZnkgZGlyZWN0b3J5IHNlcGFyYXRvcnMuIEl0IGRvZXNuJ3QgaGF2ZSB0byByZXNvbHZl
CnN5bWJvbGljIGxpbmtzLiBPdGhlciBwb3J0cyBzaG91bGQgaW1wbGVtZW50IGl0LCBvdGhlcndp
c2UgdGhleSBjb3VsZApzdWZmZXIgZnJvbSBlZGdlIGNhc2VzIGJ1Z3MgaW4gUGx1Z2luRGF0YWJh
c2UsIHRoYXQgd2lsbCBtYWtlIHVzZSBvZiBpdC4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMxICsrKysrKysrKysrKysrKysrKysrKysK
IFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIHwgICAg
NiArKysrCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcCAgICAgICAgICAg
fCAgICA2ICsrKysKIFdlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCAg
ICAgICB8ICAgIDYgKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwICAg
ICAgICAgICAgIHwgICAgNiArKystCiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcCAgICAgICAgICAgfCAgICA2ICsrKysKIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5
c3RlbVdpbmNlLmNwcCAgICAgICB8ICAgIDYgKysrKwogV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxl
U3lzdGVtV3guY3BwICAgICAgICAgICAgIHwgICAgNiArKysrCiA5IGZpbGVzIGNoYW5nZWQsIDcz
IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlOTBjMjMzLi4zZjVhZGM2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDA5LTA4LTE1ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhcmVQ
YXRoc0VxdWFsKCkgZnVuY3Rpb24gdG8gdGhlIEZpbGVTeXN0ZW0gZmlsZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQorCisgICAgICAgIElt
cGxlbWVudCB0aGUgZnVuY3Rpb24gZm9yIHRoZSBRdCBwb3J0LgorCisgICAgICAgIFRoZSBmdW5j
dGlvbiBpcyBzdXBwb3NlZCB0byBub3JtYWxpemUgdGhlIHBhdGhzIGJlZm9yZSBjb21wYXJpbmcg
dGhlbSwKKyAgICAgICAgZS5nLiByZW1vdmUgYSB0cmFpbGluZyBzbGFzaCwgcmVzb2x2ZSByZWxh
dGl2ZSBwYXRocyBzdWNoIGFzCisgICAgICAgIC9mb28vYmFyLy4uL2JheiwgdW5pZnkgZGlyZWN0
b3J5IHNlcGFyYXRvcnMuIEl0IGRvZXNuJ3QgaGF2ZSB0byByZXNvbHZlCisgICAgICAgIHN5bWJv
bGljIGxpbmtzLiBPdGhlciBwb3J0cyBzaG91bGQgaW1wbGVtZW50IGl0LCBvdGhlcndpc2UgdGhl
eSBjb3VsZAorICAgICAgICBzdWZmZXIgZnJvbSBlZGdlIGNhc2VzIGJ1Z3MgaW4gUGx1Z2luRGF0
YWJhc2UsIHRoYXQgd2lsbCBtYWtlIHVzZSBvZiBpdC4KKworICAgICAgICAqIHBsYXRmb3JtL0Zp
bGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlUGF0aHNFcXVhbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlUGF0aHNF
cXVhbCk6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFyZVBhdGhzRXF1YWwpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Zp
bGVTeXN0ZW1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmVQYXRoc0VxdWFsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cmVQYXRoc0VxdWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlUGF0aHNFcXVhbCk6CisgICAgICAgICogcGxhdGZv
cm0vd3gvRmlsZVN5c3RlbVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZVBhdGhzRXF1YWwp
OgorCiAyMDA5LTA4LTE1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgK
aW5kZXggZTIzYjZkYS4uM2ZhNDM1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3lzdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE0Miw2ICsx
NDIsNyBAQCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogU3Ry
aW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CiBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0
cmluZyYpOwogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJik7Citib29sIGFyZVBh
dGhzRXF1YWwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKIFZlY3RvcjxTdHJpbmc+
IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9
IFN0cmluZygpKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxl
U3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVt
Q2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLmJlOTY0MDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQgKzc3LDEwIEBA
IGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENocm9taXVt
QnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitib29sIGFyZVBhdGhzRXF1YWwoY29uc3Qg
U3RyaW5nJiBmaXJzdCwgY29uc3QgU3RyaW5nJiBzZWNvbmQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmlyc3QgPT0gc2Vjb25kOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCmluZGV4IGZjZGM4NjMu
LmJlYzAwZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCkBAIC0xOTks
NiArMTk5LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsKIH0KIAorYm9vbCBhcmVQ
YXRoc0VxdWFsKGNvbnN0IFN0cmluZyYgZmlyc3QsIGNvbnN0IFN0cmluZyYgc2Vjb25kKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZpcnN0ID09IHNlY29uZDsKK30KKwog
VmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZGExMjRhOC4uZGQ3YjMxOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTU3LDYg
KzE1NywxMiBAQCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
cmV0dXJuIGRpcm5hbWUoZnNSZXAubXV0YWJsZURhdGEoKSk7CiB9CiAKK2Jvb2wgYXJlUGF0aHNF
cXVhbChjb25zdCBTdHJpbmcmIGZpcnN0LCBjb25zdCBTdHJpbmcmIHNlY29uZCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7Cit9CisKIC8vIE9L
IHRvIG5vdCBpbXBsZW1lbnQgbGlzdERpcmVjdG9yeSBhdCB0aGUgbW9tZW50LCBiZWNhdXNlIGl0
J3Mgb25seSB1c2VkIGZvciBwbHVnLWlucywgYW5kCiAvLyBhbGwgcGxhdGZvcm1zIHRoYXQgdXNl
IHRoZSBzaGFyZWQgcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbiBoYXZlIGltcGxlbWVudGF0aW9ucy4g
V2UnZCBuZWVkCiAvLyB0byBpbXBsZW1lbnQgaXQgaWYgd2Ugd2FudGVkIHRvIHVzZSBQbHVnaW5E
YXRhYmFzZS5jcHAgb24gdGhlIE1hYy4gQmV0dGVyIHRvIG5vdCBpbXBsZW1lbnQKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vcXQvRmlsZVN5c3RlbVF0LmNwcAppbmRleCAwMmJjNjc4Li5kYTdiMjBhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCkBAIC00OSw3ICs0OSw2IEBAIGJvb2wgZmlsZUV4aXN0
cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIFFGaWxlOjpleGlzdHMocGF0aCk7CiB9
CiAKLQogYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4g
UUZpbGU6OnJlbW92ZShwYXRoKTsKQEAgLTk5LDYgKzk4LDExIEBAIFN0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nKFFGaWxlSW5mbyhwYXRo
KS5hYnNvbHV0ZVBhdGgoKSk7CiB9CiAKK2Jvb2wgYXJlUGF0aHNFcXVhbChjb25zdCBTdHJpbmcm
IGZpcnN0LCBjb25zdCBTdHJpbmcmIHNlY29uZCkKK3sKKyAgICByZXR1cm4gUURpcjo6Y2xlYW5Q
YXRoKGZpcnN0KSA9PSBRRGlyOjpjbGVhblBhdGgoc2Vjb25kKTsKK30KKwogVmVjdG9yPFN0cmlu
Zz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVy
KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCmluZGV4IGE2NzZmODcuLjc5Nzk1NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0xMzksNiArMTM5LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZGlyTmFtZTsKIH0KIAorYm9vbCBh
cmVQYXRoc0VxdWFsKGNvbnN0IFN0cmluZyYgZmlyc3QsIGNvbnN0IFN0cmluZyYgc2Vjb25kKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZpcnN0ID09IHNlY29uZDsKK30K
Kwogc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbmNl
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbmNlLmNwcAppbmRleCAy
YmI0ZGQ1Li5kYzUwMzY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVT
eXN0ZW1XaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2lu
Y2UuY3BwCkBAIC0xNjgsNiArMTY4LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK2Jvb2wgYXJlUGF0aHNFcXVh
bChjb25zdCBTdHJpbmcmIGZpcnN0LCBjb25zdCBTdHJpbmcmIHNlY29uZCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7Cit9CisKIENTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciosIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9G
aWxlU3lzdGVtV3guY3BwCmluZGV4IDdkZTQyNWUuLjAyNWY2NTggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4
L0ZpbGVTeXN0ZW1XeC5jcHAKQEAgLTk3LDYgKzk3LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK2Jvb2wgYXJl
UGF0aHNFcXVhbChjb25zdCBTdHJpbmcmIGZpcnN0LCBjb25zdCBTdHJpbmcmIHNlY29uZCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7Cit9CisK
IENTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciogcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34899</attachid>
            <date>2009-08-15 09:06:23 -0700</date>
            <delta_ts>2009-09-06 02:23:52 -0700</delta_ts>
            <desc>Don&apos;t clear the plugin database when changing search paths.</desc>
            <filename>0001-Don-t-clear-the-plugin-database-when-changing-search.patch</filename>
            <type>text/plain</type>
            <size>5221</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSAzNjc4Mzc1MzkxNTI2ZjgyNGIyMzk4N2QzYzk2MTg0N2Y4NTY3OTkxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFNhdCwgMTUgQXVnIDIwMDkgMjA6MDE6NDAgKzAyMDAKU3ViamVjdDogW1BBVENIXSBEb24n
dCBjbGVhciB0aGUgcGx1Z2luIGRhdGFiYXNlIHdoZW4gY2hhbmdpbmcgc2VhcmNoIHBhdGhzLgog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCgpSYXRoZXIgdGhh
biBjbGVhcmluZyB0aGUgcGx1Z2luIGRhdGFiYXNlIGFmdGVyIHNldHRpbmcgYSBuZXcgc2V0IG9m
CnNlYXJjaCBwYXRocywgbGV0IHRoZSByZWZyZXNoKCkgbWV0aG9kIHRha2UgY2FyZSBvZiB0aGUg
cGx1Z2lucyB0aGF0IGFyZQpubyBsb25nZXIgbG9jYXRlZCBpbiB0aGUgc2VhcmNoIHBhdGhzIGFu
ZCB0aHVzIHNob3VsZCBub3QgYmUgdGFrZW4gaW50bwphY2NvdW50IGFueSBtb3JlLgotLS0KIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysrKysrKysrKysrKysr
KysrCiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIHwgICAyNCArKysrKysrKysr
KysrKysrKysrKystLS0KIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oICAgfCAgICA5
ICsrKy0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggM2Y1YWRjNi4uNzJiZjZlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNiBAQAogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIERvbid0IGNsZWFyIHRoZSBwbHVnaW4gZGF0
YWJhc2Ugd2hlbiBjaGFuZ2luZyBzZWFyY2ggcGF0aHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQorCisgICAgICAgIFJhdGhlciB0aGFuIGNs
ZWFyaW5nIHRoZSBwbHVnaW4gZGF0YWJhc2UgYWZ0ZXIgc2V0dGluZyBhIG5ldyBzZXQgb2YKKyAg
ICAgICAgc2VhcmNoIHBhdGhzLCBsZXQgdGhlIHJlZnJlc2goKSBtZXRob2QgdGFrZSBjYXJlIG9m
IHRoZSBwbHVnaW5zIHRoYXQgYXJlCisgICAgICAgIG5vIGxvbmdlciBsb2NhdGVkIGluIHRoZSBz
ZWFyY2ggcGF0aHMgYW5kIHRodXMgc2hvdWxkIG5vdCBiZSB0YWtlbiBpbnRvCisgICAgICAgIGFj
Y291bnQgYW55IG1vcmUuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjpjb250YWluc1BsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5EYXRhYmFzZTo6c2V0UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luRGF0YWJhc2U6OmlzUHJlZmVycmVkUGx1Z2luRGlyZWN0b3J5KToKKyAgICAg
ICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6CisKKzIwMDktMDgtMTUgIEpha3ViIFdpZWN6
b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKICAgICAgICAgQWRkIGFyZVBhdGhzRXF1YWwoKSBmdW5jdGlvbiB0byB0aGUgRmls
ZVN5c3RlbSBmaWxlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NjUxCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDI5OTA4MzYu
LjIxZTQxZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
KysrIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMjcxLDcgKzI3MSw3
IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYgcGx1
Z2lucykgY29uc3QKIHsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1
Z2lucy5lbmQoKTsKICAgICBmb3IgKFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Bs
dWdpbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0
cygoKml0KS0+cGF0aCgpKSkKKyAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCgqaXQpLT5wYXRoKCkp
IHx8ICFjb250YWluc1BsdWdpbkRpcmVjdG9yeSgoKml0KS0+cGFyZW50RGlyZWN0b3J5KCkpKQog
ICAgICAgICAgICAgcGx1Z2lucy5hZGQoKml0KTsKICAgICB9CiB9CkBAIC0yODEsNiArMjgxLDcg
QEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6YWRkKFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gcHJw
UGFja2FnZSkKICAgICBBU1NFUlRfQVJHKHBycFBhY2thZ2UsIHBycFBhY2thZ2UpOwogCiAgICAg
UmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBwcnBQYWNrYWdlOworICAgIEFTU0VSVChj
b250YWluc1BsdWdpbkRpcmVjdG9yeShwYWNrYWdlLT5wYXJlbnREaXJlY3RvcnkoKSkpOwogCiAg
ICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UpLnNlY29uZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzAzLDYgKzMwNCwxOSBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpyZW1vdmUoUGx1
Z2luUGFja2FnZSogcGFja2FnZSkKICAgICBtX3BsdWdpbnNCeVBhdGgucmVtb3ZlKHBhY2thZ2Ut
PnBhdGgoKSk7CiB9CiAKK2Jvb2wgUGx1Z2luRGF0YWJhc2U6OmNvbnRhaW5zUGx1Z2luRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVnaW4oKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5l
bmQoKTsKKworICAgIGZvciAoIDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChhcmVQ
YXRoc0VxdWFsKCppdCwgZGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBQbHVnaW5EYXRhYmFzZTo6Y2xlYXIo
KQogewogICAgIG1fcGx1Z2lucy5jbGVhcigpOwpAQCAtMzEyLDYgKzMyNiwxMSBAQCB2b2lkIFBs
dWdpbkRhdGFiYXNlOjpjbGVhcigpCiAgICAgbV9wcmVmZXJyZWRQbHVnaW5zLmNsZWFyKCk7CiB9
CiAKK3ZvaWQgUGx1Z2luRGF0YWJhc2U6OnNldFBsdWdpbkRpcmVjdG9yaWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKK3sKKyAgICBtX3BsdWdpbkRpcmVjdG9yaWVzID0gZGly
ZWN0b3JpZXM7Cit9CisKICNpZiAhUExBVEZPUk0oV0lOX09TKSB8fCBQTEFURk9STShXWCkKIC8v
IEZvciBTYWZhcmkvV2luIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50
ZWQKIC8vIGluIFBsdWdpbkRhdGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29y
ZSBjb25zdHJ1Y3RzCkBAIC0zOTAsOCArNDA5LDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6aXNQ
cmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHByZWZlcnJl
ZFBhdGguYXBwZW5kKFN0cmluZygiXFxBcHBsaWNhdGlvbiBEYXRhXFxNb3ppbGxhXFxwbHVnaW5z
IikpOwogI2VuZGlmCiAKLSAgICAvLyBUT0RPOiBXZSBzaG91bGQgbm9ybWFsaXplIHRoZSBwYXRo
IGJlZm9yZSBkb2luZyBhIGNvbXBhcmlzb24uCi0gICAgcmV0dXJuIHBhdGggPT0gcHJlZmVycmVk
UGF0aDsKKyAgICByZXR1cm4gYXJlUGF0aHNFcXVhbChwYXRoLCBwcmVmZXJyZWRQYXRoKTsKIH0K
IAogdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hT
ZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IGY4
ODRiNTkuLmM2Y2M1MzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5oCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCkBAIC02NiwxMiArNjYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbkZv
ck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgICAgICB2b2lkIHNldFByZWZl
cnJlZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBsdWdpblBhY2th
Z2UqIHBsdWdpbik7CiAKLSAgICAgICAgdm9pZCBzZXRQbHVnaW5EaXJlY3Rvcmllcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFy
KCk7Ci0gICAgICAgICAgICBtX3BsdWdpbkRpcmVjdG9yaWVzID0gZGlyZWN0b3JpZXM7Ci0gICAg
ICAgIH0KLQorICAgICAgICB2b2lkIHNldFBsdWdpbkRpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkaXJlY3Rvcmllcyk7CiAgICAgICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBkZWZh
dWx0UGx1Z2luRGlyZWN0b3JpZXMoKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luRGly
ZWN0b3JpZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRpcmVjdG9yaWVzOyB9CiAKQEAgLTgz
LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGFkZChQYXNzUmVm
UHRyPFBsdWdpblBhY2thZ2U+KTsKICAgICAgICAgdm9pZCByZW1vdmUoUGx1Z2luUGFja2FnZSop
OwogCisgICAgICAgIGJvb2wgY29udGFpbnNQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpIGNvbnN0OworCiAgICAgICAgIFN0cmluZyBNSU1FVHlwZUZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikgY29uc3Q7CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
bV9wbHVnaW5EaXJlY3RvcmllczsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39110</attachid>
            <date>2009-09-05 04:53:23 -0700</date>
            <delta_ts>2009-09-05 04:59:59 -0700</delta_ts>
            <desc>Remove the private classes from QWebPluginDatabase.</desc>
            <filename>0001-Remove-the-private-classes-from-QWebPluginDatabase.patch</filename>
            <type>text/plain</type>
            <size>11325</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSBhMDNlZWZlZTk5YmU1MGZmZTU2NDI4Y2E5YzhlMWUyNDJkYTg2MGIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjI6MDY6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIXSBSZW1v
dmUgdGhlIHByaXZhdGUgY2xhc3NlcyBmcm9tIFFXZWJQbHVnaW5EYXRhYmFzZS4KIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQoKSW5zdGVhZCwgaG9sZCB0aGUg
UGx1Z2luRGF0YWJhc2UgYW5kIFBsdWdpblBhY2thZ2Ugb2JqZWN0cyBhcyBjbGFzcwptZW1iZXJz
IGFuZCB0YWtlIGNhcmUgb2YgcmVmY291bnRpbmcgb24gb3VyIG93biBpbnN0ZWFkIG9mIHVzaW5n
IFJlZlB0ci4KClRoaXMgd2F5IHdlIG5vdCBvbmx5IG1hZGUgdGhlIGNvZGUgY2xlYW5lciBidXQg
YWxzbyBnb3QgcmlkIG9mCnJlZHVuZGFudCBhbGxvY2F0aW9ucyB3aGVuIGNvbnN0cnVjdGluZyBu
dWxsIFFXZWJQbHVnaW5JbmZvIG9iamVjdHMuCgpUaGUgcHJpdmF0ZSBjbGFzc2VzIGhhdmUgYmVl
biBmb3J3YXJkLWRlY2xhcmVkIGFuZCB0aGUgZC1wb2ludGVycyBsZWZ0CnRvIGJlIG9uIHRoZSBz
YWZlIHNpZGUuCi0tLQogV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwIHwgICA4
NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIFdlYktpdC9xdC9BcGkvcXdlYnBs
dWdpbmRhdGFiYXNlLmggICB8ICAgIDkgKystCiBXZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRh
YmFzZV9wLmggfCAgIDQ2IC0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0NyBp
bnNlcnRpb25zKCspLCA5MiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBXZWJLaXQv
cXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmgKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBp
L3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFz
ZS5jcHAKaW5kZXggODc1OGM2MC4uM2E3MGYwMyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9x
d2VicGx1Z2luZGF0YWJhc2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFi
YXNlLmNwcApAQCAtMTksNyArMTksNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAicXdlYnBsdWdpbmRhdGFiYXNlLmgiCi0jaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlX3Au
aCIKIAogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2Fn
ZS5oIgpAQCAtMzIsMTYgKzMxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgXGJy
aWVmIFJlcHJlc2VudHMgYSBzaW5nbGUgTUlNRSB0eXBlIHN1cHBvcnRlZCBieSBhIHBsdWdpbi4K
ICovCiAKLVFXZWJQbHVnaW5JbmZvUHJpdmF0ZTo6UVdlYlBsdWdpbkluZm9Qcml2YXRlKFJlZlB0
cjxQbHVnaW5QYWNrYWdlPiBwbHVnaW5QYWNrYWdlKQotICAgIDogcGx1Z2luKHBsdWdpblBhY2th
Z2UpCi17Ci19Ci0KLVFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGU6OlFXZWJQbHVnaW5EYXRhYmFz
ZVByaXZhdGUoUGx1Z2luRGF0YWJhc2UqIHBsdWdpbkRhdGFiYXNlKQotICAgIDogZGF0YWJhc2Uo
cGx1Z2luRGF0YWJhc2UpCi17Ci19Ci0KIC8qIQogICAgIFxjbGFzcyBRV2ViUGx1Z2luSW5mbwog
ICAgIFxzaW5jZSA0LjYKQEAgLTY0LDIxICs1MywyNSBAQCBRV2ViUGx1Z2luRGF0YWJhc2VQcml2
YXRlOjpRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlKFBsdWdpbkRhdGFiYXNlKiBwbHVnaW5EYXRh
YgogICAgIENvbnN0cnVjdHMgYSBudWxsIFFXZWJQbHVnaW5JbmZvLgogKi8KIFFXZWJQbHVnaW5J
bmZvOjpRV2ViUGx1Z2luSW5mbygpCi0gICAgOiBkKG5ldyBRV2ViUGx1Z2luSW5mb1ByaXZhdGUo
MCkpCisgICAgOiBtX3BhY2thZ2UoMCkKIHsKIH0KIAotUVdlYlBsdWdpbkluZm86OlFXZWJQbHVn
aW5JbmZvKFBsdWdpblBhY2thZ2UqIHBsdWdpbikKLSAgICA6IGQobmV3IFFXZWJQbHVnaW5JbmZv
UHJpdmF0ZShwbHVnaW4pKQorUVdlYlBsdWdpbkluZm86OlFXZWJQbHVnaW5JbmZvKFBsdWdpblBh
Y2thZ2UqIHBhY2thZ2UpCisgICAgOiBtX3BhY2thZ2UocGFja2FnZSkKIHsKKyAgICBpZiAobV9w
YWNrYWdlKQorICAgICAgICBtX3BhY2thZ2UtPnJlZigpOwogfQogCiAvKiEKICAgICBDb250cnVj
dHMgYSBjb3B5IG9mIFxhIG90aGVyLgogKi8KIFFXZWJQbHVnaW5JbmZvOjpRV2ViUGx1Z2luSW5m
byhjb25zdCBRV2ViUGx1Z2luSW5mbyYgb3RoZXIpCi0gICAgOiBkKG5ldyBRV2ViUGx1Z2luSW5m
b1ByaXZhdGUob3RoZXIuZC0+cGx1Z2luKSkKKyAgICA6IG1fcGFja2FnZShvdGhlci5tX3BhY2th
Z2UpCiB7CisgICAgaWYgKG1fcGFja2FnZSkKKyAgICAgICAgbV9wYWNrYWdlLT5yZWYoKTsKIH0K
IAogLyohCkBAIC04Niw3ICs3OSw4IEBAIFFXZWJQbHVnaW5JbmZvOjpRV2ViUGx1Z2luSW5mbyhj
b25zdCBRV2ViUGx1Z2luSW5mbyYgb3RoZXIpCiAqLwogUVdlYlBsdWdpbkluZm86On5RV2ViUGx1
Z2luSW5mbygpCiB7Ci0gICAgZGVsZXRlIGQ7CisgICAgaWYgKG1fcGFja2FnZSkKKyAgICAgICAg
bV9wYWNrYWdlLT5kZXJlZigpOwogfQogCiAvKiEKQEAgLTk2LDkgKzkwLDkgQEAgUVdlYlBsdWdp
bkluZm86On5RV2ViUGx1Z2luSW5mbygpCiAqLwogUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6bmFt
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFkLT5wbHVnaW4pCisgICAgaWYgKCFtX3BhY2thZ2UpCiAg
ICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGQtPnBsdWdpbi0+bmFtZSgpOwor
ICAgIHJldHVybiBtX3BhY2thZ2UtPm5hbWUoKTsKIH0KIAogLyohCkBAIC0xMDgsOSArMTAyLDkg
QEAgUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6bmFtZSgpIGNvbnN0CiAqLwogUVN0cmluZyBRV2Vi
UGx1Z2luSW5mbzo6ZGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIGlmICghZC0+cGx1Z2luKQor
ICAgIGlmICghbV9wYWNrYWdlKQogICAgICAgICByZXR1cm4gUVN0cmluZygpOwotICAgIHJldHVy
biBkLT5wbHVnaW4tPmRlc2NyaXB0aW9uKCk7CisgICAgcmV0dXJuIG1fcGFja2FnZS0+ZGVzY3Jp
cHRpb24oKTsKIH0KIAogLyohCkBAIC0xMjAsMTEgKzExNCwxMSBAQCBRU3RyaW5nIFFXZWJQbHVn
aW5JbmZvOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAqLwogUUxpc3Q8UVdlYlBsdWdpbkluZm86Ok1p
bWVUeXBlPiBRV2ViUGx1Z2luSW5mbzo6bWltZVR5cGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIWQt
PnBsdWdpbikKKyAgICBpZiAoIW1fcGFja2FnZSkKICAgICAgICAgcmV0dXJuIFFMaXN0PE1pbWVU
eXBlPigpOwogCiAgICAgUUxpc3Q8TWltZVR5cGU+IG1pbWVUeXBlczsKLSAgICBjb25zdCBNSU1F
VG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0aW9ucyA9IGQtPnBsdWdpbi0+bWltZVRv
RGVzY3JpcHRpb25zKCk7CisgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9E
ZXNjcmlwdGlvbnMgPSBtX3BhY2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOwogICAgIE1JTUVU
b0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25z
LmVuZCgpOwogICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgTWltZVR5cGUgbWltZVR5cGU7CkBAIC0xMzIsNyArMTI2LDcgQEAgUUxpc3Q8UVdlYlBsdWdp
bkluZm86Ok1pbWVUeXBlPiBRV2ViUGx1Z2luSW5mbzo6bWltZVR5cGVzKCkgY29uc3QKICAgICAg
ICAgbWltZVR5cGUuZGVzY3JpcHRpb24gPSBpdC0+c2Vjb25kOwogCiAgICAgICAgIFFTdHJpbmdM
aXN0IGZpbGVFeHRlbnNpb25zOwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0g
ZC0+cGx1Z2luLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWVUeXBlLm5hbWUpOworICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gbV9wYWNrYWdlLT5taW1lVG9FeHRlbnNpb25z
KCkuZ2V0KG1pbWVUeXBlLm5hbWUpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBleHRlbnNpb25zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgZmlsZUV4dGVuc2lvbnMuYXBw
ZW5kKGV4dGVuc2lvbnNbaV0pOwpAQCAtMTY2LDkgKzE2MCw5IEBAIGJvb2wgUVdlYlBsdWdpbklu
Zm86OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgUVN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiAqLwog
UVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6cGF0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFkLT5wbHVn
aW4pCisgICAgaWYgKCFtX3BhY2thZ2UpCiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIGQtPnBsdWdpbi0+cGF0aCgpOworICAgIHJldHVybiBtX3BhY2thZ2UtPnBhdGgoKTsK
IH0KIAogLyohCkBAIC0xNzYsNyArMTcwLDcgQEAgUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6cGF0
aCgpIGNvbnN0CiAqLwogYm9vbCBRV2ViUGx1Z2luSW5mbzo6aXNOdWxsKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gIWQtPnBsdWdpbjsKKyAgICByZXR1cm4gIW1fcGFja2FnZTsKIH0KIAogLyohCkBA
IC0xODksOSArMTgzLDkgQEAgYm9vbCBRV2ViUGx1Z2luSW5mbzo6aXNOdWxsKCkgY29uc3QKICov
CiB2b2lkIFFXZWJQbHVnaW5JbmZvOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBp
ZiAoIWQtPnBsdWdpbikKKyAgICBpZiAoIW1fcGFja2FnZSkKICAgICAgICAgcmV0dXJuOwotICAg
IGQtPnBsdWdpbi0+c2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICBtX3BhY2thZ2UtPnNldEVuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKIC8qIQpAQCAtMjAxLDE5ICsxOTUsMTkgQEAgdm9pZCBRV2ViUGx1
Z2luSW5mbzo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAqLwogYm9vbCBRV2ViUGx1Z2luSW5m
bzo6aXNFbmFibGVkKCkgY29uc3QKIHsKLSAgICBpZiAoIWQtPnBsdWdpbikKKyAgICBpZiAoIW1f
cGFja2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBkLT5wbHVnaW4tPmlz
RW5hYmxlZCgpOworICAgIHJldHVybiBtX3BhY2thZ2UtPmlzRW5hYmxlZCgpOwogfQogCiBib29s
IFFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj09KGNvbnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikg
Y29uc3QKIHsKLSAgICByZXR1cm4gZC0+cGx1Z2luID09IG90aGVyLmQtPnBsdWdpbjsKKyAgICBy
ZXR1cm4gbV9wYWNrYWdlID09IG90aGVyLm1fcGFja2FnZTsKIH0KIAogYm9vbCBRV2ViUGx1Z2lu
SW5mbzo6b3BlcmF0b3IhPShjb25zdCBRV2ViUGx1Z2luSW5mbyYgb3RoZXIpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGQtPnBsdWdpbiAhPSBvdGhlci5kLT5wbHVnaW47CisgICAgcmV0dXJuIG1fcGFj
a2FnZSAhPSBvdGhlci5tX3BhY2thZ2U7CiB9CiAKIFFXZWJQbHVnaW5JbmZvICZRV2ViUGx1Z2lu
SW5mbzo6b3BlcmF0b3I9KGNvbnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikKQEAgLTIyMSw3ICsy
MTUsMTIgQEAgUVdlYlBsdWdpbkluZm8gJlFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj0oY29uc3Qg
UVdlYlBsdWdpbkluZm8mIG90aGVyKQogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCi0gICAgZC0+cGx1Z2luID0gb3RoZXIuZC0+cGx1Z2luOworICAgIGlm
IChtX3BhY2thZ2UpCisgICAgICAgIG1fcGFja2FnZS0+ZGVyZWYoKTsKKyAgICBtX3BhY2thZ2Ug
PSBvdGhlci5tX3BhY2thZ2U7CisgICAgaWYgKG1fcGFja2FnZSkKKyAgICAgICAgbV9wYWNrYWdl
LT5yZWYoKTsKKwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtMjUzLDEzICsyNTIsMTIgQEAg
UVdlYlBsdWdpbkluZm8gJlFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdp
bkluZm8mIG90aGVyKQogCiBRV2ViUGx1Z2luRGF0YWJhc2U6OlFXZWJQbHVnaW5EYXRhYmFzZShR
T2JqZWN0KiBwYXJlbnQpCiAgICAgOiBRT2JqZWN0KHBhcmVudCkKLSAgICAsIGQobmV3IFFXZWJQ
bHVnaW5EYXRhYmFzZVByaXZhdGUoUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKSkp
CisgICAgLCBtX2RhdGFiYXNlKFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCkpCiB7
CiB9CiAKIFFXZWJQbHVnaW5EYXRhYmFzZTo6flFXZWJQbHVnaW5EYXRhYmFzZSgpCiB7Ci0gICAg
ZGVsZXRlIGQ7CiB9CiAKIC8qIQpAQCAtMjczLDcgKzI3MSw3IEBAIFFXZWJQbHVnaW5EYXRhYmFz
ZTo6flFXZWJQbHVnaW5EYXRhYmFzZSgpCiBRTGlzdDxRV2ViUGx1Z2luSW5mbz4gUVdlYlBsdWdp
bkRhdGFiYXNlOjpwbHVnaW5zKCkgY29uc3QKIHsKICAgICBRTGlzdDxRV2ViUGx1Z2luSW5mbz4g
cXdlYnBsdWdpbnM7Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiYgcGx1Z2lucyA9
IGQtPmRhdGFiYXNlLT5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2Uq
PiYgcGx1Z2lucyA9IG1fZGF0YWJhc2UtPnBsdWdpbnMoKTsKIAogICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewogICAgICAgICBQbHVnaW5QYWNr
YWdlKiBwbHVnaW4gPSBwbHVnaW5zW2ldOwpAQCAtMzA4LDcgKzMwNiw3IEBAIFFTdHJpbmdMaXN0
IFFXZWJQbHVnaW5EYXRhYmFzZTo6c2VhcmNoUGF0aHMoKSBjb25zdAogewogICAgIFFTdHJpbmdM
aXN0IHBhdGhzOwogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzID0gZC0+
ZGF0YWJhc2UtPnBsdWdpbkRpcmVjdG9yaWVzKCk7CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRpcmVjdG9yaWVzID0gbV9kYXRhYmFzZS0+cGx1Z2luRGlyZWN0b3JpZXMoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGRpcmVjdG9yaWVzLnNpemUoKTsgKytpKQogICAgICAg
ICBwYXRocy5hcHBlbmQoZGlyZWN0b3JpZXNbaV0pOwogCkBAIC0zMjgsOSArMzI2LDkgQEAgdm9p
ZCBRV2ViUGx1Z2luRGF0YWJhc2U6OnNldFNlYXJjaFBhdGhzKGNvbnN0IFFTdHJpbmdMaXN0JiBw
YXRocykKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBhdGhzLmNvdW50KCk7ICsr
aSkKICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHBhdGhzLmF0KGkpKTsKIAotICAgIGQtPmRh
dGFiYXNlLT5zZXRQbHVnaW5EaXJlY3RvcmllcyhkaXJlY3Rvcmllcyk7CisgICAgbV9kYXRhYmFz
ZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMoZGlyZWN0b3JpZXMpOwogICAgIC8vIFBsdWdpbkRhdGFi
YXNlOjpzZXRQbHVnaW5EaXJlY3RvcmllcygpIGRvZXMgbm90IHJlZnJlc2ggdGhlIGRhdGFiYXNl
LgotICAgIGQtPmRhdGFiYXNlLT5yZWZyZXNoKCk7CisgICAgbV9kYXRhYmFzZS0+cmVmcmVzaCgp
OwogfQogCiAvKiEKQEAgLTM0MSw3ICszMzksNyBAQCB2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6
c2V0U2VhcmNoUGF0aHMoY29uc3QgUVN0cmluZ0xpc3QmIHBhdGhzKQogKi8KIHZvaWQgUVdlYlBs
dWdpbkRhdGFiYXNlOjphZGRTZWFyY2hQYXRoKGNvbnN0IFFTdHJpbmcmIHBhdGgpCiB7Ci0gICAg
ZC0+ZGF0YWJhc2UtPmFkZEV4dHJhUGx1Z2luRGlyZWN0b3J5KHBhdGgpOworICAgIG1fZGF0YWJh
c2UtPmFkZEV4dHJhUGx1Z2luRGlyZWN0b3J5KHBhdGgpOwogICAgIC8vIFBsdWdpbkRhdGFiYXNl
OjphZGRFeHRyYVBsdWdpbkRpcmVjdG9yeSgpIGRvZXMgcmVmcmVzaCB0aGUgZGF0YWJhc2UuCiB9
CiAKQEAgLTM1NSw3ICszNTMsNyBAQCB2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6YWRkU2VhcmNo
UGF0aChjb25zdCBRU3RyaW5nJiBwYXRoKQogKi8KIHZvaWQgUVdlYlBsdWdpbkRhdGFiYXNlOjpy
ZWZyZXNoKCkKIHsKLSAgICBkLT5kYXRhYmFzZS0+cmVmcmVzaCgpOworICAgIG1fZGF0YWJhc2Ut
PnJlZnJlc2goKTsKIH0KIAogLyohCkBAIC0zNjUsNyArMzYzLDcgQEAgdm9pZCBRV2ViUGx1Z2lu
RGF0YWJhc2U6OnJlZnJlc2goKQogKi8KIFFXZWJQbHVnaW5JbmZvIFFXZWJQbHVnaW5EYXRhYmFz
ZTo6cGx1Z2luRm9yTWltZVR5cGUoY29uc3QgUVN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0
dXJuIFFXZWJQbHVnaW5JbmZvKGQtPmRhdGFiYXNlLT5wbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlw
ZSkpOworICAgIHJldHVybiBRV2ViUGx1Z2luSW5mbyhtX2RhdGFiYXNlLT5wbHVnaW5Gb3JNSU1F
VHlwZShtaW1lVHlwZSkpOwogfQogCiAvKiEKQEAgLTM3OCw1ICszNzYsNSBAQCBRV2ViUGx1Z2lu
SW5mbyBRV2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1pbWVUeXBlKGNvbnN0IFFTdHJpbmcm
IG1pbWVUeXBlKQogKi8KIHZvaWQgUVdlYlBsdWdpbkRhdGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVn
aW5Gb3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUVdlYlBsdWdpbklu
Zm8mIHBsdWdpbikKIHsKLSAgICBkLT5kYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlN
RVR5cGUobWltZVR5cGUsIHBsdWdpbi5kLT5wbHVnaW4uZ2V0KCkpOworICAgIG1fZGF0YWJhc2Ut
PnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKG1pbWVUeXBlLCBwbHVnaW4ubV9wYWNrYWdl
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmggYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oCmluZGV4IDRiNTAxMTkuLmMzNDMwMjAg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgKKysrIGIvV2Vi
S2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgPFF0Q29yZS9xc3RyaW5nbGlzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xh
c3MgUGx1Z2luRGF0YWJhc2U7CiAgICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKIH0KIApAQCAtMzks
NyArNDAsNyBAQCBwdWJsaWM6CiAgICAgflFXZWJQbHVnaW5JbmZvKCk7CiAKIHByaXZhdGU6Ci0g
ICAgUVdlYlBsdWdpbkluZm8oV2ViQ29yZTo6UGx1Z2luUGFja2FnZSogcGx1Z2luKTsKKyAgICBR
V2ViUGx1Z2luSW5mbyhXZWJDb3JlOjpQbHVnaW5QYWNrYWdlKiBwYWNrYWdlKTsKIAogcHVibGlj
OgogICAgIHR5cGVkZWYgUVdlYlBsdWdpbkZhY3Rvcnk6Ok1pbWVUeXBlIE1pbWVUeXBlOwpAQCAt
NjEsNyArNjIsOCBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQbHVnaW5EYXRhYmFz
ZTsKIAogcHJpdmF0ZToKLSAgICBRV2ViUGx1Z2luSW5mb1ByaXZhdGUgKmQ7CisgICAgUVdlYlBs
dWdpbkluZm9Qcml2YXRlKiBkOworICAgIFdlYkNvcmU6OlBsdWdpblBhY2thZ2UqIG1fcGFja2Fn
ZTsKIH07CiAKIGNsYXNzIFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGU7CkBAIC04OCw3ICs5MCw4
IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgUVdlYlNldHRpbmdzOwogCiBwcml2YXRlOgot
ICAgIFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUgKmQ7CisgICAgUVdlYlBsdWdpbkRhdGFiYXNl
UHJpdmF0ZSogZDsKKyAgICBXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZSogbV9kYXRhYmFzZTsKIH07
CiAKICNlbmRpZiAvLyBRV0VCUExVR0lOREFUQUJBU0VfSApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0FwaS9xd2VicGx1Z2luZGF0YWJhc2VfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0
YWJhc2VfcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTQ0NThmLi4wMDAwMDAw
Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5IEpha3ViIFdpZWN6
b3JlayA8ZmF3MjE3QGdtYWlsLmNvbT4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIFFXRUJQTFVHSU5EQVRBQkFTRV9Q
X0gKLSNkZWZpbmUgUVdFQlBMVUdJTkRBVEFCQVNFX1BfSAotCi0jaW5jbHVkZSAicXdlYmtpdGds
b2JhbC5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKLSAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZTsKLX07
Ci0KLWNsYXNzIFFXZWJQbHVnaW5JbmZvUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAgUVdlYlBsdWdp
bkluZm9Qcml2YXRlKFJlZlB0cjxXZWJDb3JlOjpQbHVnaW5QYWNrYWdlPiBwbHVnaW5QYWNrYWdl
KTsKLQotICAgIFJlZlB0cjxXZWJDb3JlOjpQbHVnaW5QYWNrYWdlPiBwbHVnaW47Ci19OwotCi1j
bGFzcyBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlIHsKLXB1YmxpYzoKLSAgICBRV2ViUGx1Z2lu
RGF0YWJhc2VQcml2YXRlKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlKiBwbHVnaW5EYXRhYmFzZSk7
Ci0KLSAgICBXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2U7Ci19OwotCi0jZW5kaWYg
Ly8gUVdFQlBMVUdJTkRBVEFCQVNFX1BfSAotLSAKMS42LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39111</attachid>
            <date>2009-09-05 04:59:59 -0700</date>
            <delta_ts>2009-09-07 07:15:13 -0700</delta_ts>
            <desc>Remove the private classes from QWebPluginDatabase.</desc>
            <filename>0001-Remove-the-private-classes-from-QWebPluginDatabase.-.patch</filename>
            <type>text/plain</type>
            <size>13276</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSBhOTdlNzA4ZTE1NmI4OWQ3MzNiMjg1ODNlNjVhODE0YTcyMGZhODk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjI6MDY6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIXSBSZW1v
dmUgdGhlIHByaXZhdGUgY2xhc3NlcyBmcm9tIFFXZWJQbHVnaW5EYXRhYmFzZS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCgpJbnN0ZWFkLCBob2xkIHRoZSBQ
bHVnaW5EYXRhYmFzZSBhbmQgUGx1Z2luUGFja2FnZSBvYmplY3RzIGFzIGNsYXNzCm1lbWJlcnMg
YW5kIHRha2UgY2FyZSBvZiByZWZjb3VudGluZyBvbiBvdXIgb3duIGluc3RlYWQgb2YgdXNpbmcg
UmVmUHRyLgoKVGhpcyB3YXkgd2Ugbm90IG9ubHkgbWFkZSB0aGUgY29kZSBjbGVhbmVyIGJ1dCBh
bHNvIGdvdCByaWQgb2YKcmVkdW5kYW50IGFsbG9jYXRpb25zIHdoZW4gY29uc3RydWN0aW5nIG51
bGwgUVdlYlBsdWdpbkluZm8gb2JqZWN0cy4KClRoZSBwcml2YXRlIGNsYXNzZXMgaGF2ZSBiZWVu
IGZvcndhcmQtZGVjbGFyZWQgYW5kIHRoZSBkLXBvaW50ZXJzIGxlZnQKdG8gYmUgb24gdGhlIHNh
ZmUgc2lkZS4KLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgfCAgIDg0
ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogV2ViS2l0L3F0L0FwaS9xd2VicGx1
Z2luZGF0YWJhc2UuaCAgIHwgICAgOSArKy0KIFdlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFi
YXNlX3AuaCB8ICAgNDYgLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgfCAgIDQxICsrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwg
ODggaW5zZXJ0aW9ucygrKSwgOTIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgV2Vi
S2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2VfcC5oCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0
YWJhc2UuY3BwCmluZGV4IDg3NThjNjAuLjNhNzBmMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9B
cGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5k
YXRhYmFzZS5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZS5oIgotI2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFz
ZV9wLmgiCiAKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBsdWdpblBh
Y2thZ2UuaCIKQEAgLTMyLDE2ICszMSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAg
IFxicmllZiBSZXByZXNlbnRzIGEgc2luZ2xlIE1JTUUgdHlwZSBzdXBwb3J0ZWQgYnkgYSBwbHVn
aW4uCiAqLwogCi1RV2ViUGx1Z2luSW5mb1ByaXZhdGU6OlFXZWJQbHVnaW5JbmZvUHJpdmF0ZShS
ZWZQdHI8UGx1Z2luUGFja2FnZT4gcGx1Z2luUGFja2FnZSkKLSAgICA6IHBsdWdpbihwbHVnaW5Q
YWNrYWdlKQotewotfQotCi1RV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlOjpRV2ViUGx1Z2luRGF0
YWJhc2VQcml2YXRlKFBsdWdpbkRhdGFiYXNlKiBwbHVnaW5EYXRhYmFzZSkKLSAgICA6IGRhdGFi
YXNlKHBsdWdpbkRhdGFiYXNlKQotewotfQotCiAvKiEKICAgICBcY2xhc3MgUVdlYlBsdWdpbklu
Zm8KICAgICBcc2luY2UgNC42CkBAIC02NCwyMSArNTMsMjUgQEAgUVdlYlBsdWdpbkRhdGFiYXNl
UHJpdmF0ZTo6UVdlYlBsdWdpbkRhdGFiYXNlUHJpdmF0ZShQbHVnaW5EYXRhYmFzZSogcGx1Z2lu
RGF0YWIKICAgICBDb25zdHJ1Y3RzIGEgbnVsbCBRV2ViUGx1Z2luSW5mby4KICovCiBRV2ViUGx1
Z2luSW5mbzo6UVdlYlBsdWdpbkluZm8oKQotICAgIDogZChuZXcgUVdlYlBsdWdpbkluZm9Qcml2
YXRlKDApKQorICAgIDogbV9wYWNrYWdlKDApCiB7CiB9CiAKLVFXZWJQbHVnaW5JbmZvOjpRV2Vi
UGx1Z2luSW5mbyhQbHVnaW5QYWNrYWdlKiBwbHVnaW4pCi0gICAgOiBkKG5ldyBRV2ViUGx1Z2lu
SW5mb1ByaXZhdGUocGx1Z2luKSkKK1FXZWJQbHVnaW5JbmZvOjpRV2ViUGx1Z2luSW5mbyhQbHVn
aW5QYWNrYWdlKiBwYWNrYWdlKQorICAgIDogbV9wYWNrYWdlKHBhY2thZ2UpCiB7CisgICAgaWYg
KG1fcGFja2FnZSkKKyAgICAgICAgbV9wYWNrYWdlLT5yZWYoKTsKIH0KIAogLyohCiAgICAgQ29u
dHJ1Y3RzIGEgY29weSBvZiBcYSBvdGhlci4KICovCiBRV2ViUGx1Z2luSW5mbzo6UVdlYlBsdWdp
bkluZm8oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKQotICAgIDogZChuZXcgUVdlYlBsdWdp
bkluZm9Qcml2YXRlKG90aGVyLmQtPnBsdWdpbikpCisgICAgOiBtX3BhY2thZ2Uob3RoZXIubV9w
YWNrYWdlKQogeworICAgIGlmIChtX3BhY2thZ2UpCisgICAgICAgIG1fcGFja2FnZS0+cmVmKCk7
CiB9CiAKIC8qIQpAQCAtODYsNyArNzksOCBAQCBRV2ViUGx1Z2luSW5mbzo6UVdlYlBsdWdpbklu
Zm8oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKQogKi8KIFFXZWJQbHVnaW5JbmZvOjp+UVdl
YlBsdWdpbkluZm8oKQogewotICAgIGRlbGV0ZSBkOworICAgIGlmIChtX3BhY2thZ2UpCisgICAg
ICAgIG1fcGFja2FnZS0+ZGVyZWYoKTsKIH0KIAogLyohCkBAIC05Niw5ICs5MCw5IEBAIFFXZWJQ
bHVnaW5JbmZvOjp+UVdlYlBsdWdpbkluZm8oKQogKi8KIFFTdHJpbmcgUVdlYlBsdWdpbkluZm86
Om5hbWUoKSBjb25zdAogewotICAgIGlmICghZC0+cGx1Z2luKQorICAgIGlmICghbV9wYWNrYWdl
KQogICAgICAgICByZXR1cm4gUVN0cmluZygpOwotICAgIHJldHVybiBkLT5wbHVnaW4tPm5hbWUo
KTsKKyAgICByZXR1cm4gbV9wYWNrYWdlLT5uYW1lKCk7CiB9CiAKIC8qIQpAQCAtMTA4LDkgKzEw
Miw5IEBAIFFTdHJpbmcgUVdlYlBsdWdpbkluZm86Om5hbWUoKSBjb25zdAogKi8KIFFTdHJpbmcg
UVdlYlBsdWdpbkluZm86OmRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoIWQtPnBsdWdp
bikKKyAgICBpZiAoIW1fcGFja2FnZSkKICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gZC0+cGx1Z2luLT5kZXNjcmlwdGlvbigpOworICAgIHJldHVybiBtX3BhY2thZ2UtPmRl
c2NyaXB0aW9uKCk7CiB9CiAKIC8qIQpAQCAtMTIwLDExICsxMTQsMTEgQEAgUVN0cmluZyBRV2Vi
UGx1Z2luSW5mbzo6ZGVzY3JpcHRpb24oKSBjb25zdAogKi8KIFFMaXN0PFFXZWJQbHVnaW5JbmZv
OjpNaW1lVHlwZT4gUVdlYlBsdWdpbkluZm86Om1pbWVUeXBlcygpIGNvbnN0CiB7Ci0gICAgaWYg
KCFkLT5wbHVnaW4pCisgICAgaWYgKCFtX3BhY2thZ2UpCiAgICAgICAgIHJldHVybiBRTGlzdDxN
aW1lVHlwZT4oKTsKIAogICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXM7Ci0gICAgY29uc3Qg
TUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBkLT5wbHVnaW4tPm1p
bWVUb0Rlc2NyaXB0aW9ucygpOworICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWlt
ZVRvRGVzY3JpcHRpb25zID0gbV9wYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKICAgICBN
SU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0
aW9ucy5lbmQoKTsKICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIE1pbWVUeXBlIG1pbWVUeXBlOwpAQCAtMTMyLDcgKzEyNiw3IEBAIFFMaXN0PFFXZWJQ
bHVnaW5JbmZvOjpNaW1lVHlwZT4gUVdlYlBsdWdpbkluZm86Om1pbWVUeXBlcygpIGNvbnN0CiAg
ICAgICAgIG1pbWVUeXBlLmRlc2NyaXB0aW9uID0gaXQtPnNlY29uZDsKIAogICAgICAgICBRU3Ry
aW5nTGlzdCBmaWxlRXh0ZW5zaW9uczsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9u
cyA9IGQtPnBsdWdpbi0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lVHlwZS5uYW1lKTsKKyAg
ICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IG1fcGFja2FnZS0+bWltZVRvRXh0ZW5z
aW9ucygpLmdldChtaW1lVHlwZS5uYW1lKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGZpbGVFeHRlbnNpb25z
LmFwcGVuZChleHRlbnNpb25zW2ldKTsKQEAgLTE2Niw5ICsxNjAsOSBAQCBib29sIFFXZWJQbHVn
aW5JbmZvOjpzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAog
Ki8KIFFTdHJpbmcgUVdlYlBsdWdpbkluZm86OnBhdGgoKSBjb25zdAogewotICAgIGlmICghZC0+
cGx1Z2luKQorICAgIGlmICghbV9wYWNrYWdlKQogICAgICAgICByZXR1cm4gUVN0cmluZygpOwot
ICAgIHJldHVybiBkLT5wbHVnaW4tPnBhdGgoKTsKKyAgICByZXR1cm4gbV9wYWNrYWdlLT5wYXRo
KCk7CiB9CiAKIC8qIQpAQCAtMTc2LDcgKzE3MCw3IEBAIFFTdHJpbmcgUVdlYlBsdWdpbkluZm86
OnBhdGgoKSBjb25zdAogKi8KIGJvb2wgUVdlYlBsdWdpbkluZm86OmlzTnVsbCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFkLT5wbHVnaW47CisgICAgcmV0dXJuICFtX3BhY2thZ2U7CiB9CiAKIC8q
IQpAQCAtMTg5LDkgKzE4Myw5IEBAIGJvb2wgUVdlYlBsdWdpbkluZm86OmlzTnVsbCgpIGNvbnN0
CiAqLwogdm9pZCBRV2ViUGx1Z2luSW5mbzo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0g
ICAgaWYgKCFkLT5wbHVnaW4pCisgICAgaWYgKCFtX3BhY2thZ2UpCiAgICAgICAgIHJldHVybjsK
LSAgICBkLT5wbHVnaW4tPnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9wYWNrYWdlLT5zZXRF
bmFibGVkKGVuYWJsZWQpOwogfQogCiAvKiEKQEAgLTIwMSwxOSArMTk1LDE5IEBAIHZvaWQgUVdl
YlBsdWdpbkluZm86OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogKi8KIGJvb2wgUVdlYlBsdWdp
bkluZm86OmlzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFkLT5wbHVnaW4pCisgICAgaWYg
KCFtX3BhY2thZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZC0+cGx1Z2lu
LT5pc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9wYWNrYWdlLT5pc0VuYWJsZWQoKTsKIH0KIAog
Ym9vbCBRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9PShjb25zdCBRV2ViUGx1Z2luSW5mbyYgb3Ro
ZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPnBsdWdpbiA9PSBvdGhlci5kLT5wbHVnaW47Cisg
ICAgcmV0dXJuIG1fcGFja2FnZSA9PSBvdGhlci5tX3BhY2thZ2U7CiB9CiAKIGJvb2wgUVdlYlBs
dWdpbkluZm86Om9wZXJhdG9yIT0oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKSBjb25zdAog
ewotICAgIHJldHVybiBkLT5wbHVnaW4gIT0gb3RoZXIuZC0+cGx1Z2luOworICAgIHJldHVybiBt
X3BhY2thZ2UgIT0gb3RoZXIubV9wYWNrYWdlOwogfQogCiBRV2ViUGx1Z2luSW5mbyAmUVdlYlBs
dWdpbkluZm86Om9wZXJhdG9yPShjb25zdCBRV2ViUGx1Z2luSW5mbyYgb3RoZXIpCkBAIC0yMjEs
NyArMjE1LDEyIEBAIFFXZWJQbHVnaW5JbmZvICZRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9KGNv
bnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAg
ICAgIHJldHVybiAqdGhpczsKIAotICAgIGQtPnBsdWdpbiA9IG90aGVyLmQtPnBsdWdpbjsKKyAg
ICBpZiAobV9wYWNrYWdlKQorICAgICAgICBtX3BhY2thZ2UtPmRlcmVmKCk7CisgICAgbV9wYWNr
YWdlID0gb3RoZXIubV9wYWNrYWdlOworICAgIGlmIChtX3BhY2thZ2UpCisgICAgICAgIG1fcGFj
a2FnZS0+cmVmKCk7CisKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTI1MywxMyArMjUyLDEy
IEBAIFFXZWJQbHVnaW5JbmZvICZRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9KGNvbnN0IFFXZWJQ
bHVnaW5JbmZvJiBvdGhlcikKIAogUVdlYlBsdWdpbkRhdGFiYXNlOjpRV2ViUGx1Z2luRGF0YWJh
c2UoUU9iamVjdCogcGFyZW50KQogICAgIDogUU9iamVjdChwYXJlbnQpCi0gICAgLCBkKG5ldyBR
V2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlKFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5z
KCkpKQorICAgICwgbV9kYXRhYmFzZShQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygp
KQogewogfQogCiBRV2ViUGx1Z2luRGF0YWJhc2U6On5RV2ViUGx1Z2luRGF0YWJhc2UoKQogewot
ICAgIGRlbGV0ZSBkOwogfQogCiAvKiEKQEAgLTI3Myw3ICsyNzEsNyBAQCBRV2ViUGx1Z2luRGF0
YWJhc2U6On5RV2ViUGx1Z2luRGF0YWJhc2UoKQogUUxpc3Q8UVdlYlBsdWdpbkluZm8+IFFXZWJQ
bHVnaW5EYXRhYmFzZTo6cGx1Z2lucygpIGNvbnN0CiB7CiAgICAgUUxpc3Q8UVdlYlBsdWdpbklu
Zm8+IHF3ZWJwbHVnaW5zOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4mIHBsdWdp
bnMgPSBkLT5kYXRhYmFzZS0+cGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNr
YWdlKj4mIHBsdWdpbnMgPSBtX2RhdGFiYXNlLT5wbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUGx1Z2lu
UGFja2FnZSogcGx1Z2luID0gcGx1Z2luc1tpXTsKQEAgLTMwOCw3ICszMDYsNyBAQCBRU3RyaW5n
TGlzdCBRV2ViUGx1Z2luRGF0YWJhc2U6OnNlYXJjaFBhdGhzKCkgY29uc3QKIHsKICAgICBRU3Ry
aW5nTGlzdCBwYXRoczsKIAotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcyA9
IGQtPmRhdGFiYXNlLT5wbHVnaW5EaXJlY3RvcmllcygpOworICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkaXJlY3RvcmllcyA9IG1fZGF0YWJhc2UtPnBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBkaXJlY3Rvcmllcy5zaXplKCk7ICsraSkKICAg
ICAgICAgcGF0aHMuYXBwZW5kKGRpcmVjdG9yaWVzW2ldKTsKIApAQCAtMzI4LDkgKzMyNiw5IEBA
IHZvaWQgUVdlYlBsdWdpbkRhdGFiYXNlOjpzZXRTZWFyY2hQYXRocyhjb25zdCBRU3RyaW5nTGlz
dCYgcGF0aHMpCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXRocy5jb3VudCgp
OyArK2kpCiAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChwYXRocy5hdChpKSk7CiAKLSAgICBk
LT5kYXRhYmFzZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMoZGlyZWN0b3JpZXMpOworICAgIG1fZGF0
YWJhc2UtPnNldFBsdWdpbkRpcmVjdG9yaWVzKGRpcmVjdG9yaWVzKTsKICAgICAvLyBQbHVnaW5E
YXRhYmFzZTo6c2V0UGx1Z2luRGlyZWN0b3JpZXMoKSBkb2VzIG5vdCByZWZyZXNoIHRoZSBkYXRh
YmFzZS4KLSAgICBkLT5kYXRhYmFzZS0+cmVmcmVzaCgpOworICAgIG1fZGF0YWJhc2UtPnJlZnJl
c2goKTsKIH0KIAogLyohCkBAIC0zNDEsNyArMzM5LDcgQEAgdm9pZCBRV2ViUGx1Z2luRGF0YWJh
c2U6OnNldFNlYXJjaFBhdGhzKGNvbnN0IFFTdHJpbmdMaXN0JiBwYXRocykKICovCiB2b2lkIFFX
ZWJQbHVnaW5EYXRhYmFzZTo6YWRkU2VhcmNoUGF0aChjb25zdCBRU3RyaW5nJiBwYXRoKQogewot
ICAgIGQtPmRhdGFiYXNlLT5hZGRFeHRyYVBsdWdpbkRpcmVjdG9yeShwYXRoKTsKKyAgICBtX2Rh
dGFiYXNlLT5hZGRFeHRyYVBsdWdpbkRpcmVjdG9yeShwYXRoKTsKICAgICAvLyBQbHVnaW5EYXRh
YmFzZTo6YWRkRXh0cmFQbHVnaW5EaXJlY3RvcnkoKSBkb2VzIHJlZnJlc2ggdGhlIGRhdGFiYXNl
LgogfQogCkBAIC0zNTUsNyArMzUzLDcgQEAgdm9pZCBRV2ViUGx1Z2luRGF0YWJhc2U6OmFkZFNl
YXJjaFBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKICovCiB2b2lkIFFXZWJQbHVnaW5EYXRhYmFz
ZTo6cmVmcmVzaCgpCiB7Ci0gICAgZC0+ZGF0YWJhc2UtPnJlZnJlc2goKTsKKyAgICBtX2RhdGFi
YXNlLT5yZWZyZXNoKCk7CiB9CiAKIC8qIQpAQCAtMzY1LDcgKzM2Myw3IEBAIHZvaWQgUVdlYlBs
dWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKICovCiBRV2ViUGx1Z2luSW5mbyBRV2ViUGx1Z2luRGF0
YWJhc2U6OnBsdWdpbkZvck1pbWVUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlKQogewotICAg
IHJldHVybiBRV2ViUGx1Z2luSW5mbyhkLT5kYXRhYmFzZS0+cGx1Z2luRm9yTUlNRVR5cGUobWlt
ZVR5cGUpKTsKKyAgICByZXR1cm4gUVdlYlBsdWdpbkluZm8obV9kYXRhYmFzZS0+cGx1Z2luRm9y
TUlNRVR5cGUobWltZVR5cGUpKTsKIH0KIAogLyohCkBAIC0zNzgsNSArMzc2LDUgQEAgUVdlYlBs
dWdpbkluZm8gUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNaW1lVHlwZShjb25zdCBRU3Ry
aW5nJiBtaW1lVHlwZSkKICovCiB2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVycmVk
UGx1Z2luRm9yTWltZVR5cGUoY29uc3QgUVN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFFXZWJQbHVn
aW5JbmZvJiBwbHVnaW4pCiB7Ci0gICAgZC0+ZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZv
ck1JTUVUeXBlKG1pbWVUeXBlLCBwbHVnaW4uZC0+cGx1Z2luLmdldCgpKTsKKyAgICBtX2RhdGFi
YXNlLT5zZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSwgcGx1Z2luLm1fcGFj
a2FnZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5o
IGIvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuaAppbmRleCA0YjUwMTE5Li5jMzQz
MDIwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oCisrKyBi
L1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlIDxRdENvcmUvcXN0cmluZ2xpc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAg
IGNsYXNzIFBsdWdpbkRhdGFiYXNlOwogICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7CiB9CiAKQEAg
LTM5LDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5RV2ViUGx1Z2luSW5mbygpOwogCiBwcml2YXRl
OgotICAgIFFXZWJQbHVnaW5JbmZvKFdlYkNvcmU6OlBsdWdpblBhY2thZ2UqIHBsdWdpbik7Cisg
ICAgUVdlYlBsdWdpbkluZm8oV2ViQ29yZTo6UGx1Z2luUGFja2FnZSogcGFja2FnZSk7CiAKIHB1
YmxpYzoKICAgICB0eXBlZGVmIFFXZWJQbHVnaW5GYWN0b3J5OjpNaW1lVHlwZSBNaW1lVHlwZTsK
QEAgLTYxLDcgKzYyLDggQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGx1Z2luRGF0
YWJhc2U7CiAKIHByaXZhdGU6Ci0gICAgUVdlYlBsdWdpbkluZm9Qcml2YXRlICpkOworICAgIFFX
ZWJQbHVnaW5JbmZvUHJpdmF0ZSogZDsKKyAgICBXZWJDb3JlOjpQbHVnaW5QYWNrYWdlKiBtX3Bh
Y2thZ2U7CiB9OwogCiBjbGFzcyBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlOwpAQCAtODgsNyAr
OTAsOCBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJTZXR0aW5nczsKIAogcHJpdmF0
ZToKLSAgICBRV2ViUGx1Z2luRGF0YWJhc2VQcml2YXRlICpkOworICAgIFFXZWJQbHVnaW5EYXRh
YmFzZVByaXZhdGUqIGQ7CisgICAgV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2UqIG1fZGF0YWJhc2U7
CiB9OwogCiAjZW5kaWYgLy8gUVdFQlBMVUdJTkRBVEFCQVNFX0gKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdp
bmRhdGFiYXNlX3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE0NDU4Zi4uMDAw
MDAwMAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBX
aWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBRV0VCUExVR0lOREFUQUJB
U0VfUF9ICi0jZGVmaW5lIFFXRUJQTFVHSU5EQVRBQkFTRV9QX0gKLQotI2luY2x1ZGUgInF3ZWJr
aXRnbG9iYWwuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7Ci0gICAgY2xhc3MgUGx1Z2luRGF0YWJhc2U7
Ci19OwotCi1jbGFzcyBRV2ViUGx1Z2luSW5mb1ByaXZhdGUgewotcHVibGljOgotICAgIFFXZWJQ
bHVnaW5JbmZvUHJpdmF0ZShSZWZQdHI8V2ViQ29yZTo6UGx1Z2luUGFja2FnZT4gcGx1Z2luUGFj
a2FnZSk7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6UGx1Z2luUGFja2FnZT4gcGx1Z2luOwotfTsK
LQotY2xhc3MgUVdlYlBsdWdpbkRhdGFiYXNlUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAgUVdlYlBs
dWdpbkRhdGFiYXNlUHJpdmF0ZShXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZSogcGx1Z2luRGF0YWJh
c2UpOwotCi0gICAgV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlOwotfTsKLQotI2Vu
ZGlmIC8vIFFXRUJQTFVHSU5EQVRBQkFTRV9QX0gKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFu
Z2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDFlYWYzYjcuLmRjNDRkYWMgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDA5LTA5LTA1ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSB0aGUgcHJpdmF0ZSBjbGFzc2VzIGZyb20gUVdlYlBsdWdpbkRhdGFiYXNlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKKworICAgICAg
ICBJbnN0ZWFkLCBob2xkIHRoZSBQbHVnaW5EYXRhYmFzZSBhbmQgUGx1Z2luUGFja2FnZSBvYmpl
Y3RzIGFzIGNsYXNzCisgICAgICAgIG1lbWJlcnMgYW5kIHRha2UgY2FyZSBvZiByZWZjb3VudGlu
ZyBvbiBvdXIgb3duIGluc3RlYWQgb2YgdXNpbmcgUmVmUHRyLgorCisgICAgICAgIFRoaXMgd2F5
IHdlIG5vdCBvbmx5IG1hZGUgdGhlIGNvZGUgY2xlYW5lciBidXQgYWxzbyBnb3QgcmlkIG9mCisg
ICAgICAgIHJlZHVuZGFudCBhbGxvY2F0aW9ucyB3aGVuIGNvbnN0cnVjdGluZyBudWxsIFFXZWJQ
bHVnaW5JbmZvIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHByaXZhdGUgY2xhc3NlcyBoYXZlIGJl
ZW4gZm9yd2FyZC1kZWNsYXJlZCBhbmQgdGhlIGQtcG9pbnRlcnMgbGVmdAorICAgICAgICB0byBi
ZSBvbiB0aGUgc2FmZSBzaWRlLgorCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5j
cHA6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6UVdlYlBsdWdpbkluZm8pOgorICAgICAgICAo
UVdlYlBsdWdpbkluZm86On5RV2ViUGx1Z2luSW5mbyk6CisgICAgICAgIChRV2ViUGx1Z2luSW5m
bzo6bmFtZSk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6ZGVzY3JpcHRpb24pOgorICAgICAg
ICAoUVdlYlBsdWdpbkluZm86Om1pbWVUeXBlcyk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6
cGF0aCk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6aXNOdWxsKToKKyAgICAgICAgKFFXZWJQ
bHVnaW5JbmZvOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjppc0VuYWJs
ZWQpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86Om9wZXJhdG9yPT0pOgorICAgICAgICAoUVdl
YlBsdWdpbkluZm86Om9wZXJhdG9yIT0pOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86Om9wZXJh
dG9yPSk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OlFXZWJQbHVnaW5EYXRhYmFzZSk6
CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6On5RV2ViUGx1Z2luRGF0YWJhc2UpOgorICAg
ICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5zKToKKyAgICAgICAgKFFXZWJQbHVnaW5E
YXRhYmFzZTo6c2VhcmNoUGF0aHMpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpzZXRT
ZWFyY2hQYXRocyk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OmFkZFNlYXJjaFBhdGgp
OgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKToKKyAgICAgICAgKFFXZWJQ
bHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAoUVdlYlBsdWdpbkRh
dGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZSk6CisgICAgICAgICogQXBpL3F3
ZWJwbHVnaW5kYXRhYmFzZS5oOgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0YWJhc2VfcC5o
OiBSZW1vdmVkLgorCiAyMDA5LTA5LTA0ICBNYXJrIE1lbnRvdmFpICA8bWFya0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KLS0gCjEuNi40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39112</attachid>
            <date>2009-09-05 05:26:48 -0700</date>
            <delta_ts>2009-09-05 05:30:26 -0700</delta_ts>
            <desc>Optimize the QWebPluginInfo::mimeTypes() function.</desc>
            <filename>0001-Speed-up-the-QWebPluginInfo-mimeTypes-function.patch</filename>
            <type>text/plain</type>
            <size>6085</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSAwMWM4YTU4NzhjNWViNDY4OTgwMjlmNjE5NDY3ODZmOWIzYmNmMjg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjI6NDQ6NDEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBTcGVl
ZCB1cCB0aGUgUVdlYlBsdWdpbkluZm86Om1pbWVUeXBlcygpIGZ1bmN0aW9uLgogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCgpJbnN0ZWFkIG9mIGNvbnN0cnVj
dGluZyBhIGxpc3Qgb2YgTUlNRSB0eXBlcyBldmVyeSB0aW1lIGl0IGlzIGNhbGxlZCwKZG8gdGhp
cyBvbmx5IG9uY2UuCi0tLQogV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwICAg
ICAgICAgICAgICAgfCAgIDM5ICsrKysrKysrKystLS0tLS0tLS0tCiBXZWJLaXQvcXQvQXBpL3F3
ZWJwbHVnaW5kYXRhYmFzZS5oICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrKysrKysrKwog
Li4uL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcCAgfCAgIDM2
ICsrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCAy
MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRh
YmFzZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKaW5kZXggOWRk
ZTFiNC4uYzQ2MTg5YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJh
c2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAtMTE0
LDI4ICsxMTQsMjYgQEAgUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6ZGVzY3JpcHRpb24oKSBjb25z
dAogKi8KIFFMaXN0PFFXZWJQbHVnaW5JbmZvOjpNaW1lVHlwZT4gUVdlYlBsdWdpbkluZm86Om1p
bWVUeXBlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhY2thZ2UpCi0gICAgICAgIHJldHVybiBR
TGlzdDxNaW1lVHlwZT4oKTsKLQotICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXM7Ci0gICAg
Y29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBtX3BhY2th
Z2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOwotICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwotICAgIGZvciAoTUlN
RVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9u
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgTWltZVR5cGUgbWltZVR5cGU7
Ci0gICAgICAgIG1pbWVUeXBlLm5hbWUgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgIG1pbWVUeXBlLmRl
c2NyaXB0aW9uID0gaXQtPnNlY29uZDsKLQotICAgICAgICBRU3RyaW5nTGlzdCBmaWxlRXh0ZW5z
aW9uczsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IG1fcGFja2FnZS0+bWlt
ZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lVHlwZS5uYW1lKTsKLQotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGZpbGVF
eHRlbnNpb25zLmFwcGVuZChleHRlbnNpb25zW2ldKTsKLQotICAgICAgICBtaW1lVHlwZS5maWxl
RXh0ZW5zaW9ucyA9IGZpbGVFeHRlbnNpb25zOwotICAgICAgICBtaW1lVHlwZXMuYXBwZW5kKG1p
bWVUeXBlKTsKKyAgICBpZiAobV9taW1lVHlwZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbnN0
IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gbV9wYWNrYWdlLT5t
aW1lVG9EZXNjcmlwdGlvbnMoKTsKKyAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CisgICAgICAgIGZvciAo
TUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0
aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIE1pbWVUeXBlIG1p
bWVUeXBlOworICAgICAgICAgICAgbWltZVR5cGUubmFtZSA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgIG1pbWVUeXBlLmRlc2NyaXB0aW9uID0gaXQtPnNlY29uZDsKKworICAgICAgICAgICAgUVN0
cmluZ0xpc3QgZmlsZUV4dGVuc2lvbnM7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRl
bnNpb25zID0gbV9wYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWVUeXBlLm5hbWUp
OworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9u
c1tpXSk7CisKKyAgICAgICAgICAgIG1pbWVUeXBlLmZpbGVFeHRlbnNpb25zID0gZmlsZUV4dGVu
c2lvbnM7CisgICAgICAgICAgICBtX21pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAg
ICB9CiAgICAgfQogCi0gICAgcmV0dXJuIG1pbWVUeXBlczsKKyAgICByZXR1cm4gbV9taW1lVHlw
ZXM7CiB9CiAKIC8qIQpAQCAtMjE2LDYgKzIxNCw3IEBAIFFXZWJQbHVnaW5JbmZvICZRV2ViUGx1
Z2luSW5mbzo6b3BlcmF0b3I9KGNvbnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikKICAgICBtX3Bh
Y2thZ2UgPSBvdGhlci5tX3BhY2thZ2U7CiAgICAgaWYgKG1fcGFja2FnZSkKICAgICAgICAgbV9w
YWNrYWdlLT5yZWYoKTsKKyAgICBtX21pbWVUeXBlcyA9IG90aGVyLm1fbWltZVR5cGVzOwogCiAg
ICAgcmV0dXJuICp0aGlzOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2lu
ZGF0YWJhc2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgKaW5kZXggYzM0
MzAyMC4uYjIyYzNkZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJh
c2UuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oCkBAIC02NCw2ICs2
NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUVdlYlBsdWdpbkluZm9Qcml2YXRlKiBkOwog
ICAgIFdlYkNvcmU6OlBsdWdpblBhY2thZ2UqIG1fcGFja2FnZTsKKyAgICBtdXRhYmxlIFFMaXN0
PE1pbWVUeXBlPiBtX21pbWVUeXBlczsKIH07CiAKIGNsYXNzIFFXZWJQbHVnaW5EYXRhYmFzZVBy
aXZhdGU7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5n
ZUxvZwppbmRleCAxZWFmM2I3Li43ODA3NTIzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOS0w
NSAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCB0aGUgUVdlYlBsdWdpbklu
Zm86Om1pbWVUeXBlcygpIGZ1bmN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKKworICAgICAgICBJbnN0ZWFkIG9mIGNvbnN0cnVjdGlu
ZyBhIGxpc3Qgb2YgTUlNRSB0eXBlcyBldmVyeSB0aW1lIGl0IGlzIGNhbGxlZCwKKyAgICAgICAg
ZG8gdGhpcyBvbmx5IG9uY2UuCisKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMpOgorICAgICAgICAoUVdlYlBs
dWdpbkluZm86Om9wZXJhdG9yPSk6CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5o
OgorICAgICAgICAqIHRlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Om9wZXJhdG9yYXNzaWdu
X2RhdGEpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6b3BlcmF0b3Jhc3NpZ24p
OgorCiAyMDA5LTA5LTA0ICBNYXJrIE1lbnRvdmFpICA8bWFya0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0
cy9xd2VicGx1Z2luZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgYi9XZWJLaXQv
cXQvdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3RzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCmlu
ZGV4IGMwNTMzYWQuLjFlZTYyMDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGx1
Z2luZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAtNDAs
NiArNDAsOCBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgb3BlcmF0b3JlcXVhbF9kYXRhKCk7
CiAgICAgdm9pZCBvcGVyYXRvcmVxdWFsKCk7CiAgICAgdm9pZCBwcmVmZXJyZWRQbHVnaW4oKTsK
KyAgICB2b2lkIG9wZXJhdG9yYXNzaWduX2RhdGEoKTsKKyAgICB2b2lkIG9wZXJhdG9yYXNzaWdu
KCk7CiB9OwogCiB0eXBlZGVmIFFXZWJQbHVnaW5JbmZvOjpNaW1lVHlwZSBNaW1lVHlwZTsKQEAg
LTM5Niw2ICszOTgsNDAgQEAgdm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwcmVmZXJyZWRQ
bHVnaW4oKQogICAgIH0KIH0KIAordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRv
cmFzc2lnbl9kYXRhKCkKK3sKKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFXZWJQbHVnaW5JbmZvPigi
Zmlyc3QiKTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFXZWJQbHVnaW5JbmZvPigic2Vjb25kIik7
CisKKyAgICBRV2ViUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdzOjpwbHVn
aW5EYXRhYmFzZSgpOworICAgIFFUZXN0OjpuZXdSb3coIm51bGwiKSA8PCBRV2ViUGx1Z2luSW5m
bygpIDw8IFFXZWJQbHVnaW5JbmZvKCk7CisKKyAgICBRTGlzdDxRV2ViUGx1Z2luSW5mbz4gcGx1
Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAocGx1
Z2lucy5jb3VudCgpIC0gMSk7ICsraSkgeworICAgICAgICBRV2ViUGx1Z2luSW5mbyBmaXJzdCA9
IHBsdWdpbnMuYXQoaSk7CisgICAgICAgIFFXZWJQbHVnaW5JbmZvIHNlY29uZCA9IHBsdWdpbnMu
YXQoaSArIDEpOworCisgICAgICAgIFFUZXN0OjpuZXdSb3coUVN0cmluZygiJTE9JTIiKS5hcmco
Zmlyc3QubmFtZSgpLCBzZWNvbmQubmFtZSgpKS50b1V0ZjgoKS5jb25zdERhdGEoKSkgPDwgZmly
c3QgPDwgc2Vjb25kOworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpv
cGVyYXRvcmFzc2lnbigpCit7CisgICAgUUZFVENIKFFXZWJQbHVnaW5JbmZvLCBmaXJzdCk7Cisg
ICAgUUZFVENIKFFXZWJQbHVnaW5JbmZvLCBzZWNvbmQpOworCisgICAgUVdlYlBsdWdpbkluZm8g
aW5mbzsKKyAgICBRQ09NUEFSRShpbmZvLm1pbWVUeXBlcygpLCBRTGlzdDxNaW1lVHlwZT4oKSk7
CisgICAgUUNPTVBBUkUoaW5mbyA9IGZpcnN0LCBmaXJzdCk7CisgICAgUUNPTVBBUkUoaW5mbywg
Zmlyc3QpOworICAgIFFDT01QQVJFKGluZm8ubWltZVR5cGVzKCksIGZpcnN0Lm1pbWVUeXBlcygp
KTsKKyAgICBRQ09NUEFSRShpbmZvID0gc2Vjb25kLCBzZWNvbmQpOworICAgIFFDT01QQVJFKGlu
Zm8sIHNlY29uZCk7CisgICAgUUNPTVBBUkUoaW5mby5taW1lVHlwZXMoKSwgc2Vjb25kLm1pbWVU
eXBlcygpKTsKKyAgICBRQ09NUEFSRShpbmZvID0gUVdlYlBsdWdpbkluZm8oKSwgUVdlYlBsdWdp
bkluZm8oKSk7CisgICAgUUNPTVBBUkUoaW5mby5taW1lVHlwZXMoKSwgUUxpc3Q8TWltZVR5cGU+
KCkpOworfQorCiBRVEVTVF9NQUlOKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2UpCiAKICNpbmNsdWRl
ICJ0c3RfcXdlYnBsdWdpbmRhdGFiYXNlLm1vYyIKLS0gCjEuNi40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39113</attachid>
            <date>2009-09-05 05:30:26 -0700</date>
            <delta_ts>2009-09-07 07:22:00 -0700</delta_ts>
            <desc>Optimize the QWebPluginInfo::mimeTypes() function.</desc>
            <filename>0001-Speed-up-the-QWebPluginInfo-mimeTypes-function.patch</filename>
            <type>text/plain</type>
            <size>6093</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSBkM2RhNDZiMTcwMTcyODUzMjBhZjYwMjhhNGVkZjEwMDRjYTRiODEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IE1vbiwgMTAgQXVnIDIwMDkgMjI6NDQ6NDEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBTcGVl
ZCB1cCB0aGUgUVdlYlBsdWdpbkluZm86Om1pbWVUeXBlcygpIGZ1bmN0aW9uLgogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCgpJbnN0ZWFkIG9mIGNvbnN0cnVj
dGluZyBhIGxpc3Qgb2YgTUlNRSB0eXBlcyBldmVyeSB0aW1lIGl0IGlzIGNhbGxlZCwKZG8gdGhp
cyBvbmx5IG9uY2UuCi0tLQogV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwICAg
ICAgICAgICAgICAgfCAgIDMyICsrKysrKysrKy0tLS0tLS0tLQogV2ViS2l0L3F0L0FwaS9xd2Vi
cGx1Z2luZGF0YWJhc2UuaCAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdC9xdC9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrCiAu
Li4vcXdlYnBsdWdpbmRhdGFiYXNlL3RzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3BwICB8ICAgMzYg
KysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwg
MTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0
YWJhc2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCmluZGV4IDlk
ZGUxYjQuLjIzMWY0OGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFi
YXNlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKQEAgLTEx
NCwyOCArMTE0LDI3IEBAIFFTdHJpbmcgUVdlYlBsdWdpbkluZm86OmRlc2NyaXB0aW9uKCkgY29u
c3QKICovCiBRTGlzdDxRV2ViUGx1Z2luSW5mbzo6TWltZVR5cGU+IFFXZWJQbHVnaW5JbmZvOjpt
aW1lVHlwZXMoKSBjb25zdAogewotICAgIGlmICghbV9wYWNrYWdlKQotICAgICAgICByZXR1cm4g
UUxpc3Q8TWltZVR5cGU+KCk7CisgICAgaWYgKG1fcGFja2FnZSAmJiBtX21pbWVUeXBlcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNj
cmlwdGlvbnMgPSBtX3BhY2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOworICAgICAgICBNSU1F
VG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9u
cy5lbmQoKTsKIAotICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXM7Ci0gICAgY29uc3QgTUlN
RVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBtX3BhY2thZ2UtPm1pbWVU
b0Rlc2NyaXB0aW9ucygpOwotICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwotICAgIGZvciAoTUlNRVRvRGVzY3Jp
cHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgTWltZVR5cGUgbWltZVR5cGU7Ci0gICAgICAg
IG1pbWVUeXBlLm5hbWUgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgIG1pbWVUeXBlLmRlc2NyaXB0aW9u
ID0gaXQtPnNlY29uZDsKKyAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICAgICAgTWltZVR5cGUgbWltZVR5cGU7CisgICAgICAgICAgICBtaW1lVHlw
ZS5uYW1lID0gaXQtPmZpcnN0OworICAgICAgICAgICAgbWltZVR5cGUuZGVzY3JpcHRpb24gPSBp
dC0+c2Vjb25kOwogCi0gICAgICAgIFFTdHJpbmdMaXN0IGZpbGVFeHRlbnNpb25zOwotICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gbV9wYWNrYWdlLT5taW1lVG9FeHRlbnNpb25z
KCkuZ2V0KG1pbWVUeXBlLm5hbWUpOworICAgICAgICAgICAgUVN0cmluZ0xpc3QgZmlsZUV4dGVu
c2lvbnM7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gbV9wYWNrYWdl
LT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWVUeXBlLm5hbWUpOwogCi0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgKytpKQotICAgICAgICAgICAg
ZmlsZUV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAg
ICAgZmlsZUV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbnNbaV0pOwogCi0gICAgICAgIG1pbWVU
eXBlLmZpbGVFeHRlbnNpb25zID0gZmlsZUV4dGVuc2lvbnM7Ci0gICAgICAgIG1pbWVUeXBlcy5h
cHBlbmQobWltZVR5cGUpOworICAgICAgICAgICAgbWltZVR5cGUuZmlsZUV4dGVuc2lvbnMgPSBm
aWxlRXh0ZW5zaW9uczsKKyAgICAgICAgICAgIG1fbWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7
CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbWltZVR5cGVzOworICAgIHJldHVybiBt
X21pbWVUeXBlczsKIH0KIAogLyohCkBAIC0yMTYsNiArMjE1LDcgQEAgUVdlYlBsdWdpbkluZm8g
JlFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj0oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKQog
ICAgIG1fcGFja2FnZSA9IG90aGVyLm1fcGFja2FnZTsKICAgICBpZiAobV9wYWNrYWdlKQogICAg
ICAgICBtX3BhY2thZ2UtPnJlZigpOworICAgIG1fbWltZVR5cGVzID0gb3RoZXIubV9taW1lVHlw
ZXM7CiAKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3
ZWJwbHVnaW5kYXRhYmFzZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuaApp
bmRleCBjMzQzMDIwLi5iMjJjM2RlIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVn
aW5kYXRhYmFzZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgKQEAg
LTY0LDYgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBRV2ViUGx1Z2luSW5mb1ByaXZh
dGUqIGQ7CiAgICAgV2ViQ29yZTo6UGx1Z2luUGFja2FnZSogbV9wYWNrYWdlOworICAgIG11dGFi
bGUgUUxpc3Q8TWltZVR5cGU+IG1fbWltZVR5cGVzOwogfTsKIAogY2xhc3MgUVdlYlBsdWdpbkRh
dGFiYXNlUHJpdmF0ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQv
cXQvQ2hhbmdlTG9nCmluZGV4IDFlYWYzYjcuLjc4MDc1MjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDA5LTA5LTA1ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIHRoZSBRV2Vi
UGx1Z2luSW5mbzo6bWltZVR5cGVzKCkgZnVuY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1MQorCisgICAgICAgIEluc3RlYWQgb2YgY29u
c3RydWN0aW5nIGEgbGlzdCBvZiBNSU1FIHR5cGVzIGV2ZXJ5IHRpbWUgaXQgaXMgY2FsbGVkLAor
ICAgICAgICBkbyB0aGlzIG9ubHkgb25jZS4KKworICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0
YWJhc2UuY3BwOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86Om1pbWVUeXBlcyk6CisgICAgICAg
IChRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRh
dGFiYXNlLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3RzdF9xd2VicGx1
Z2luZGF0YWJhc2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6b3BlcmF0
b3Jhc3NpZ25fZGF0YSk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRv
cmFzc2lnbik6CisKIDIwMDktMDktMDQgIE1hcmsgTWVudG92YWkgIDxtYXJrQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcCBi
L1dlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFz
ZS5jcHAKaW5kZXggYzA1MzNhZC4uMWVlNjIwNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcAorKysgYi9XZWJL
aXQvcXQvdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3RzdF9xd2VicGx1Z2luZGF0YWJhc2UuY3Bw
CkBAIC00MCw2ICs0MCw4IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBvcGVyYXRvcmVxdWFs
X2RhdGEoKTsKICAgICB2b2lkIG9wZXJhdG9yZXF1YWwoKTsKICAgICB2b2lkIHByZWZlcnJlZFBs
dWdpbigpOworICAgIHZvaWQgb3BlcmF0b3Jhc3NpZ25fZGF0YSgpOworICAgIHZvaWQgb3BlcmF0
b3Jhc3NpZ24oKTsKIH07CiAKIHR5cGVkZWYgUVdlYlBsdWdpbkluZm86Ok1pbWVUeXBlIE1pbWVU
eXBlOwpAQCAtMzk2LDYgKzM5OCw0MCBAQCB2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6OnBy
ZWZlcnJlZFBsdWdpbigpCiAgICAgfQogfQogCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6
Om9wZXJhdG9yYXNzaWduX2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48UVdlYlBsdWdp
bkluZm8+KCJmaXJzdCIpOworICAgIFFUZXN0OjphZGRDb2x1bW48UVdlYlBsdWdpbkluZm8+KCJz
ZWNvbmQiKTsKKworICAgIFFXZWJQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBRV2ViU2V0dGlu
Z3M6OnBsdWdpbkRhdGFiYXNlKCk7CisgICAgUVRlc3Q6Om5ld1JvdygibnVsbCIpIDw8IFFXZWJQ
bHVnaW5JbmZvKCkgPDwgUVdlYlBsdWdpbkluZm8oKTsKKworICAgIFFMaXN0PFFXZWJQbHVnaW5J
bmZvPiBwbHVnaW5zID0gZGF0YWJhc2UtPnBsdWdpbnMoKTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IChwbHVnaW5zLmNvdW50KCkgLSAxKTsgKytpKSB7CisgICAgICAgIFFXZWJQbHVnaW5JbmZv
IGZpcnN0ID0gcGx1Z2lucy5hdChpKTsKKyAgICAgICAgUVdlYlBsdWdpbkluZm8gc2Vjb25kID0g
cGx1Z2lucy5hdChpICsgMSk7CisKKyAgICAgICAgUVRlc3Q6Om5ld1JvdyhRU3RyaW5nKCIlMT0l
MiIpLmFyZyhmaXJzdC5uYW1lKCksIHNlY29uZC5uYW1lKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgp
KSA8PCBmaXJzdCA8PCBzZWNvbmQ7CisgICAgfQorfQorCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0
YWJhc2U6Om9wZXJhdG9yYXNzaWduKCkKK3sKKyAgICBRRkVUQ0goUVdlYlBsdWdpbkluZm8sIGZp
cnN0KTsKKyAgICBRRkVUQ0goUVdlYlBsdWdpbkluZm8sIHNlY29uZCk7CisKKyAgICBRV2ViUGx1
Z2luSW5mbyBpbmZvOworICAgIFFDT01QQVJFKGluZm8ubWltZVR5cGVzKCksIFFMaXN0PE1pbWVU
eXBlPigpKTsKKyAgICBRQ09NUEFSRShpbmZvID0gZmlyc3QsIGZpcnN0KTsKKyAgICBRQ09NUEFS
RShpbmZvLCBmaXJzdCk7CisgICAgUUNPTVBBUkUoaW5mby5taW1lVHlwZXMoKSwgZmlyc3QubWlt
ZVR5cGVzKCkpOworICAgIFFDT01QQVJFKGluZm8gPSBzZWNvbmQsIHNlY29uZCk7CisgICAgUUNP
TVBBUkUoaW5mbywgc2Vjb25kKTsKKyAgICBRQ09NUEFSRShpbmZvLm1pbWVUeXBlcygpLCBzZWNv
bmQubWltZVR5cGVzKCkpOworICAgIFFDT01QQVJFKGluZm8gPSBRV2ViUGx1Z2luSW5mbygpLCBR
V2ViUGx1Z2luSW5mbygpKTsKKyAgICBRQ09NUEFSRShpbmZvLm1pbWVUeXBlcygpLCBRTGlzdDxN
aW1lVHlwZT4oKSk7Cit9CisKIFFURVNUX01BSU4odHN0X1FXZWJQbHVnaW5EYXRhYmFzZSkKIAog
I2luY2x1ZGUgInRzdF9xd2VicGx1Z2luZGF0YWJhc2UubW9jIgotLSAKMS42LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39120</attachid>
            <date>2009-09-06 01:51:11 -0700</date>
            <delta_ts>2009-09-06 02:21:23 -0700</delta_ts>
            <desc>Add normalizePathForComparison() function to platform/FileSystem.</desc>
            <filename>0001-Add-normalizePathForComparison-function-to-platform-.patch</filename>
            <type>text/plain</type>
            <size>7398</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSA4MzhhMWNiNzM1MGU4MWFjNzQ3ZjZmMjZiZjQxMDZmNGE1ODg5YTkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFN1biwgNiBTZXAgMjAwOSAxMjowOToyOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBu
b3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbigpIGZ1bmN0aW9uIHRvIHBsYXRmb3JtL0ZpbGVTeXN0
ZW0uCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKCkltcGxl
bWVudCBpdCBmb3IgdGhlIFF0IHBvcnQuCgpUaGUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgdXNl
ZCBpbiBQbHVnaW5EYXRhYmFzZSwgb3RoZXIgcG9ydHMgc2hvdWxkCmltcGxlbWVudCBpdCwgb3Ro
ZXJ3aXNlIHRoZXkgd2lsbCBzdWZmZXIgZnJvbSBlZGdlIGNhc2UgYnVncy4KLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKysrKysr
KysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oICAgICAgICAgICAg
ICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hy
b21pdW0uY3BwIHwgICAgNiArKysrCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3Rr
LmNwcCAgICAgICAgICAgfCAgICA2ICsrKysKIFdlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRmlsZVN5
c3RlbUhhaWt1LmNwcCAgICAgICB8ICAgIDYgKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwICAgICAgIHwgICAgNiArKysrCiBXZWJDb3JlL3BsYXRmb3JtL3F0
L0ZpbGVTeXN0ZW1RdC5jcHAgICAgICAgICAgICAgfCAgICA1ICsrKwogV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgICAgICAgICAgIHwgICAgNiArKysrCiBXZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5jZS5jcHAgICAgICAgfCAgICA2ICsrKysKIFdlYkNv
cmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcCAgICAgICAgICAgICB8ICAgIDYgKysrKwog
MTAgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk5ODhj
NzYuLjRlNTg5ZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDktMDktMDYgIEpha3ViIFdpZWN6b3JlayAg
PGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKCkgZnVuY3Rpb24gdG8g
cGxhdGZvcm0vRmlsZVN5c3RlbS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NjUxCisKKyAgICAgICAgSW1wbGVtZW50IGl0IGZvciB0aGUgUXQgcG9y
dC4KKworICAgICAgICBUaGUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgdXNlZCBpbiBQbHVnaW5E
YXRhYmFzZSwgb3RoZXIgcG9ydHMgc2hvdWxkCisgICAgICAgIGltcGxlbWVudCBpdCwgb3RoZXJ3
aXNlIHRoZXkgd2lsbCBzdWZmZXIgZnJvbSBlZGdlIGNhc2UgYnVncy4KKworICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lz
dGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplUGF0aEZvckNvbXBh
cmlzb24pOiBTdHViLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKTogU3R1Yi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9GaWxlU3lzdGVtSGFpa3UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ybWFsaXplUGF0aEZvckNvbXBhcmlzb24pOiBTdHViLgorICAgICAgICAqIHBsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxp
emVQYXRoRm9yQ29tcGFyaXNvbik6IFN0dWIuCisgICAgICAgICogcGxhdGZvcm0vcXQvRmlsZVN5
c3RlbVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29u
KTogVXNpbmcgUURpcjo6Y2xlYW5QYXRoKCkuCisgICAgICAgICogcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplUGF0aEZvckNvbXBhcmlz
b24pOiBTdHViLgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbik6IFN0dWIuCisg
ICAgICAgICogcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKTogU3R1Yi4KKwogMjAwOS0wOS0wNSAgRGltaXRy
aSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggOTU4ZWI3My4uZGZlYmMxMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE0Miw2ICsxNDIsNyBAQCBib29sIG1ha2VBbGxEaXJlY3Rv
cmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CiBT
dHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIGRpcmVjdG9yeU5h
bWUoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgbm9ybWFsaXplUGF0aEZvckNvbXBhcmlzb24oY29u
c3QgU3RyaW5nJik7CiAKIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDku
LjJiOGNjODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3Rl
bUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1D
aHJvbWl1bS5jcHAKQEAgLTc3LDQgKzc3LDEwIEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwog
fQogCitTdHJpbmcgbm9ybWFsaXplUGF0aEZvckNvbXBhcmlzb24oY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9G
aWxlU3lzdGVtR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3Bw
CmluZGV4IGZjZGM4NjMuLjAzMTg3MmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1H
dGsuY3BwCkBAIC0xOTksNiArMTk5LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsK
IH0KIAorU3RyaW5nIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwog
VmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0ZpbGVTeXN0ZW1IYWlrdS5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2hhaWt1L0ZpbGVTeXN0ZW1IYWlrdS5jcHAKaW5kZXggNzQwMGNkMS4uYzdiMmMwNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9GaWxlU3lzdGVtSGFpa3UuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRmlsZVN5c3RlbUhhaWt1LmNwcApAQCAtNzgsNSAr
NzgsMTEgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCitTdHJpbmcg
bm9ybWFsaXplUGF0aEZvckNvbXBhcmlzb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApp
bmRleCBkYTEyNGE4Li4zZTZkNjNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwCkBAIC0xNTcsNiArMTU3LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZGlybmFtZShmc1JlcC5tdXRhYmxlRGF0YSgp
KTsKIH0KIAorU3RyaW5nIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KwogLy8gT0sgdG8gbm90IGltcGxlbWVudCBsaXN0RGlyZWN0b3J5IGF0IHRoZSBtb21lbnQsIGJl
Y2F1c2UgaXQncyBvbmx5IHVzZWQgZm9yIHBsdWctaW5zLCBhbmQKIC8vIGFsbCBwbGF0Zm9ybXMg
dGhhdCB1c2UgdGhlIHNoYXJlZCBwbHVnLWluIGltcGxlbWVudGF0aW9uIGhhdmUgaW1wbGVtZW50
YXRpb25zLiBXZSdkIG5lZWQKIC8vIHRvIGltcGxlbWVudCBpdCBpZiB3ZSB3YW50ZWQgdG8gdXNl
IFBsdWdpbkRhdGFiYXNlLmNwcCBvbiB0aGUgTWFjLiBCZXR0ZXIgdG8gbm90IGltcGxlbWVudApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCmluZGV4IDAyYmM2NzguLjcxZjI0ODYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKQEAgLTk5LDYgKzk5LDExIEBAIFN0cmlu
ZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nKFFG
aWxlSW5mbyhwYXRoKS5hYnNvbHV0ZVBhdGgoKSk7CiB9CiAKK1N0cmluZyBub3JtYWxpemVQYXRo
Rm9yQ29tcGFyaXNvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIFFEaXI6OmNs
ZWFuUGF0aChwYXRoKTsKK30KKwogVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+
IGVudHJpZXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGE2NzZm
ODcuLjBhYTQzNmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0x
MzksNiArMTM5LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICByZXR1cm4gZGlyTmFtZTsKIH0KIAorU3RyaW5nIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJp
c29uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKIHsKICAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvRmlsZVN5c3RlbVdpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3Rl
bVdpbmNlLmNwcAppbmRleCAyYmI0ZGQ1Li43NjZjODAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW5jZS9GaWxlU3lzdGVtV2luY2UuY3BwCkBAIC0xNjgsNiArMTY4LDEyIEBAIFN0cmluZyBkaXJl
Y3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
K1N0cmluZyBub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIENTdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciosIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93
eC9GaWxlU3lzdGVtV3guY3BwCmluZGV4IDdkZTQyNWUuLmE3NTBiODMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3d4L0ZpbGVTeXN0ZW1XeC5jcHAKQEAgLTk3LDYgKzk3LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmlu
ZyBub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIENTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciogcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotLSAKMS42LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39121</attachid>
            <date>2009-09-06 02:21:23 -0700</date>
            <delta_ts>2009-09-08 11:56:06 -0700</delta_ts>
            <desc>Add normalizePathForComparison() function to platform/FileSystem.</desc>
            <filename>0001-Add-normalizePathForComparison-function-to-platform-.patch</filename>
            <type>text/plain</type>
            <size>7357</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSA4MzhhMWNiNzM1MGU4MWFjNzQ3ZjZmMjZiZjQxMDZmNGE1ODg5YTkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFN1biwgNiBTZXAgMjAwOSAxMjowOToyOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBu
b3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbigpIGZ1bmN0aW9uIHRvIHBsYXRmb3JtL0ZpbGVTeXN0
ZW0uCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKCkltcGxl
bWVudCBpdCBmb3IgdGhlIFF0IHBvcnQuCgpUaGUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgdXNl
ZCBpbiBQbHVnaW5EYXRhYmFzZSwgb3RoZXIgcG9ydHMgc2hvdWxkCmltcGxlbWVudCBpdCwgb3Ro
ZXJ3aXNlIHRoZXkgd2lsbCBzdWZmZXIgZnJvbSBlZGdlIGNhc2UgYnVncy4KLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKysrKysr
KysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oICAgICAgICAgICAg
ICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hy
b21pdW0uY3BwIHwgICAgNiArKysrCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3Rr
LmNwcCAgICAgICAgICAgfCAgICA2ICsrKysKIFdlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRmlsZVN5
c3RlbUhhaWt1LmNwcCAgICAgICB8ICAgIDYgKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwICAgICAgIHwgICAgNiArKysrCiBXZWJDb3JlL3BsYXRmb3JtL3F0
L0ZpbGVTeXN0ZW1RdC5jcHAgICAgICAgICAgICAgfCAgICA1ICsrKwogV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgICAgICAgICAgIHwgICAgNiArKysrCiBXZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5jZS5jcHAgICAgICAgfCAgICA2ICsrKysKIFdlYkNv
cmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcCAgICAgICAgICAgICB8ICAgIDYgKysrKwog
MTAgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk5ODhj
NzYuLjRlNTg5ZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDktMDktMDYgIEpha3ViIFdpZWN6b3JlayAg
PGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKCkgZnVuY3Rpb24gdG8g
cGxhdGZvcm0vRmlsZVN5c3RlbS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NjUxCisKKyAgICAgICAgSW1wbGVtZW50IGl0IGZvciB0aGUgUXQgcG9y
dC4KKworICAgICAgICBUaGUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgdXNlZCBpbiBQbHVnaW5E
YXRhYmFzZSwgb3RoZXIgcG9ydHMgc2hvdWxkCisgICAgICAgIGltcGxlbWVudCBpdCwgb3RoZXJ3
aXNlIHRoZXkgd2lsbCBzdWZmZXIgZnJvbSBlZGdlIGNhc2UgYnVncy4KKworICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lz
dGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplUGF0aEZvckNvbXBh
cmlzb24pOiBTdHViLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKTogU3R1Yi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9GaWxlU3lzdGVtSGFpa3UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ybWFsaXplUGF0aEZvckNvbXBhcmlzb24pOiBTdHViLgorICAgICAgICAqIHBsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxp
emVQYXRoRm9yQ29tcGFyaXNvbik6IFN0dWIuCisgICAgICAgICogcGxhdGZvcm0vcXQvRmlsZVN5
c3RlbVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29u
KTogVXNpbmcgUURpcjo6Y2xlYW5QYXRoKCkuCisgICAgICAgICogcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplUGF0aEZvckNvbXBhcmlz
b24pOiBTdHViLgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbik6IFN0dWIuCisg
ICAgICAgICogcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKTogU3R1Yi4KKwogMjAwOS0wOS0wNSAgRGltaXRy
aSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgoKICAgICAgICAgVW5yZXZpZXdlZCwg
YnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCA5NThlYjczLi5kZmViYzEzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTQyLDYgKzE0Miw3IEBAIGJvb2wgbWFrZUFsbERpcmVjdG9y
aWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CiBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKIFN0
cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZGlyZWN0b3J5TmFt
ZShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbihjb25z
dCBTdHJpbmcmKTsKCiBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIgPSBTdHJpbmcoKSk7CgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjJi
OGNjODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNo
cm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHAKQEAgLTc3LDQgKzc3LDEwIEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQoK
K1N0cmluZyBub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3Rl
bUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAppbmRleCBm
Y2RjODYzLi4wMzE4NzJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lz
dGVtR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApA
QCAtMTk5LDYgKzE5OSwxMiBAQCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBh
dGgpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZGlybmFtZS5nZXQoKSk7CiB9CgorU3Ry
aW5nIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBwYXRoOworfQorCiBWZWN0b3I8U3RyaW5n
PiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIp
CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vaGFpa3UvRmlsZVN5c3RlbUhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3Uv
RmlsZVN5c3RlbUhhaWt1LmNwcAppbmRleCA3NDAwY2QxLi5jN2IyYzA3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0ZpbGVTeXN0ZW1IYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9oYWlrdS9GaWxlU3lzdGVtSGFpa3UuY3BwCkBAIC03OCw1ICs3OCwxMSBAQCBWZWN0
b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CgorU3RyaW5nIG5vcm1hbGl6ZVBhdGhG
b3JDb21wYXJpc29uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBwYXRoOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGRhMTI0YTguLjNlNmQ2
M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTE1
Nyw2ICsxNTcsMTIgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIHJldHVybiBkaXJuYW1lKGZzUmVwLm11dGFibGVEYXRhKCkpOwogfQoKK1N0cmluZyBub3Jt
YWxpemVQYXRoRm9yQ29tcGFyaXNvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKwogLy8gT0sgdG8gbm90IGltcGxlbWVu
dCBsaXN0RGlyZWN0b3J5IGF0IHRoZSBtb21lbnQsIGJlY2F1c2UgaXQncyBvbmx5IHVzZWQgZm9y
IHBsdWctaW5zLCBhbmQKIC8vIGFsbCBwbGF0Zm9ybXMgdGhhdCB1c2UgdGhlIHNoYXJlZCBwbHVn
LWluIGltcGxlbWVudGF0aW9uIGhhdmUgaW1wbGVtZW50YXRpb25zLiBXZSdkIG5lZWQKIC8vIHRv
IGltcGxlbWVudCBpdCBpZiB3ZSB3YW50ZWQgdG8gdXNlIFBsdWdpbkRhdGFiYXNlLmNwcCBvbiB0
aGUgTWFjLiBCZXR0ZXIgdG8gbm90IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVt
UXQuY3BwCmluZGV4IDAyYmM2NzguLjcxZjI0ODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vcXQvRmlsZVN5c3RlbVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0
ZW1RdC5jcHAKQEAgLTk5LDYgKzk5LDExIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nKFFGaWxlSW5mbyhwYXRoKS5hYnNvbHV0ZVBh
dGgoKSk7CiB9CgorU3RyaW5nIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gUURpcjo6Y2xlYW5QYXRoKHBhdGgpOworfQorCiBWZWN0
b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBmaWx0ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggYTY3NmY4Ny4uMGFhNDM2ZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTEzOSw2ICsxMzksMTIgQEAgU3RyaW5nIGRp
cmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBkaXJOYW1lOwogfQoK
K1N0cmluZyBub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKwogc3RhdGljIFN0
cmluZyBidW5kbGVOYW1lKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbmNlLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbmNlLmNwcAppbmRleCAyYmI0ZGQ1Li43NjZj
ODAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5jZS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luY2UuY3BwCkBAIC0x
NjgsNiArMTY4LDEyIEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CgorU3RyaW5nIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJp
c29uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBwYXRoOworfQorCiBDU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IGNoYXIqLCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBoYW5kbGUgPSBJTlZBTElEX0hBTkRM
RV9WQUxVRTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAppbmRleCA3ZGU0MjVlLi5h
NzUwYjgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwCkBAIC05Nyw2ICs5Nywx
MiBAQCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQoKK1N0cmluZyBub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbihjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcGF0aDsK
K30KKwogQ1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFyKiBwcmVmaXgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0tCjEuNi40
LjEKCg==
</data>
<flag name="review"
          id="20165"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39122</attachid>
            <date>2009-09-06 02:23:52 -0700</date>
            <delta_ts>2009-10-19 05:14:16 -0700</delta_ts>
            <desc>Don&apos;t clear the plugin database when changing search paths.</desc>
            <filename>0001-Don-t-clear-the-plugin-database-when-changing-search.patch</filename>
            <type>text/plain</type>
            <size>5057</size>
            <attacher name="Jakub Wieczorek">jwieczorek</attacher>
            
              <data encoding="base64">RnJvbSA0MTVlYjg4NDdmMjllZmYzYTA4YTllNTY3Nzc1NmRiODNlYzQ4YmRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CkRh
dGU6IFN1biwgNiBTZXAgMjAwOSAxMzowODo0MCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIERvbid0
IGNsZWFyIHRoZSBwbHVnaW4gZGF0YWJhc2Ugd2hlbiBjaGFuZ2luZyBzZWFyY2ggcGF0aHMuCiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKClJhdGhlciB0aGFu
IGNsZWFyaW5nIHRoZSBwbHVnaW4gZGF0YWJhc2UgYWZ0ZXIgc2V0dGluZyBhIG5ldyBzZXQgb2YK
c2VhcmNoIHBhdGhzLCBsZXQgdGhlIHJlZnJlc2goKSBtZXRob2QgdGFrZSBjYXJlIG9mIHRoZSBw
bHVnaW5zIHRoYXQgYXJlCm5vIGxvbmdlciBsb2NhdGVkIGluIHRoZSBzZWFyY2ggcGF0aHMgYW5k
IHRodXMgc2hvdWxkIG5vdCBiZSB0YWtlbiBpbnRvCmFjY291bnQgYW55IG1vcmUuCi0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrKysrKysrKysr
KysKIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgfCAgIDE2ICsrKysrKysrKysr
Ky0tLS0KIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oICAgfCAgICA3ICstLS0tLS0K
IDMgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OTg4
Yzc2Li42ZWQyN2ZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTA5LTA2ICBKYWt1YiBXaWVjem9yZWsg
IDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERvbid0IGNsZWFyIHRoZSBwbHVnaW4gZGF0YWJhc2Ugd2hlbiBjaGFuZ2lu
ZyBzZWFyY2ggcGF0aHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1MQorCisgICAgICAgIFJhdGhlciB0aGFuIGNsZWFyaW5nIHRoZSBwbHVnaW4g
ZGF0YWJhc2UgYWZ0ZXIgc2V0dGluZyBhIG5ldyBzZXQgb2YKKyAgICAgICAgc2VhcmNoIHBhdGhz
LCBsZXQgdGhlIHJlZnJlc2goKSBtZXRob2QgdGFrZSBjYXJlIG9mIHRoZSBwbHVnaW5zIHRoYXQg
YXJlCisgICAgICAgIG5vIGxvbmdlciBsb2NhdGVkIGluIHRoZSBzZWFyY2ggcGF0aHMgYW5kIHRo
dXMgc2hvdWxkIG5vdCBiZSB0YWtlbiBpbnRvCisgICAgICAgIGFjY291bnQgYW55IG1vcmUuCisK
KyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjphZGRFeHRyYVBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0RGVsZXRlZFBsdWdpbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRGF0YWJhc2U6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFz
ZTo6c2V0UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJh
c2U6OmlzUHJlZmVycmVkUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmg6CisKIDIwMDktMDktMDUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcAppbmRleCBmNDBlZDk1Li5iYzEzMjgwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6aXNN
SU1FVHlwZVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogdm9pZCBQbHVnaW5E
YXRhYmFzZTo6YWRkRXh0cmFQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnkp
CiB7Ci0gICAgbV9wbHVnaW5EaXJlY3Rvcmllcy5hcHBlbmQoZGlyZWN0b3J5KTsKKyAgICBtX3Bs
dWdpbkRpcmVjdG9yaWVzLmFwcGVuZChub3JtYWxpemVQYXRoRm9yQ29tcGFyaXNvbihkaXJlY3Rv
cnkpKTsKICAgICByZWZyZXNoKCk7CiB9CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFBsdWdp
bkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lucyhQbHVnaW5TZXQmIHBsdWdpbnMpIGNvbnN0CiB7
CiAgICAgUGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BsdWdpbnMuZW5kKCk7CiAg
ICAgZm9yIChQbHVnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5zLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoIWZpbGVFeGlzdHMoKCppdCktPnBhdGgo
KSkpCisgICAgICAgIGlmICghZmlsZUV4aXN0cygoKml0KS0+cGF0aCgpKSB8fCBtX3BsdWdpbkRp
cmVjdG9yaWVzLmZpbmQoKCppdCktPnBhcmVudERpcmVjdG9yeSgpKSA9PSAtMSkKICAgICAgICAg
ICAgIHBsdWdpbnMuYWRkKCppdCk7CiAgICAgfQogfQpAQCAtMjg5LDYgKzI4OSw3IEBAIGJvb2wg
UGx1Z2luRGF0YWJhc2U6OmFkZChQYXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBycFBhY2thZ2Up
CiAgICAgQVNTRVJUX0FSRyhwcnBQYWNrYWdlLCBwcnBQYWNrYWdlKTsKIAogICAgIFJlZlB0cjxQ
bHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gcHJwUGFja2FnZTsKKyAgICBBU1NFUlQobV9wbHVnaW5E
aXJlY3Rvcmllcy5maW5kKHBhY2thZ2UtPnBhcmVudERpcmVjdG9yeSgpKSAhPSAtMSk7CiAKICAg
ICBpZiAoIW1fcGx1Z2lucy5hZGQocGFja2FnZSkuc2Vjb25kKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zMjAsNiArMzIxLDE0IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmNsZWFyKCkKICAg
ICBtX3ByZWZlcnJlZFBsdWdpbnMuY2xlYXIoKTsKIH0KIAordm9pZCBQbHVnaW5EYXRhYmFzZTo6
c2V0UGx1Z2luRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQor
eworICAgIG1fcGx1Z2luRGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKKyAgICBWZWN0b3I8U3Ry
aW5nPjo6aXRlcmF0b3IgZW5kID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5lbmQoKTsKKyAgICBmb3Ig
KFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAqaXQgPSBub3JtYWxpemVQYXRoRm9yQ29tcGFy
aXNvbigqaXQpOworfQorCiAjaWYgIVBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oV1gpCiAv
LyBGb3IgU2FmYXJpL1dpbiB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMgYXJlIGltcGxlbWVu
dGVkCiAvLyBpbiBQbHVnaW5EYXRhYmFzZVdpbi5jcHAsIGJ1dCBpZiB3ZSBjYW4gdXNlIFdlYkNv
cmUgY29uc3RydWN0cwpAQCAtMzk4LDggKzQwNyw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6Omlz
UHJlZmVycmVkUGx1Z2luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBwcmVmZXJy
ZWRQYXRoLmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRpb24gRGF0YVxcTW96aWxsYVxccGx1Z2lu
cyIpKTsKICNlbmRpZgogCi0gICAgLy8gVE9ETzogV2Ugc2hvdWxkIG5vcm1hbGl6ZSB0aGUgcGF0
aCBiZWZvcmUgZG9pbmcgYSBjb21wYXJpc29uLgotICAgIHJldHVybiBwYXRoID09IHByZWZlcnJl
ZFBhdGg7CisgICAgcmV0dXJuIG5vcm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKHBhdGgpID09IG5v
cm1hbGl6ZVBhdGhGb3JDb21wYXJpc29uKHByZWZlcnJlZFBhdGgpOwogfQogCiB2b2lkIFBsdWdp
bkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBw
YXRocykgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5o
IGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggZmRjOTMzMC4uNjhjOGMz
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKKysrIGIvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTY5LDEyICs2OSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgICAgIHZvaWQgc2V0UHJlZmVycmVkUGx1Z2luRm9y
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1Z2luUGFja2FnZSogcGx1Z2luKTsK
IAotICAgICAgICB2b2lkIHNldFBsdWdpbkRpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkaXJlY3RvcmllcykKLSAgICAgICAgewotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAg
ICAgIG1fcGx1Z2luRGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKLSAgICAgICAgfQotCiAgICAg
ICAgIHZvaWQgc2V0Q2xpZW50KFBsdWdpbkRhdGFiYXNlQ2xpZW50KiBjbGllbnQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1fY2xpZW50ID0gY2xpZW50OwpAQCAtODIsNiArNzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGRlZmF1bHRQ
bHVnaW5EaXJlY3RvcmllcygpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3Rv
cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRGlyZWN0b3JpZXM7IH0KKyAgICAgICAgdm9p
ZCBzZXRQbHVnaW5EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3Jp
ZXMoSGFzaFNldDxTdHJpbmc+JikgY29uc3Q7Ci0tIAoxLjYuNC4xCgo=
</data>
<flag name="review"
          id="20166"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="22794"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>