<?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>155242</bug_id>
          
          <creation_ts>2016-03-09 11:06:02 -0800</creation_ts>
          <short_desc>Move prevalent resource classifier from WebCore to WebKit</short_desc>
          <delta_ts>2016-03-11 16:36:13 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172625</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 11:06:02 -0800</bug_when>
    <thetext>Move prevalent resource classifier from WebCore to WebKit after the WebKit2 implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172626</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 11:06:45 -0800</bug_when>
    <thetext>rdar://problem/24913272</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172631</commentid>
    <comment_count>2</comment_count>
      <attachid>273445</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 11:21:45 -0800</bug_when>
    <thetext>Created attachment 273445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172633</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 11:24:15 -0800</bug_when>
    <thetext>Attachment 273445 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:56:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172692</commentid>
    <comment_count>4</comment_count>
      <attachid>273462</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 12:48:14 -0800</bug_when>
    <thetext>Created attachment 273462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172693</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 12:49:11 -0800</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=155243 regarding the style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172695</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 12:49:54 -0800</bug_when>
    <thetext>Attachment 273462 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:56:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172708</commentid>
    <comment_count>7</comment_count>
      <attachid>273464</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 13:15:28 -0800</bug_when>
    <thetext>Created attachment 273464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172711</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 13:16:52 -0800</bug_when>
    <thetext>Attachment 273464 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:59:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172713</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 13:17:18 -0800</bug_when>
    <thetext>The classifier needs to include StringHash.h except for on debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172737</commentid>
    <comment_count>10</comment_count>
      <attachid>273464</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-09 13:48:33 -0800</bug_when>
    <thetext>Comment on attachment 273464
Patch

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

This is looking pretty good, but it needs a bit more work.

&gt; Source/WebCore/ChangeLog:4
&gt; +        rdar://problem/24913272

We write this as &lt;rdar://problem/24913272&gt;

&gt; Source/WebCore/ChangeLog:5
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=155242

Bugzilla bug goes BEFORE the corresponding radar. Most other people don&apos;t care about the Radar number! :-)

&gt; Source/WebCore/ChangeLog:24
&gt; +2016-03-09  John Wilander  &lt;wilander@apple.com&gt;

Whoops! It looks like you accidentally ran &quot;prepare-ChangeLog&quot; twice. Please delete the duplicate data below.

&gt; Source/WebKit2/ChangeLog:4
&gt; +        rdar://problem/24913272

Please put inside &lt;&gt;

&gt; Source/WebKit2/ChangeLog:5
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=155242

Please move above the Radar.

&gt; Source/WebKit2/ChangeLog:18
&gt; +2016-03-09  John Wilander  &lt;wilander@apple.com&gt;

Please get rid of this duplicate ChangeLog info.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:61
&gt; +    Vector&lt;String&gt; prevalentResourcesWithUserInteraction;

This could just be Vector&lt;String&gt; prevalentResources, prevalentResourcesWithUserInteraction;

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:52
&gt; +        if (resourceStatistic.isPrevalentResource &amp;&amp; resourceStatistic.hadUserInteraction) {

We don&apos;t use curly braces when there is only one line in the conditional clause.

This might read better as follows:

if (resourceStatistics.isPrevalentResource) {
    if (resourceStatistic.hadUserInteraction)
        prevalentResourcesWithUserInteraction.append(resourceStatistic.highLevelDomain);
    else
        prevalentResources.append(resourceStatistic.highLevelDomain);
    continue;
}

... then you can get rid of the &apos;else&apos; at line 56.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:55
&gt; +            prevalentResources.append(resourceStatistic.highLevelDomain);

Ditto.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:56
&gt; +        } else if (resourceStatistic.subframeUnderTopFrameOrigins.size() &gt; subframeUnderTopFrameOriginsThreshold

... this could just be:

if (hasPrevalentResourceCharacteristics(resourceStatistics) {
   ... stuff ...
}

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:59
&gt; +                   || resourceStatistic.redirectedToOtherPrevalentResourceOrigins.size() &gt; redirectedToOtherPrevalentResourceOriginsThreshold) {

I liked this much better as a predicate:

static bool hasPrevalentResourceCharacteristics(const ResourceStatistics&amp; ...), like when it was in WebCore. Please change that back.

This is also the cause of your stylebot failures. The &quot;||&quot; should align with one indent below the &apos;}&apos; in the &quot;} else if&quot; statement, not the &quot;if&quot;.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.h:38
&gt; +class WebResourcePrevalenceClassifier {

It doesn&apos;t make sense for this to be a class when its only purpose is to be a holder for a single static method.

Instead, I think this should just be a namespace containing one static function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172743</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-09 13:54:39 -0800</bug_when>
    <thetext>Note: GTK (and probably EFL) is failing because they don&apos;t know what the new WebResourcePrevalenceClassifier is:

error: undefined reference to &apos;WebKit::WebResourcePrevalenceClassifier::classify

Please add it to the the three CMake files where the &quot;UIProcess/WebResourceLoadStatisticsStore.cpp&quot; files are added:

PlatformEfl.cmake:    UIProcess/WebResourceLoadStatisticsStore.cpp
PlatformGTK.cmake:    UIProcess/WebResourceLoadStatisticsStore.cpp
PlatformMac.cmake:    UIProcess/WebResourceLoadStatisticsStore.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172745</commentid>
    <comment_count>12</comment_count>
      <attachid>273470</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 14:02:42 -0800</bug_when>
    <thetext>Created attachment 273470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172747</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 14:03:57 -0800</bug_when>
    <thetext>Attachment 273470 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:59:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172748</commentid>
    <comment_count>14</comment_count>
      <attachid>273471</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 14:05:44 -0800</bug_when>
    <thetext>Created attachment 273471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172749</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 14:06:30 -0800</bug_when>
    <thetext>Attachment 273471 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:59:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172757</commentid>
    <comment_count>16</comment_count>
      <attachid>273473</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 14:13:50 -0800</bug_when>
    <thetext>Created attachment 273473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172793</commentid>
    <comment_count>17</comment_count>
      <attachid>273473</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-09 14:53:39 -0800</bug_when>
    <thetext>Comment on attachment 273473
Patch

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

You did not correct the ChangeLog per my earlier review comments. r- Until you address those issues.

&gt; Source/WebCore/ChangeLog:4
&gt; +        rdar://problem/24913272

Please place this inside &lt;&gt;.

&gt; Source/WebCore/ChangeLog:5
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=155242

Please move this above the Radar.

&gt; Source/WebKit2/ChangeLog:4
&gt; +        rdar://problem/24913272

Please place this inside &lt;&gt;.

&gt; Source/WebKit2/ChangeLog:5
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=155242

This needs to go above the Radar.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:56
&gt; +        } else if (resourceStatistic.subframeUnderTopFrameOrigins.size() &gt; subframeUnderTopFrameOriginsThreshold

You did not address my request that you make these four lines of &quot;||&quot; into a static predicate method.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.h:38
&gt; +class WebResourcePrevalenceClassifier {

You did not address my comment that a class with a single static method is not the right approach. We are not programming in Java!

This should be a namespace holding this static method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172894</commentid>
    <comment_count>18</comment_count>
      <attachid>273473</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-09 17:07:20 -0800</bug_when>
    <thetext>Comment on attachment 273473
Patch

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

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:33
&gt; +namespace WebKit {
&gt; +class WebResourceLoadStatisticsStore;
&gt; +}

This is a layering violation. WebCore shouldn&apos;t know things about WebKit. We need to find another solution.

&gt;&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.h:38
&gt;&gt; +class WebResourcePrevalenceClassifier {
&gt; 
&gt; You did not address my comment that a class with a single static method is not the right approach. We are not programming in Java!
&gt; 
&gt; This should be a namespace holding this static method.

Or just a free function in the WebKit namespace :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172899</commentid>
    <comment_count>19</comment_count>
      <attachid>273513</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 17:16:41 -0800</bug_when>
    <thetext>Created attachment 273513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172901</commentid>
    <comment_count>20</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-09 17:18:45 -0800</bug_when>
    <thetext>Sorry, Brent! I did not see your comments between my previous patch changes. I was busy fixing the various build errors on the bots.

Andy, the layering violation is still in this patch. I&apos;ll find a way to address it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172980</commentid>
    <comment_count>21</comment_count>
      <attachid>273513</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-09 20:26:02 -0800</bug_when>
    <thetext>Comment on attachment 273513
Patch

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

Patch doesn&apos;t apply for some reason! Please do an &quot;update-webkit&quot; and try uploading again...

&gt; Source/WebCore/ChangeLog:22
&gt; +           - Made this class friend of WebKit::WebResourceLoadStatisticsStore since the latter needs to send the statistics map for classification.

ResourceLoadStatisticsStore.h has no changes anymore.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:34
&gt; +

This isn&apos;t needed anymore.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:67
&gt; +    friend class WebKit::WebResourceLoadStatisticsStore;

This isn&apos;t needed anymore.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:69
&gt; +bool hasPrevalentResourceCharacteristics(const ResourceLoadStatistics&amp; resourceStatistic)

This should be a static function. Move it above your &apos;classify&apos; function.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:74
&gt; +    || resourceStatistic.redirectedToOtherPrevalentResourceOrigins.size() &gt; redirectedToOtherPrevalentResourceOriginsThreshold;

Each &quot;||&quot; should be indented another level.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.h:40
&gt; +bool hasPrevalentResourceCharacteristics(const WebCore::ResourceLoadStatistics&amp; resourceStatistic);

This doesn&apos;t need to be exposed outside this compilation unit. Just remove this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173194</commentid>
    <comment_count>22</comment_count>
      <attachid>273588</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-10 11:35:39 -0800</bug_when>
    <thetext>Created attachment 273588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173198</commentid>
    <comment_count>23</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-10 11:37:46 -0800</bug_when>
    <thetext>Thanks, Brent! I&apos;ve addressed all your comments and changed the layering violation to a model where WebKit supplies a classifier lambda for the WebCore part to apply to its statistics map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173210</commentid>
    <comment_count>24</comment_count>
      <attachid>273588</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-10 11:44:29 -0800</bug_when>
    <thetext>Comment on attachment 273588
Patch

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

Looks good! Since this touches WK2 code we need to get Andy to do the final r+. Maybe you could adjust my minor nits and upload a final clean patch for him to review.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:140
&gt; +static const unsigned minimumOriginsLoadedForProcessing = 100;

I recommend putting all of these magic numbers together at the top of the file where they can be easily tweaked.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:148
&gt; +        processFunction(resourceStatistic);

Nice!

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:63
&gt; +    WEBCORE_EXPORT void processStatistics(std::function&lt;void(ResourceLoadStatistics&amp;)&gt;&amp;&amp; processFunction);

You don&apos;t need the argument name here.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:65
&gt;      // TODO: Notify individual WebProcesses of prevalent domains. &lt;rdar://problem/24703099&gt;

For completeness, you should mention that this TODO should consume the two lists.

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.h:39
&gt; +void classify(WebCore::ResourceLoadStatistics&amp; resourceStatistic, Vector&lt;String&gt;&amp; prevalentResources, Vector&lt;String&gt;&amp; prevalentResourcesWithUserInteraction);

You can get rid of the &quot;resourceStatistic&quot; argument here, it doesn&apos;t provide any new information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173276</commentid>
    <comment_count>25</comment_count>
      <attachid>273605</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-10 13:06:57 -0800</bug_when>
    <thetext>Created attachment 273605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173278</commentid>
    <comment_count>26</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-10 13:07:35 -0800</bug_when>
    <thetext>Thanks again, Brent! All those comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173284</commentid>
    <comment_count>27</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-10 13:14:57 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Thanks again, Brent! All those comments addressed.

Great! It looks good. Let&apos;s get Andy to do the final review and we can land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173345</commentid>
    <comment_count>28</comment_count>
      <attachid>273605</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-03-10 14:25:22 -0800</bug_when>
    <thetext>Comment on attachment 273605
Patch

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

&gt; Source/WebKit2/UIProcess/WebResourcePrevalenceClassifier.cpp:67
&gt; +    if (resourceStatistic.isPrevalentResource) {
&gt; +        if (resourceStatistic.hadUserInteraction)
&gt; +            prevalentResourcesWithUserInteraction.append(resourceStatistic.highLevelDomain);
&gt; +        else
&gt; +            prevalentResources.append(resourceStatistic.highLevelDomain);
&gt; +    } else if (hasPrevalentResourceCharacteristics(resourceStatistic)) {
&gt; +        if (resourceStatistic.hadUserInteraction)
&gt; +            prevalentResourcesWithUserInteraction.append(resourceStatistic.highLevelDomain);
&gt; +        else {
&gt; +            prevalentResources.append(resourceStatistic.highLevelDomain);
&gt; +            resourceStatistic.isPrevalentResource = true;
&gt; +        }
&gt; +    }

I&apos;d rather not duplicate the logic here.

if (resourceStatistic.isPrevalentResource || hasPrevalentResourceCharacteristics(resourceStatistic)) {
    if (resourceStatistic.hadUserInteraction)
        prevalentResourcesWithUserInteraction.append(resourceStatistic.highLevelDomain);
    else {
        prevalentResources.append(resourceStatistic.highLevelDomain);
        resourceStatistic.isPrevalentResource = true
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173355</commentid>
    <comment_count>29</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-10 14:46:45 -0800</bug_when>
    <thetext>That means we will set resourceStatistic.isPrevalentResource = true over and over when it is already true but I guess that&apos;s OK. Do others agree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173356</commentid>
    <comment_count>30</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-03-10 14:47:50 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; That means we will set resourceStatistic.isPrevalentResource = true over and
&gt; over when it is already true but I guess that&apos;s OK. Do others agree?
I think it&apos;s better than duplicating logic which is highly error prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173428</commentid>
    <comment_count>31</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-10 16:22:36 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; That means we will set resourceStatistic.isPrevalentResource = true over and
&gt; &gt; over when it is already true but I guess that&apos;s OK. Do others agree?
&gt; I think it&apos;s better than duplicating logic which is highly error prone.

That&apos;s a good point. Setting that boolean over and over is very low cost. The multiple branch statements were probably far more expensive!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173430</commentid>
    <comment_count>32</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-10 16:23:30 -0800</bug_when>
    <thetext>BTW: The iOS build error does not seem to be related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173431</commentid>
    <comment_count>33</comment_count>
      <attachid>273605</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-10 16:24:11 -0800</bug_when>
    <thetext>Comment on attachment 273605
Patch

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

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:148
&gt; +    if (m_resourceStatisticsMap.size() &lt; minimumOriginsLoadedForProcessing)
&gt; +        return;
&gt; +
&gt; +    for (auto&amp; resourceStatistic : m_resourceStatisticsMap.values())
&gt; +        processFunction(resourceStatistic);

Somewhat unfortunate that WebResourceLoadStatisticsStore has to repeatedly call this function even when there isn&apos;t enough data for processing. A better design would be where the processing function is registered up front and then called automatically at the appropriate times.

I&apos;m ok with you landing this as-is, but at some point we should move ResourceLoadStatisticsStore out of WebCore and fold it into WebResourceLoadStatisticsStore. Having this class split between WebCore and WebKit is awkward and no longer seems necessary with WebKit1 out of the picture. In its place could just be an abstract class that ResourceLoadObserver calls into and that is subclassed by something in WebKit. That&apos;s the typical pattern we follow for delegating from WebCore to WebKit.

&gt; Source/WebKit2/ChangeLog:18
&gt; +        (WebKit::WebResourcePrevalenceClassifier::hasPrevalentResourceCharacteristics):
&gt; +        (WebKit::WebResourcePrevalenceClassifier::classify):
&gt; +        * UIProcess/WebResourcePrevalenceClassifier.h: Added.
&gt; +           - Added new classifier for prevalent subresources.

A new .cpp file and namespace seem like overkill just to add a function that is only called in one place. Why not just define classify() and its helpers as static functions in WebResourceLoadStatisticsStore.cpp?

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:65
&gt; +    // TODO: Notify individual WebProcesses of prevalent domains using the two vectors populated by the classifier. &lt;rdar://problem/24703099&gt;

WebKit style says to use FIXME instead of TODO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173464</commentid>
    <comment_count>34</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-10 16:55:50 -0800</bug_when>
    <thetext>Zalan, your comment actually caught a subtle bug. This is how it should look:
if (resourceStatistic.isPrevalentResource || hasPrevalentResourceCharacteristics(resourceStatistic)) {
    resourceStatistic.isPrevalentResource = true;
    if (resourceStatistic.hadUserInteraction)
        prevalentResourcesWithUserInteraction.append(resourceStatistic.highLevelDomain);
    else
        prevalentResources.append(resourceStatistic.highLevelDomain);
}

Andy, I like your comments. I&apos;ve been onto this split of where the code resides but haven&apos;t really been able to suggest the right change. Anyhow, I&apos;ll gate the lamda call on an initial check and also get rid of the classifier files by moving the code to WebResourceLoadStatisticsStore.

New patch coming up.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173529</commentid>
    <comment_count>35</comment_count>
      <attachid>273668</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-10 19:23:31 -0800</bug_when>
    <thetext>Created attachment 273668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173544</commentid>
    <comment_count>36</comment_count>
      <attachid>273668</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-10 19:50:09 -0800</bug_when>
    <thetext>Comment on attachment 273668
Patch

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

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:149
&gt; +    if (hasEnoughDataForStatisticsProcessing()) {

You only call processStatistics() when there&apos;s enough data, so I&apos;d change this if statement to ASSERT(hasEnoughDataForStatisticsProcessing()). No need to check twice.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:179
&gt; +bool WebResourceLoadStatisticsStore::hasPrevalentResourceCharacteristics(const ResourceLoadStatistics&amp; resourceStatistic)

This function doesn&apos;t access an instance of WebResourceLoadStatisticsStore, so it shouldn&apos;t be a member function. It should be a static inline free function:

    static inline bool hasPrevalentResourceCharacteristics(const ResourceLoadStatistics&amp;) { ... }

You&apos;ll want to move the definition above the first call site to avoid having to forward-declare.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:184
&gt; +    return resourceStatistic.subframeUnderTopFrameOrigins.size() &gt; subframeUnderTopFrameOriginsThreshold
&gt; +    || resourceStatistic.subresourceUnderTopFrameOrigins.size() &gt; subresourceUnderTopFrameOriginsThreshold
&gt; +    || resourceStatistic.subresourceUniqueRedirectsTo.size() &gt; subresourceHasBeenRedirectedFromToUniqueDomainsThreshold
&gt; +    || resourceStatistic.redirectedToOtherPrevalentResourceOrigins.size() &gt; redirectedToOtherPrevalentResourceOriginsThreshold;

Be sure to re-indent this.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:187
&gt; +void WebResourceLoadStatisticsStore::classifyPrevalentResources(ResourceLoadStatistics&amp; resourceStatistic, Vector&lt;String&gt;&amp; prevalentResources, Vector&lt;String&gt;&amp; prevalentResourcesWithUserInteraction)

Previous comment about member functions applies here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173892</commentid>
    <comment_count>37</comment_count>
      <attachid>273776</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-11 15:10:01 -0800</bug_when>
    <thetext>Created attachment 273776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173893</commentid>
    <comment_count>38</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2016-03-11 15:10:39 -0800</bug_when>
    <thetext>Thanks, Andy! All your comments covered by the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173901</commentid>
    <comment_count>39</comment_count>
      <attachid>273776</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-11 15:27:59 -0800</bug_when>
    <thetext>Comment on attachment 273776
Patch

Looks good, thanks!

FYI: I r+&apos;d the previous patch, so it would&apos;ve been ok for you to just land your change directly after addressing the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173915</commentid>
    <comment_count>40</comment_count>
      <attachid>273776</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 16:36:07 -0800</bug_when>
    <thetext>Comment on attachment 273776
Patch

Clearing flags on attachment: 273776

Committed r198055: &lt;http://trac.webkit.org/changeset/198055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173916</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 16:36:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273445</attachid>
            <date>2016-03-09 11:21:45 -0800</date>
            <delta_ts>2016-03-09 12:48:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160309112132.patch</filename>
            <type>text/plain</type>
            <size>19551</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzgyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTAzLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB3ZSBoYXZlIHlldCB0byBkZWNpZGUgaG93IHRv
IHNldCB1cCB0ZXN0cyBmb3IgcHJldmFsZW50IHJlc291cmNlcy4KKworICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAgICAtIFJl
bW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNv
dXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgICAgLSBEZWxldGVkIG9sZCBjbGFzc2lmaWNhdGlv
biBmdW5jdGlvbnMuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAgICAtIE1hZGUgdGhpcyBjbGFzcyBmcmllbmQgb2YgV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgc2luY2UgdGhlIGxhdHRlciBuZWVkcyB0byBzZW5k
IHRoZSBzdGF0aXN0aWNzIG1hcCBmb3IgY2xhc3NpZmljYXRpb24uCisKIDIwMTYtMDMtMDggIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBNZW1vcnkgVGltZWxpbmUgc2hvdWxkIHNob3cgTWVtb3J5UHJlc3N1cmUgZXZlbnRzCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJ
KHJldmlzaW9uIDE5NzgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNiBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0
YXJnZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5
KG1fc3RvcmUtPnNpemUoKSk7CiAgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5k
bGVyKCk7CiB9CiAgICAgCkBAIC0yMDUsNyArMjA0LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNl
SGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0
ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNC
ZWVuU3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZpc2l0ZWQ7CiAgICAgfQogICAgIAotICAgIHRh
cmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3Nhcnko
bV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRs
ZXIoKTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5NzgyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MzcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNzaWZpY2F0aW9uID0gMTAw
OwotCi0vLyBTdWIgZnJhbWUgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7Ci0KLS8vIFN1YnJl
c291cmNlIHRocmVzaG9sZHMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSA1Owotc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21haW5zVGhyZXNo
b2xkQWJzb2x1dGUgPSAzOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJlZGlyZWN0ZWRUb090aGVy
UHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSAyOwotCi1ib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVj
ZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpCi17Ci0gICAgaWYgKG9yaWdpbnNW
aXNpdGVkU29GYXIgPCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmlj
YXRpb24gfHwgaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKCkpIHsKLSAgICAgICAg
aXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpo
YXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1Ro
cmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8u
c2l6ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNU
aHJlc2hvbGRBYnNvbHV0ZQotICAgICAgICB8fCByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJl
c291cmNlT3JpZ2lucy5zaXplKCkgPiByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNl
T3JpZ2luc1RocmVzaG9sZEFic29sdXRlOwotfQotCiB0eXBlZGVmIFdURjo6SGFzaE1hcDxTdHJp
bmcsIHVuc2lnbmVkLCBTdHJpbmdIYXNoLCBIYXNoVHJhaXRzPFN0cmluZz4sIEhhc2hUcmFpdHM8
dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFsdWU7
CiAKIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFz
aENvdW50ZWRTZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5NzgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw2
IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsKIAogICAgIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRS
ZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpOwotCi0gICAg
Ym9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgaGFzUHJldmFs
ZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBjb25zdDsKLQogICAgIHZvaWQgZW5jb2RlKEtl
eWVkRW5jb2RlciYpIGNvbnN0OwogICAgIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCShyZXZpc2lvbiAxOTc4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEw
IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCiAKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtleWVkRGVjb2RlcjsKQEAgLTYwLDYgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIAorICAg
IGZyaWVuZCBjbGFzcyBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIHBy
aXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0OwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc4NjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wMy0wOSAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHByZXZhbGVudCByZXNv
dXJjZSBjbGFzc2lmaWVyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQuCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzI0OTEzMjcyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgICAgLSBDYWxscyB0aGUgbmV3IGNsYXNz
aWZpZXIuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xh
c3NpZmllcjo6Y2xhc3NpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZh
bGVuY2VDbGFzc2lmaWVyLmg6IEFkZGVkLgorICAgICAgICAgICAtIENsYXNzaWZpZXIgZm9yIHBy
ZXZhbGVudCBzdWJyZXNvdXJjZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE2LTAzLTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUm9sbCByMTk3NjMyIGJhY2sgaW4gbm93IHRoYXQgdGhlIGJvdHMgaGF2ZSBjYXVn
aHQgdXAuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMTk3ODI3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2Rpbmcu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTU2LDcgKzU2LDEwIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6fldlYlJlc28KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mIG9yaWdpbnMpCiB7CiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNz
KG9yaWdpbnMpOwotICAgIC8vIFRPRE86IEFuYWx5emUgc3RhdGlzdGljcyB0byByZWNvZ25pemUg
cHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDkxMzI3Mj4KKyAgICAKKyAgICBW
ZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgVmVjdG9yPFN0cmluZz4gcHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBXZWJSZXNvdXJjZVByZXZh
bGVuY2VDbGFzc2lmaWVyOjpjbGFzc2lmeShjb3JlU3RvcmUoKS5tX3Jlc291cmNlU3RhdGlzdGlj
c01hcCwgcHJldmFsZW50UmVzb3VyY2VzLCBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uKTsKICAgICAvLyBUT0RPOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQcm9jZXNzZXMgb2Yg
cHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDcwMzA5OT4KICAgICBhdXRvIGVu
Y29kZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQ
cmV2YWxlbmNlQ2xhc3NpZmllci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgiCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11
bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNzaWZpY2F0aW9uID0gMTAwOworICAgIAor
Ly8gU3ViIGZyYW1lIHRocmVzaG9sZHMKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkID0gMzsKKyAgICAKKy8vIFN1YnJlc291cmNlIHRo
cmVzaG9sZHMKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW5zVGhyZXNob2xkID0gNTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZUhh
c0JlZW5SZWRpcmVjdGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZCA9IDM7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgcmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNU
aHJlc2hvbGQgPSAyOworICAgIAordm9pZCBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVy
OjpjbGFzc2lmeShIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHJlc291
cmNlTWFwLCBWZWN0b3I8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VzLCBWZWN0b3I8U3RyaW5n
PiYgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbikKK3sKKyAgICBpZiAocmVz
b3VyY2VNYXAuc2l6ZSgpIDwgbWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNz
aWZpY2F0aW9uKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChhdXRvJiByZXNvdXJj
ZVN0YXRpc3RpYyA6IHJlc291cmNlTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZXNvdXJj
ZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYmIHJlc291cmNlU3RhdGlzdGljLmhhZFVz
ZXJJbnRlcmFjdGlvbikgeworICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvbi5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKSB7
CisgICAgICAgICAgICBwcmV2YWxlbnRSZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlU3RhdGlzdGlj
LmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0aXN0aWMu
c3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zVGhyZXNob2xkCisgICAgICAgICAgICAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0
aWMuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkCisgICAgICAgICAgICAgICAgICAgfHwgcmVzb3Vy
Y2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkgPiBzdWJyZXNv
dXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZAorICAgICAg
ICAgICAgICAgICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnJlZGlyZWN0ZWRUb090aGVyUHJldmFs
ZW50UmVzb3VyY2VPcmlnaW5zLnNpemUoKSA+IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVz
b3VyY2VPcmlnaW5zVGhyZXNob2xkKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0
aWMuaGFkVXNlckludGVyYWN0aW9uKQorICAgICAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24uYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERv
bWFpbik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmV2YWxlbnRSZXNv
dXJjZXMuYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAg
ICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNs
YXNzaWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyX2gKKyNkZWZpbmUgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3Np
Zmllcl9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlc291cmNlUHJl
dmFsZW5jZUNsYXNzaWZpZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGNsYXNzaWZ5KEhh
c2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgcmVzb3VyY2VN
YXAsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJjZXMsIFZlY3RvcjxTdHJpbmc+JiBw
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uKTsKK307CisKK30KKyNlbmRpZiAv
LyBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Nzgy
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTAyOCw2ICsxMDI4LDcgQEAKIAkJNjUwMUJEMUExMkYxMjQzNDAw
RTlGMjQ4IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE3MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRs
ZUluc3BlY3Rvci5jcHAgKi87IH07CiAJCTY1OUM1NTFFMTMwMDA2NDEwMDI1QzBDMiAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIElu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi87IH07CiAJCTY1Qjg2RjFF
MTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8q
IFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNkIwMjM3QjYxQzkwQTQ5QzAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJl
dmFsZW5jZUNsYXNzaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkJERDI0NDMxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFs
ZW5jZUNsYXNzaWZpZXIuY3BwICovOyB9OwogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyog
V0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2
YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI4RTg2RjExNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZFRjE3OTUxODhD
MDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLzsgfTsKIAkJNzI4RTg2RjIxNzk1MTg4
QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNv
bG9yUGlja2VyTWFjLm1tICovOyB9OwpAQCAtMzAzMSw2ICszMDMyLDggQEAKIAkJNjU0NkE4MkEx
MzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTcx
MkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5z
cGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREQyNDQzMUM4RkNDNjYwMDQ2
ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkREMjQ0NDFDOEZDQzY2MDA0Njg0
MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYi5pbjsgcGF0aCA9IFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4
RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4
OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzA0OCw3ICszMDUxLDYgQEAKIAkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgIAogCQk3QTlDRDhDMDFDNzc5ODQ5
MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5
RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTc3MSw2ICs1NzczLDggQEAKIAkJQkMwMzJEQzMxMEY0
MzgyNjAwNThDMTVBIC8qIFVJUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNkJERDI0NDMxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNl
UHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwICovLAorCQkJCTZCREQyNDQ0MUM4RkNDNjYwMDQ2ODQy
RCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmggKi8sCiAJCQkJQkMwMzJEQzQx
MEY0Mzg3QzAwNThDMTVBIC8qIEFQSSAqLywKIAkJCQk1MTJGNTg4RDEyQTg4MzZGMDA2Mjk1MzAg
LyogQXV0aGVudGljYXRpb24gKi8sCiAJCQkJOTk1NUE2RTgxQzc5ODA5MDAwRUI2QTkzIC8qIEF1
dG9tYXRpb24gKi8sCkBAIC05MzIwLDYgKzkzMjQsNyBAQAogCQkJCTMxQTJFQzc3MTQ4RDY2MkUw
MDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3QzRDMDkzMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzNzNDRUFENTE4NTQxN0FFMDA4QzM2M0QgLyogV0tOU0RhdGEubW0gaW4g
U291cmNlcyAqLywKKwkJCQk2QjAyMzdCNjFDOTBBNDlDMDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQ
cmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzFBMTk0MTE4MjRE
MjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzJD
QUYwQzE4MzNGRDkxMDA0MEFDMjcgLyogV0tOU0Vycm9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Mzc4RTFBNDkxODIwOENENjAwMzEwMDdBIC8qIFdLTlNTdHJpbmcubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273462</attachid>
            <date>2016-03-09 12:48:14 -0800</date>
            <delta_ts>2016-03-09 13:15:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160309124800.patch</filename>
            <type>text/plain</type>
            <size>20290</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTAzLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB3ZSBoYXZlIHlldCB0byBkZWNpZGUgaG93IHRv
IHNldCB1cCB0ZXN0cyBmb3IgcHJldmFsZW50IHJlc291cmNlcy4KKworICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAgICAtIFJl
bW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNv
dXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgICAgLSBEZWxldGVkIG9sZCBjbGFzc2lmaWNhdGlv
biBmdW5jdGlvbnMuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAgICAtIE1hZGUgdGhpcyBjbGFzcyBmcmllbmQgb2YgV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgc2luY2UgdGhlIGxhdHRlciBuZWVkcyB0byBzZW5k
IHRoZSBzdGF0aXN0aWNzIG1hcCBmb3IgY2xhc3NpZmljYXRpb24uCisKIDIwMTYtMDMtMDkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGlnbiBIVE1MS2V5Z2Vu
RWxlbWVudC5rZXl0eXBlIHdpdGggdGhlIHNwZWNpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMTk3ODY3
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ0ZyYW1lTmF2aWcKICAgICAgICAgfQogICAgIH0KIAotICAgIHRhcmdldFN0YXRpc3RpY3Mu
Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgp
KTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAK
QEAgLTIwNSw3ICsyMDQsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNv
dXJjCiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3Vy
Y2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCA9IHN0YXRpY19jYXN0
PGRvdWJsZT4odGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNv
dW50KSAvIHRvdGFsVmlzaXRlZDsKICAgICB9CiAgICAgCi0gICAgdGFyZ2V0U3RhdGlzdGljcy5j
aGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeShtX3N0b3JlLT5zaXplKCkp
OwogICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcAkocmV2aXNpb24gMTk3ODY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzNyArMzIsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2lu
c1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRpb24gPSAxMDA7Ci0KLS8vIFN1YiBmcmFt
ZSB0aHJlc2hvbGRzCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luc1RocmVzaG9sZEFic29sdXRlID0gMzsKLQotLy8gU3VicmVzb3VyY2UgdGhyZXNob2xk
cwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNU
aHJlc2hvbGRBYnNvbHV0ZSA9IDU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgc3VicmVzb3VyY2VI
YXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7
Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgcmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJj
ZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDI7Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQg
b3JpZ2luc1Zpc2l0ZWRTb0ZhcikKLXsKLSAgICBpZiAob3JpZ2luc1Zpc2l0ZWRTb0ZhciA8IG1p
bmltdW1PcmlnaW5zVmlzaXRlZEZvclByZXZhbGVuY2VDbGFzc2lmaWNhdGlvbiB8fCBpc1ByZXZh
bGVudFJlc291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzUHJldmFs
ZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSkgewotICAgICAgICBpc1ByZXZhbGVudFJlc291
cmNlID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1ByZXZhbGVudFJlc291
cmNlQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNo
b2xkQWJzb2x1dGUKLSAgICAgICAgfHwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5z
aXplKCkgPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUK
LSAgICAgICAgfHwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkgPiBzdWJyZXNv
dXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZEFic29sdXRl
Ci0gICAgICAgIHx8IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLnNp
emUoKSA+IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xk
QWJzb2x1dGU7Ci19Ci0KIHR5cGVkZWYgV1RGOjpIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIFN0
cmluZ0hhc2gsIEhhc2hUcmFpdHM8U3RyaW5nPiwgSGFzaFRyYWl0czx1bnNpZ25lZD4+OjpLZXlW
YWx1ZVBhaXJUeXBlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NWYWx1ZTsKIAogc3RhdGljIHZvaWQg
ZW5jb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBIYXNoQ291bnRlZFNldDxTdHJpbmc+JiBoYXNoQ291bnRlZFNldCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAko
cmV2aXNpb24gMTk3ODY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDYgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MgewogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpID0gZGVm
YXVsdDsKIAotICAgIGJvb2wgY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3Nh
cnkodW5zaWduZWQgb3JpZ2luc1Zpc2l0ZWRTb0Zhcik7Ci0KLSAgICBib29sIGhhc1ByZXZhbGVu
dFJlZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJh
Y3RlcmlzdGljcygpIGNvbnN0OwotCiAgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29u
c3Q7CiAgICAgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlz
aW9uIDE5Nzg2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTAgQEAKIAogI2luY2x1ZGUg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgS2V5ZWREZWNvZGVyOwpAQCAtNjAsNiArNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogCisgICAgZnJpZW5kIGNsYXNzIFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogcHJpdmF0ZToKICAgICBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1bHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5Nzg3MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTAzLTA5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJA
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJlc291cmNlIGNsYXNzaWZpZXIg
ZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjQ5MTMyNzIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQpOgorICAgICAgICAgICAtIENhbGxzIHRoZSBuZXcgY2xhc3NpZmllci4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyOjpjbGFzc2lm
eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIu
aDogQWRkZWQuCisgICAgICAgICAgIC0gQ2xhc3NpZmllciBmb3IgcHJldmFsZW50IHN1YnJlc291
cmNlcy4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MTYtMDMtMDkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
TG9jYWwgSFRNTCBzaG91bGQgYmUgYmxvY2tlZCBmcm9tIGxvY2FsU3RvcmFnZSBhY2Nlc3MgdW5s
ZXNzICJEaXNhYmxlIExvY2FsIEZpbGUgUmVzdHJpY3Rpb25zIiBpcyBjaGVja2VkCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMTk3ODY3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xh
c3NpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgogI2luY2x1ZGUgPHd0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU2
LDcgKzU2LDEwIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc28KIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9y
aWdpbnMpCiB7CiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNzKG9yaWdpbnMpOwotICAg
IC8vIFRPRE86IEFuYWx5emUgc3RhdGlzdGljcyB0byByZWNvZ25pemUgcHJldmFsZW50IGRvbWFp
bnMuIDxyZGFyOi8vcHJvYmxlbS8yNDkxMzI3Mj4KKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBw
cmV2YWxlbnRSZXNvdXJjZXM7CisgICAgVmVjdG9yPFN0cmluZz4gcHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVy
OjpjbGFzc2lmeShjb3JlU3RvcmUoKS5tX3Jlc291cmNlU3RhdGlzdGljc01hcCwgcHJldmFsZW50
UmVzb3VyY2VzLCBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uKTsKICAgICAv
LyBUT0RPOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQcm9jZXNzZXMgb2YgcHJldmFsZW50IGRvbWFp
bnMuIDxyZGFyOi8vcHJvYmxlbS8yNDcwMzA5OT4KICAgICBhdXRvIGVuY29kZXIgPSBjb3JlU3Rv
cmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3Np
Zmllci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJSZXNv
dXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bU9yaWdpbnNWaXNpdGVk
Rm9yUHJldmFsZW5jZUNsYXNzaWZpY2F0aW9uID0gMTAwOworICAgIAorLy8gU3ViIGZyYW1lIHRo
cmVzaG9sZHMKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zVGhyZXNob2xkID0gMzsKKyAgICAKKy8vIFN1YnJlc291cmNlIHRocmVzaG9sZHMKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xk
ID0gNTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZCA9IDM7CitzdGF0aWMgY29uc3QgdW5zaWduZWQg
cmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGQgPSAyOwor
ICAgIAordm9pZCBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyOjpjbGFzc2lmeShIYXNo
TWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHJlc291cmNlTWFwLCBWZWN0b3I8
U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VzLCBWZWN0b3I8U3RyaW5nPiYgcHJldmFsZW50UmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbikKK3sKKyAgICBpZiAocmVzb3VyY2VNYXAuc2l6ZSgp
IDwgbWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNzaWZpY2F0aW9uKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IHJl
c291cmNlTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc1By
ZXZhbGVudFJlc291cmNlICYmIHJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbikg
eworICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbi5hcHBl
bmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgfSBlbHNlIGlm
IChyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKSB7CisgICAgICAgICAgICBw
cmV2YWxlbnRSZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFp
bik7CisgICAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0aXN0aWMuc3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNo
b2xkCisgICAgICAgICAgICAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW5zVGhyZXNob2xkCisgICAgICAgICAgICAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMuc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRp
cmVjdGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZAorICAgICAgICAgICAgICAgICAgIHx8
IHJlc291cmNlU3RhdGlzdGljLnJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmln
aW5zLnNpemUoKSA+IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhy
ZXNob2xkKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVy
YWN0aW9uKQorICAgICAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24uYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmV2YWxlbnRSZXNvdXJjZXMuYXBwZW5kKHJl
c291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNl
Q2xhc3NpZmllci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lm
aWVyX2gKKyNkZWZpbmUgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcl9oCisKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGNsYXNzaWZ5KEhhc2hNYXA8U3RyaW5nLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgcmVzb3VyY2VNYXAsIFZlY3RvcjxTdHJp
bmc+JiBwcmV2YWxlbnRSZXNvdXJjZXMsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVXNlckludGVyYWN0aW9uKTsKK307CisKK30KKyNlbmRpZiAvLyBXZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Nzg2NykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTAyOCw2ICsxMDI4LDggQEAKIAkJNjUwMUJEMUExMkYxMjQzNDAwRTlGMjQ4IC8qIFdLQnVu
ZGxlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1Qjg2RjE3MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAg
Ki87IH07CiAJCTY1OUM1NTFFMTMwMDA2NDEwMDI1QzBDMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi87IH07CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4
QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVj
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NkIwMjM3QjYxQzkwQTQ5QzAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJE
RDI0NDMxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIu
Y3BwICovOyB9OworCQk2QjAyMzdCNzFDOTBDMDlCMDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQcmV2
YWxlbmNlQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkJERDI0NDQxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIuaCAqLzsgfTsKIAkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5z
cGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
OEU4NkYxMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RUYxNzk1MTg4QzAwODc4
NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi87IH07CiAJCTcyOEU4NkYyMTc5NTE4OEMwMDg3
ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBp
Y2tlck1hYy5tbSAqLzsgfTsKQEAgLTMwMzEsNiArMzAzMyw4IEBACiAJCTY1NDZBODJBMTMwMDAx
NjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qjg2RjE3MTJGMTFE
N0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUluc3BlY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkREMjQ0MzFDOEZDQzY2MDA0Njg0MkQg
LyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkJERDI0NDQxQzhGQ0M2NjAwNDY4NDJEIC8q
IFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYlBy
b2Nlc3Muc2IuaW47IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEg
LyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0
ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4
Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwNDgsNyArMzA1Miw2IEBACiAJCTc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5
MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgICAKIAkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlG
NkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2Qzcg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU3NzEsNiArNTc3NCw4IEBACiAJCUJDMDMyREMzMTBGNDM4MjYw
MDU4QzE1QSAvKiBVSVByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTZCREQyNDQzMUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZh
bGVuY2VDbGFzc2lmaWVyLmNwcCAqLywKKwkJCQk2QkREMjQ0NDFDOEZDQzY2MDA0Njg0MkQgLyog
V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICovLAogCQkJCUJDMDMyREM0MTBGNDM4
N0MwMDU4QzE1QSAvKiBBUEkgKi8sCiAJCQkJNTEyRjU4OEQxMkE4ODM2RjAwNjI5NTMwIC8qIEF1
dGhlbnRpY2F0aW9uICovLAogCQkJCTk5NTVBNkU4MUM3OTgwOTAwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uICovLApAQCAtNzY2NCw2ICs3NjY5LDcgQEAKIAkJCQlCQ0Q1OTdGRjExMkI1N0JFMDBFQzhD
MjMgLyogV2ViUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODVGRDdDMTkzNDE1
QTgwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Qzg1RkQ4MDE5MzQxNjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk2QjAyMzdCNzFDOTBDMDlCMDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQ
cmV2YWxlbmNlQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTk4QUMxMTJCN0ZE
RjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MDMyRDk3MTBGNDM3QUYwMDU4QzE1QSAvKiBXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTA0M0EwOTEyNEQxMUE5MDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtOTMyMCw2ICs5MzI2LDcgQEAKIAkJCQkzMUEyRUM3NzE0OEQ2NjJFMDA4
MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzN0M0QzA5MzE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzczQ0VBRDUxODU0MTdBRTAwOEMzNjNEIC8qIFdLTlNEYXRhLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNkIwMjM3QjYxQzkwQTQ5QzAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJl
dmFsZW5jZUNsYXNzaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxQTE5NDExODI0RDI5
MzAwRjMyQTVFIC8qIFdLTlNEaWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcyQ0FG
MEMxODMzRkQ5MTAwNDBBQzI3IC8qIFdLTlNFcnJvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3
OEUxQTQ5MTgyMDhDRDYwMDMxMDA3QSAvKiBXS05TU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273464</attachid>
            <date>2016-03-09 13:15:28 -0800</date>
            <delta_ts>2016-03-09 14:02:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160309131514.patch</filename>
            <type>text/plain</type>
            <size>22220</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTAzLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB3ZSBoYXZlIHlldCB0byBkZWNpZGUgaG93IHRv
IHNldCB1cCB0ZXN0cyBmb3IgcHJldmFsZW50IHJlc291cmNlcy4KKworICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAgICAtIFJl
bW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNv
dXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICAgICAtIERlbGV0ZWQgb2xk
IGNsYXNzaWZpY2F0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaDoKKyAgICAgICAgICAgLSBNYWRlIHRoaXMgY2xhc3MgZnJpZW5kIG9mIFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHNpbmNlIHRoZSBsYXR0ZXIgbmVlZHMgdG8gc2Vu
ZCB0aGUgc3RhdGlzdGljcyBtYXAgZm9yIGNsYXNzaWZpY2F0aW9uLgorCisyMDE2LTAzLTA5ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFs
ZW50IHJlc291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAg
cmRhcjovL3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB3ZSBoYXZlIHlldCB0byBkZWNpZGUg
aG93IHRvIHNldCB1cCB0ZXN0cyBmb3IgcHJldmFsZW50IHJlc291cmNlcy4KKworICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAg
ICAtIFJlbW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
bmNvZGVIYXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxl
bnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgICAgLSBEZWxldGVkIG9sZCBjbGFzc2lm
aWNhdGlvbiBmdW5jdGlvbnMuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oOgorICAgICAgICAgICAtIE1hZGUgdGhpcyBjbGFzcyBmcmllbmQgb2YgV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgc2luY2UgdGhlIGxhdHRlciBuZWVkcyB0
byBzZW5kIHRoZSBzdGF0aXN0aWNzIG1hcCBmb3IgY2xhc3NpZmljYXRpb24uCisKIDIwMTYtMDMt
MDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBmb2N1cygpIC8g
Ymx1cigpIHNob3VsZCBiZSBvbiBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQsIG5vdCBFbGVtZW50
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNiBAQCB2b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB0YXJnZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNz
YXJ5KG1fc3RvcmUtPnNpemUoKSk7CiAgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25I
YW5kbGVyKCk7CiB9CiAgICAgCkBAIC0yMDUsNyArMjA0LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291
cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zp
c2l0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VI
YXNCZWVuU3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZpc2l0ZWQ7CiAgICAgfQogICAgIAotICAg
IHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3Nh
cnkobV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhh
bmRsZXIoKTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMzcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5z
aWduZWQgbWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNzaWZpY2F0aW9uID0g
MTAwOwotCi0vLyBTdWIgZnJhbWUgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7Ci0KLS8vIFN1
YnJlc291cmNlIHRocmVzaG9sZHMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSA1Owotc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21haW5zVGhy
ZXNob2xkQWJzb2x1dGUgPSAzOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJlZGlyZWN0ZWRUb090
aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSAyOwotCi1ib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlm
TmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpCi17Ci0gICAgaWYgKG9yaWdp
bnNWaXNpdGVkU29GYXIgPCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3Np
ZmljYXRpb24gfHwgaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKCkpIHsKLSAgICAg
ICAgaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
c1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8uc2l6ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFp
bnNUaHJlc2hvbGRBYnNvbHV0ZQotICAgICAgICB8fCByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVu
dFJlc291cmNlT3JpZ2lucy5zaXplKCkgPiByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291
cmNlT3JpZ2luc1RocmVzaG9sZEFic29sdXRlOwotfQotCiB0eXBlZGVmIFdURjo6SGFzaE1hcDxT
dHJpbmcsIHVuc2lnbmVkLCBTdHJpbmdIYXNoLCBIYXNoVHJhaXRzPFN0cmluZz4sIEhhc2hUcmFp
dHM8dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFs
dWU7CiAKIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYg
aGFzaENvdW50ZWRTZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0
Miw2IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsKIAogICAgIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGNoZWNrQW5kU2V0QXNQcmV2YWxl
bnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpOwotCi0g
ICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgaGFzUHJl
dmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBjb25zdDsKLQogICAgIHZvaWQgZW5jb2Rl
KEtleWVkRW5jb2RlciYpIGNvbnN0OwogICAgIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCShyZXZpc2lvbiAxOTc4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDEwIEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCiAKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtleWVkRGVjb2RlcjsKQEAgLTYwLDYgKzY0LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIAor
ICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsK
IHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc4NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxNi0wMy0wOSAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHByZXZhbGVudCBy
ZXNvdXJjZSBjbGFzc2lmaWVyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQuCisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzI0OTEzMjcyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgICAgLSBDYWxscyB0aGUgbmV3IGNs
YXNzaWZpZXIuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNz
aWZpZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VQcmV2YWxlbmNl
Q2xhc3NpZmllcjo6Y2xhc3NpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyLmg6IEFkZGVkLgorICAgICAgICAgICAtIEFkZGVkIG5ldyBjbGFz
c2lmaWVyIGZvciBwcmV2YWxlbnQgc3VicmVzb3VyY2VzLgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxNi0wMy0wOSAgSm9obiBXaWxhbmRlciAgPHdp
bGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHByZXZhbGVudCByZXNvdXJjZSBjbGFz
c2lmaWVyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQuCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI0
OTEzMjcyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NVcGRhdGVkKToKKyAgICAgICAgICAgLSBDYWxscyB0aGUgbmV3IGNsYXNzaWZpZXIuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcjo6
Y2xhc3NpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFz
c2lmaWVyLmg6IEFkZGVkLgorICAgICAgICAgICAtIENsYXNzaWZpZXIgZm9yIHByZXZhbGVudCBz
dWJyZXNvdXJjZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE2LTAzLTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIExvY2FsIEhUTUwgc2hvdWxkIGJlIGJsb2NrZWQgZnJvbSBsb2NhbFN0b3JhZ2UgYWNj
ZXNzIHVubGVzcyAiRGlzYWJsZSBMb2NhbCBGaWxlIFJlc3RyaWN0aW9ucyIgaXMgY2hlY2tlZApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlUHJldmFs
ZW5jZUNsYXNzaWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaD4KICNpbmNsdWRlIDx3
dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01Niw3ICs1NiwxMCBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJS
ZXNvCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiBvcmlnaW5zKQogewogICAgIGNvcmVTdG9yZSgpLm1lcmdlU3RhdGlzdGljcyhvcmlnaW5z
KTsKLSAgICAvLyBUT0RPOiBBbmFseXplIHN0YXRpc3RpY3MgdG8gcmVjb2duaXplIHByZXZhbGVu
dCBkb21haW5zLiA8cmRhcjovL3Byb2JsZW0vMjQ5MTMyNzI+CisgICAgCisgICAgVmVjdG9yPFN0
cmluZz4gcHJldmFsZW50UmVzb3VyY2VzOworICAgIFZlY3RvcjxTdHJpbmc+IHByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xh
c3NpZmllcjo6Y2xhc3NpZnkoY29yZVN0b3JlKCkubV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAsIHBy
ZXZhbGVudFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik7
CiAgICAgLy8gVE9ETzogTm90aWZ5IGluZGl2aWR1YWwgV2ViUHJvY2Vzc2VzIG9mIHByZXZhbGVu
dCBkb21haW5zLiA8cmRhcjovL3Byb2JsZW0vMjQ3MDMwOTk+CiAgICAgYXV0byBlbmNvZGVyID0g
Y29yZVN0b3JlKCkuY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xh
c3NpZmljYXRpb24gPSAxMDA7CisgICAgCisvLyBTdWIgZnJhbWUgdGhyZXNob2xkcworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSAz
OworICAgIAorLy8gU3VicmVzb3VyY2UgdGhyZXNob2xkcworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSA1Oworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21h
aW5zVGhyZXNob2xkID0gMzsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCByZWRpcmVjdGVkVG9PdGhl
clByZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9sZCA9IDI7CisgICAgCit2b2lkIFdlYlJl
c291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXI6OmNsYXNzaWZ5KEhhc2hNYXA8U3RyaW5nLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiYgcmVzb3VyY2VNYXAsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxl
bnRSZXNvdXJjZXMsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlcklu
dGVyYWN0aW9uKQoreworICAgIGlmIChyZXNvdXJjZU1hcC5zaXplKCkgPCBtaW5pbXVtT3JpZ2lu
c1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogcmVzb3VyY2VNYXAudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2Ug
JiYgcmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgICAgICBw
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLmFwcGVuZChyZXNvdXJjZVN0YXRp
c3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdGlz
dGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNl
cy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgfSBl
bHNlIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNp
emUoKSA+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQKKyAgICAgICAgICAg
ICAgICAgICB8fCByZXNvdXJjZVN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW5zLnNpemUoKSA+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQKKyAg
ICAgICAgICAgICAgICAgICB8fCByZXNvdXJjZVN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvLnNpemUoKSA+IHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9Vbmlx
dWVEb21haW5zVGhyZXNob2xkCisgICAgICAgICAgICAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0
aWMucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuc2l6ZSgpID4gcmVk
aXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGQpIHsKKyAgICAg
ICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCisgICAgICAg
ICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbi5hcHBlbmQocmVz
b3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlcy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMu
aGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1By
ZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJfaAorI2RlZmluZSBX
ZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3N0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIHZvaWQgY2xhc3NpZnkoSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiByZXNvdXJjZU1hcCwgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJl
c291cmNlcywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24pOworfTsKKworfQorI2VuZGlmIC8vIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDYgKzEwMjgs
OCBAQAogCQk2NTAxQkQxQTEyRjEyNDM0MDBFOUYyNDggLyogV0tCdW5kbGVJbnNwZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTcx
MkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJNjU5QzU1
MUUxMzAwMDY0MTAwMjVDMEMyIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQ2
QTgyOTEzMDAwMTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xp
ZW50LmNwcCAqLzsgfTsKIAkJNjVCODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5z
cGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2QjAyMzdCNjFDOTBBNDlD
MDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkREMjQ0MzFDOEZDQzY2MDA0
Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgKi87IH07CisJCTZC
MDIzN0I3MUM5MEMwOUIwMDNDNzk0MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkREMjQ0
NDFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICov
OyB9OwogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlD
NjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI4RTg2RjExNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQ
aWNrZXJNYWMuaCAqLzsgfTsKIAkJNzI4RTg2RjIxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9y
UGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovOyB9
OwpAQCAtMzAzMSw2ICszMDMzLDggQEAKIAkJNjU0NkE4MkExMzAwMDE2NDAwMENFQjFDIC8qIElu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTcxMkYxMUQ3QjAwQjdERDhBIC8qIFdL
QnVuZGxlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLQnVuZGxlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVC
ODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZCREQyNDQzMUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2QkREMjQ0NDFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2
YWxlbmNlQ2xhc3NpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJS
ZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgcGF0
aCA9IFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclBy
aXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBp
Y2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA0OCw3ICszMDUyLDYg
QEAKIAkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0
QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGOTFDN0NGQjM3
MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0gICAgICAgIAogCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTkwOSw2ICs1OTEyLDggQEAKIAkJCQlCQzExMUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2Vi
UHJvY2Vzc1Byb3h5LmNwcCAqLywKIAkJCQlCQzAzMkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2Vi
UHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJQkNFRTdBQjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk2QkREMjQ0MzFDOEZDQzY2MDA0Njg0MkQg
LyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgKi8sCisJCQkJNkJERDI0NDQx
QzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gVUlQcm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTc2NjQsNiArNzY2OSw3IEBACiAJCQkJQkNENTk3RkYxMTJCNTdCRTAwRUM4QzIzIC8qIFdl
YlByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg1RkQ3QzE5MzQxNUE4MDAwMTc3
QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4
NUZEODAxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNkIwMjM3QjcxQzkwQzA5QjAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDU5OEFDMTEyQjdGREYwMEVDOEMy
MyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ5NzEw
RjQzN0FGMDA1OEMxNUEgLyogV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNB
MDkxMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTkzMjAsNiArOTMyNiw3IEBACiAJCQkJMzFBMkVDNzcxNDhENjYyRTAwODEwRDcxIC8q
IFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzdDNEMwOTMxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTM3M0NFQUQ1MTg1NDE3QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTZCMDIzN0I2MUM5MEE0OUMwMDNDNzk0MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VD
bGFzc2lmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MUExOTQxMTgyNEQyOTMwMEYzMkE1
RSAvKiBXS05TRGljdGlvbmFyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3MkNBRjBDMTgzM0ZE
OTEwMDQwQUMyNyAvKiBXS05TRXJyb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzhFMUE0OTE4
MjA4Q0Q2MDAzMTAwN0EgLyogV0tOU1N0cmluZy5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273470</attachid>
            <date>2016-03-09 14:02:42 -0800</date>
            <delta_ts>2016-03-09 14:05:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160309140229.patch</filename>
            <type>text/plain</type>
            <size>23257</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDE2LTAzLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB3ZSBoYXZlIHlldCB0byBkZWNpZGUgaG93IHRv
IHNldCB1cCB0ZXN0cyBmb3IgcHJldmFsZW50IHJlc291cmNlcy4KKworICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAgICAtIFJl
bW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNv
dXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICAgIC0gRGVsZXRlZCBvbGQg
Y2xhc3NpZmljYXRpb24gZnVuY3Rpb25zLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAgICAtIE1hZGUgdGhpcyBjbGFzcyBmcmllbmQgb2YgV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgc2luY2UgdGhlIGxhdHRlciBuZWVkcyB0byBzZW5k
IHRoZSBzdGF0aXN0aWNzIG1hcCBmb3IgY2xhc3NpZmljYXRpb24uCisKKzIwMTYtMDMtMDkgIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBwcmV2YWxl
bnQgcmVzb3VyY2UgY2xhc3NpZmllciBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0LgorICAgICAgICBy
ZGFyOi8vcHJvYmxlbS8yNDkxMzI3MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MjQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHdlIGhhdmUgeWV0IHRvIGRlY2lkZSBo
b3cgdG8gc2V0IHVwIHRlc3RzIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgICAg
IC0gUmVtb3ZlZCBjYWxscyB0byBvbGQgY2xhc3NpZmllciBpbiBXZWJDb3JlLgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVu
Y29kZUhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1ByZXZhbGVu
dFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKTogRGVsZXRlZC4KKyAgICAgICAgICAgIC0gRGVsZXRl
ZCBvbGQgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oOgorICAgICAgICAgICAtIE1hZGUgdGhpcyBjbGFzcyBmcmllbmQgb2YgV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgc2luY2UgdGhlIGxhdHRlciBuZWVkcyB0
byBzZW5kIHRoZSBzdGF0aXN0aWNzIG1hcCBmb3IgY2xhc3NpZmljYXRpb24uCisKKzIwMTYtMDMt
MDkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBw
cmV2YWxlbnQgcmVzb3VyY2UgY2xhc3NpZmllciBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0LgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS8yNDkxMzI3MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHdlIGhhdmUgeWV0IHRvIGRl
Y2lkZSBob3cgdG8gc2V0IHVwIHRlc3RzIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAg
ICAgICAgIC0gUmVtb3ZlZCBjYWxscyB0byBvbGQgY2xhc3NpZmllciBpbiBXZWJDb3JlLgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVuY29kZUhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1By
ZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAgICAgICAgICAtIERlbGV0ZWQgb2xkIGNs
YXNzaWZpY2F0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmg6CisgICAgICAgICAgIC0gTWFkZSB0aGlzIGNsYXNzIGZyaWVuZCBvZiBX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBzaW5jZSB0aGUgbGF0dGVyIG5l
ZWRzIHRvIHNlbmQgdGhlIHN0YXRpc3RpY3MgbWFwIGZvciBjbGFzc2lmaWNhdGlvbi4KKwogMjAx
Ni0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGZvY3Vz
KCkgLyBibHVyKCkgc2hvdWxkIGJlIG9uIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCwgbm90IEVs
ZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcAkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw2IEBAIHZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICAgICAgfQogICAgIH0K
IAotICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZO
ZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNh
dGlvbkhhbmRsZXIoKTsKIH0KICAgICAKQEAgLTIwNSw3ICsyMDQsNiBAQCB2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmln
aW5zVmlzaXRlZCA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNv
dXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50KSAvIHRvdGFsVmlzaXRlZDsKICAgICB9CiAgICAg
Ci0gICAgdGFyZ2V0U3RhdGlzdGljcy5jaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5l
Y2Vzc2FyeShtX3N0b3JlLT5zaXplKCkpOwogICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0
aW9uSGFuZGxlcigpOwogfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwzNyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRp
b24gPSAxMDA7Ci0KLS8vIFN1YiBmcmFtZSB0aHJlc2hvbGRzCi1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlID0gMzsKLQot
Ly8gU3VicmVzb3VyY2UgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDU7Ci1zdGF0aWMgY29u
c3QgdW5zaWduZWQgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFp
bnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgcmVkaXJlY3Rl
ZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDI7Ci0K
LWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291
cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2luc1Zpc2l0ZWRTb0ZhcikKLXsKLSAgICBpZiAo
b3JpZ2luc1Zpc2l0ZWRTb0ZhciA8IG1pbmltdW1PcmlnaW5zVmlzaXRlZEZvclByZXZhbGVuY2VD
bGFzc2lmaWNhdGlvbiB8fCBpc1ByZXZhbGVudFJlc291cmNlKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSkgewot
ICAgICAgICBpc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6Omhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUKLSAgICAgICAgfHwgc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW5zVGhyZXNob2xkQWJzb2x1dGUKLSAgICAgICAgfHwgc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUby5zaXplKCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbVRvVW5pcXVl
RG9tYWluc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHJlZGlyZWN0ZWRUb090aGVyUHJl
dmFsZW50UmVzb3VyY2VPcmlnaW5zLnNpemUoKSA+IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50
UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGU7Ci19Ci0KIHR5cGVkZWYgV1RGOjpIYXNo
TWFwPFN0cmluZywgdW5zaWduZWQsIFN0cmluZ0hhc2gsIEhhc2hUcmFpdHM8U3RyaW5nPiwgSGFz
aFRyYWl0czx1bnNpZ25lZD4+OjpLZXlWYWx1ZVBhaXJUeXBlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NWYWx1ZTsKIAogc3RhdGljIHZvaWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXNoQ291bnRlZFNldDxTdHJp
bmc+JiBoYXNoQ291bnRlZFNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuaAkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
MTEgKzQyLDYgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgewogCiAgICAgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgY2hlY2tBbmRTZXRBc1By
ZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2luc1Zpc2l0ZWRTb0Zhcik7
Ci0KLSAgICBib29sIGhhc1ByZXZhbGVudFJlZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBo
YXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0OwotCiAgICAgdm9pZCBl
bmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CiAgICAgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVy
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsMTAgQEAKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKIAorbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS2V5ZWREZWNvZGVyOwpAQCAtNjAsNiAr
NjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigp
OwogCisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOwogcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1
bHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg4NikKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTAzLTA5ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFs
ZW50IHJlc291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAg
cmRhcjovL3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICAgIC0gQWRkZWQgcmVm
ZXJlbmNlIHRvIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgICAgIC0gQ2FsbHMgdGhlIG5ldyBjbGFz
c2lmaWVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lm
aWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlUHJldmFsZW5jZUNs
YXNzaWZpZXI6OmNsYXNzaWZ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2
YWxlbmNlQ2xhc3NpZmllci5oOiBBZGRlZC4KKyAgICAgICAgICAgLSBBZGRlZCBuZXcgY2xhc3Np
ZmllciBmb3IgcHJldmFsZW50IHN1YnJlc291cmNlcy4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMDMtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdXNlLWFmdGVyLWZyZWUgd2hl
biBjYW5jZWxsaW5nIHN5bmNocm9ub3VzIFhIUiB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM4Nyw2ICszODcsNyBAQCBzZXQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIu
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNz
aWZpZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJUZXh0Q2hlY2tlckNsaWVudC5jcHAKICAgICBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJv
dmlkZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMTk3ODc1KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVz
b3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2Rp
bmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgog
I2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTU2LDcgKzU2LDEwIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6fldlYlJlc28KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpCiB7CiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0
aWNzKG9yaWdpbnMpOwotICAgIC8vIFRPRE86IEFuYWx5emUgc3RhdGlzdGljcyB0byByZWNvZ25p
emUgcHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDkxMzI3Mj4KKyAgICAKKyAg
ICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgVmVjdG9yPFN0cmluZz4g
cHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBXZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyOjpjbGFzc2lmeShjb3JlU3RvcmUoKS5tX3Jlc291cmNlU3RhdGlz
dGljc01hcCwgcHJldmFsZW50UmVzb3VyY2VzLCBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlcklu
dGVyYWN0aW9uKTsKICAgICAvLyBUT0RPOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQcm9jZXNzZXMg
b2YgcHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDcwMzA5OT4KICAgICBhdXRv
IGVuY29kZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgiCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1PcmlnaW5zVmlzaXRlZEZvclBy
ZXZhbGVuY2VDbGFzc2lmaWNhdGlvbiA9IDEwMDsKKyAgICAKKy8vIFN1YiBmcmFtZSB0aHJlc2hv
bGRzCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1Ro
cmVzaG9sZCA9IDM7CisgICAgCisvLyBTdWJyZXNvdXJjZSB0aHJlc2hvbGRzCitzdGF0aWMgY29u
c3QgdW5zaWduZWQgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZCA9IDU7
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21U
b1VuaXF1ZURvbWFpbnNUaHJlc2hvbGQgPSAzOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJlZGly
ZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkID0gMjsKKyAgICAK
K3ZvaWQgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcjo6Y2xhc3NpZnkoSGFzaE1hcDxT
dHJpbmcsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiByZXNvdXJjZU1hcCwgVmVjdG9yPFN0cmlu
Zz4mIHByZXZhbGVudFJlc291cmNlcywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24pCit7CisgICAgaWYgKHJlc291cmNlTWFwLnNpemUoKSA8IG1p
bmltdW1PcmlnaW5zVmlzaXRlZEZvclByZXZhbGVuY2VDbGFzc2lmaWNhdGlvbikKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgOiByZXNvdXJj
ZU1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxl
bnRSZXNvdXJjZSAmJiByZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAg
ICAgICAgICAgIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24uYXBwZW5kKHJl
c291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgIH0gZWxzZSBpZiAocmVz
b3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgICAgICAgICAgcHJldmFs
ZW50UmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOwor
ICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbnMuc2l6ZSgpID4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZAor
ICAgICAgICAgICAgICAgICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1Ro
cmVzaG9sZAorICAgICAgICAgICAgICAgICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3Rl
ZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJlc2hvbGQKKyAgICAgICAgICAgICAgICAgICB8fCByZXNv
dXJjZVN0YXRpc3RpYy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucy5z
aXplKCkgPiByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9s
ZCkgeworICAgICAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlv
bikKKyAgICAgICAgICAgICAgICBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
LmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzLmFwcGVuZChyZXNvdXJj
ZVN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICAgICAgICAgIHJlc291cmNlU3Rh
dGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNz
aWZpZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcl9o
CisjZGVmaW5lIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJfaAorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBjbGFzc2lmeShIYXNoTWFwPFN0cmluZywgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHJlc291cmNlTWFwLCBWZWN0b3I8U3RyaW5nPiYg
cHJldmFsZW50UmVzb3VyY2VzLCBWZWN0b3I8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbik7Cit9OworCit9CisjZW5kaWYgLy8gV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEw
MjgsNiArMTAyOCw4IEBACiAJCTY1MDFCRDFBMTJGMTI0MzQwMEU5RjI0OCAvKiBXS0J1bmRsZUlu
c3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUI4NkYxNzEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwICovOyB9
OwogCQk2NTlDNTUxRTEzMDAwNjQxMDAyNUMwQzIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1NDZBODI5MTMwMDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuY3BwICovOyB9OwogCQk2NUI4NkYxRTEyRjExREUzMDBCN0REOEEgLyog
V0tCdW5kbGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCMDIz
N0I2MUM5MEE0OUMwMDNDNzk0MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCREQyNDQz
MUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAq
LzsgfTsKKwkJNkIwMjM3QjcxQzkwQzA5QjAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCREQyNDQ0MUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFz
c2lmaWVyLmggKi87IH07CiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3Rv
clByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjhFODZG
MTE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAv
KiBXZWJDb2xvclBpY2tlck1hYy5oICovOyB9OwogCQk3MjhFODZGMjE3OTUxODhDMDA4Nzg3OUUg
LyogV2ViQ29sb3JQaWNrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMubW0gKi87IH07CkBAIC0zMDMxLDYgKzMwMzMsOCBAQAogCQk2NTQ2QTgyQTEzMDAwMTY0MDAw
Q0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUI4NkYxNzEyRjExRDdCMDBC
N0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tCdW5kbGVJbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVJbnNwZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkJERDI0NDMxQzhGQ0M2NjAwNDY4NDJEIC8qIFdl
YlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREQyNDQ0MUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJS
ZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkQ4QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQ
cm9jZXNzLnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiLmluOyBwYXRoID0gV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
S0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlF
IC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDQ4
LDcgKzMwNTIsNiBAQAogCQk3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJl
bmNlc1JlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjgx
QzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzkx
RUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICAgCiAJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01OTA5LDYgKzU5MTIsOCBAQAogCQkJCUJDMTExQjBEMTEyRjVFNEYwMDMz
N0JBQiAvKiBXZWJQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCUJDMDMyRENGMTBGNDM4OUYwMDU4
QzE1QSAvKiBXZWJQcm9jZXNzUHJveHkuaCAqLywKIAkJCQlCQ0VFN0FCMzEyODE3MDk1MDA5ODI3
REEgLyogV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTZCREQyNDQzMUM4RkND
NjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAqLywKKwkJ
CQk2QkREMjQ0NDFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3Np
Zmllci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBVSVByb2Nlc3M7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNzY2NCw2ICs3NjY5LDcgQEAKIAkJCQlCQ0Q1OTdGRjExMkI1N0JFMDBF
QzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODVGRDdDMTkz
NDE1QTgwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Qzg1RkQ4MDE5MzQxNjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2QjAyMzdCNzFDOTBDMDlCMDAzQzc5NDAgLyogV2ViUmVzb3Vy
Y2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTk4QUMxMTJC
N0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMDMyRDk3MTBGNDM3QUYwMDU4QzE1QSAvKiBXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTA0M0EwOTEyNEQxMUE5MDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLApAQCAtOTMyMCw2ICs5MzI2LDcgQEAKIAkJCQkzMUEyRUM3NzE0OEQ2NjJF
MDA4MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzN0M0QzA5MzE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzczQ0VBRDUxODU0MTdBRTAwOEMzNjNEIC8qIFdLTlNEYXRhLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNkIwMjM3QjYxQzkwQTQ5QzAwM0M3OTQwIC8qIFdlYlJlc291cmNl
UHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxQTE5NDExODI0
RDI5MzAwRjMyQTVFIC8qIFdLTlNEaWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcy
Q0FGMEMxODMzRkQ5MTAwNDBBQzI3IC8qIFdLTlNFcnJvci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTM3OEUxQTQ5MTgyMDhDRDYwMDMxMDA3QSAvKiBXS05TU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273471</attachid>
            <date>2016-03-09 14:05:44 -0800</date>
            <delta_ts>2016-03-09 14:13:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160309140531.patch</filename>
            <type>text/plain</type>
            <size>20966</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTAzLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB3ZSBoYXZlIHlldCB0byBkZWNpZGUgaG93IHRv
IHNldCB1cCB0ZXN0cyBmb3IgcHJldmFsZW50IHJlc291cmNlcy4KKworICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAgICAtIFJl
bW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNv
dXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICAgIC0gRGVsZXRlZCBvbGQg
Y2xhc3NpZmljYXRpb24gZnVuY3Rpb25zLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAgICAtIE1hZGUgdGhpcyBjbGFzcyBmcmllbmQgb2YgV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgc2luY2UgdGhlIGxhdHRlciBuZWVkcyB0byBzZW5k
IHRoZSBzdGF0aXN0aWNzIG1hcCBmb3IgY2xhc3NpZmljYXRpb24uCisKIDIwMTYtMDMtMDkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBmb2N1cygpIC8gYmx1cigp
IHNob3VsZCBiZSBvbiBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQsIG5vdCBFbGVtZW50CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJl
dmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNiBAQCB2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0YXJn
ZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KG1f
c3RvcmUtPnNpemUoKSk7CiAgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVy
KCk7CiB9CiAgICAgCkBAIC0yMDUsNyArMjA0LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlSGFz
QmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVu
U3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZpc2l0ZWQ7CiAgICAgfQogICAgIAotICAgIHRhcmdl
dFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9z
dG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIo
KTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMzcg
KzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQg
bWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNzaWZpY2F0aW9uID0gMTAwOwot
Ci0vLyBTdWIgZnJhbWUgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7Ci0KLS8vIFN1YnJlc291
cmNlIHRocmVzaG9sZHMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSA1Owotc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21haW5zVGhyZXNob2xk
QWJzb2x1dGUgPSAzOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJlZGlyZWN0ZWRUb090aGVyUHJl
dmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSAyOwotCi1ib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNz
YXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpCi17Ci0gICAgaWYgKG9yaWdpbnNWaXNp
dGVkU29GYXIgPCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRp
b24gfHwgaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKCkpIHsKLSAgICAgICAgaXNQ
cmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQ
cmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbnMuc2l6ZSgpID4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVz
aG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6
ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJl
c2hvbGRBYnNvbHV0ZQotICAgICAgICB8fCByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291
cmNlT3JpZ2lucy5zaXplKCkgPiByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3Jp
Z2luc1RocmVzaG9sZEFic29sdXRlOwotfQotCiB0eXBlZGVmIFdURjo6SGFzaE1hcDxTdHJpbmcs
IHVuc2lnbmVkLCBTdHJpbmdIYXNoLCBIYXNoVHJhaXRzPFN0cmluZz4sIEhhc2hUcmFpdHM8dW5z
aWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFsdWU7CiAK
IHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFzaENv
dW50ZWRTZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw2IEBA
IHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsKIAogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNv
dXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpOwotCi0gICAgYm9v
bCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgaGFzUHJldmFsZW50
UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBjb25zdDsKLQogICAgIHZvaWQgZW5jb2RlKEtleWVk
RW5jb2RlciYpIGNvbnN0OwogICAgIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCShyZXZpc2lvbiAxOTc4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEwIEBA
CiAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCiAKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworfQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtleWVkRGVjb2RlcjsKQEAgLTYwLDYgKzY0LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIAorICAgIGZy
aWVuZCBjbGFzcyBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIHByaXZh
dGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0OwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxOTc4ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wMy0wOSAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHByZXZhbGVudCByZXNvdXJj
ZSBjbGFzc2lmaWVyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQuCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzI0OTEzMjcyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAgICAtIEFkZGVkIHJlZmVyZW5jZSB0byBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQpOgorICAgICAgICAgICAtIENhbGxzIHRoZSBuZXcgY2xhc3NpZmllci4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyOjpj
bGFzc2lmeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNz
aWZpZXIuaDogQWRkZWQuCisgICAgICAgICAgIC0gQWRkZWQgbmV3IGNsYXNzaWZpZXIgZm9yIHBy
ZXZhbGVudCBzdWJyZXNvdXJjZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE2LTAzLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHVzZS1hZnRlci1mcmVlIHdoZW4gY2FuY2VsbGlu
ZyBzeW5jaHJvbm91cyBYSFIgd2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbgpJbmRleDogU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zODcsNiArMzg3LDcgQEAgc2V0KFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVGV4dENo
ZWNrZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3ZpZGVyLmNwcApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlUHJldmFs
ZW5jZUNsYXNzaWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaD4KICNpbmNsdWRlIDx3
dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01Niw3ICs1NiwxMCBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJS
ZXNvCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiBvcmlnaW5zKQogewogICAgIGNvcmVTdG9yZSgpLm1lcmdlU3RhdGlzdGljcyhvcmlnaW5z
KTsKLSAgICAvLyBUT0RPOiBBbmFseXplIHN0YXRpc3RpY3MgdG8gcmVjb2duaXplIHByZXZhbGVu
dCBkb21haW5zLiA8cmRhcjovL3Byb2JsZW0vMjQ5MTMyNzI+CisgICAgCisgICAgVmVjdG9yPFN0
cmluZz4gcHJldmFsZW50UmVzb3VyY2VzOworICAgIFZlY3RvcjxTdHJpbmc+IHByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xh
c3NpZmllcjo6Y2xhc3NpZnkoY29yZVN0b3JlKCkubV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAsIHBy
ZXZhbGVudFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik7
CiAgICAgLy8gVE9ETzogTm90aWZ5IGluZGl2aWR1YWwgV2ViUHJvY2Vzc2VzIG9mIHByZXZhbGVu
dCBkb21haW5zLiA8cmRhcjovL3Byb2JsZW0vMjQ3MDMwOTk+CiAgICAgYXV0byBlbmNvZGVyID0g
Y29yZVN0b3JlKCkuY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xh
c3NpZmljYXRpb24gPSAxMDA7CisgICAgCisvLyBTdWIgZnJhbWUgdGhyZXNob2xkcworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSAz
OworICAgIAorLy8gU3VicmVzb3VyY2UgdGhyZXNob2xkcworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSA1Oworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21h
aW5zVGhyZXNob2xkID0gMzsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCByZWRpcmVjdGVkVG9PdGhl
clByZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9sZCA9IDI7CisgICAgCit2b2lkIFdlYlJl
c291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXI6OmNsYXNzaWZ5KEhhc2hNYXA8U3RyaW5nLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiYgcmVzb3VyY2VNYXAsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxl
bnRSZXNvdXJjZXMsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlcklu
dGVyYWN0aW9uKQoreworICAgIGlmIChyZXNvdXJjZU1hcC5zaXplKCkgPCBtaW5pbXVtT3JpZ2lu
c1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogcmVzb3VyY2VNYXAudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2Ug
JiYgcmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgICAgICBw
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLmFwcGVuZChyZXNvdXJjZVN0YXRp
c3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdGlz
dGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNl
cy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgfSBl
bHNlIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNp
emUoKSA+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQKKyAgICAgICAgICAg
ICAgICAgICB8fCByZXNvdXJjZVN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW5zLnNpemUoKSA+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQKKyAg
ICAgICAgICAgICAgICAgICB8fCByZXNvdXJjZVN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvLnNpemUoKSA+IHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9Vbmlx
dWVEb21haW5zVGhyZXNob2xkCisgICAgICAgICAgICAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0
aWMucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuc2l6ZSgpID4gcmVk
aXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGQpIHsKKyAgICAg
ICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCisgICAgICAg
ICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbi5hcHBlbmQocmVz
b3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlcy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMu
aGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1By
ZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJfaAorI2RlZmluZSBX
ZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3N0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIHZvaWQgY2xhc3NpZnkoSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiByZXNvdXJjZU1hcCwgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJl
c291cmNlcywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24pOworfTsKKworfQorI2VuZGlmIC8vIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDYgKzEwMjgs
OCBAQAogCQk2NTAxQkQxQTEyRjEyNDM0MDBFOUYyNDggLyogV0tCdW5kbGVJbnNwZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTcx
MkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJNjU5QzU1
MUUxMzAwMDY0MTAwMjVDMEMyIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQ2
QTgyOTEzMDAwMTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xp
ZW50LmNwcCAqLzsgfTsKIAkJNjVCODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5z
cGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2QjAyMzdCNjFDOTBBNDlD
MDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkREMjQ0MzFDOEZDQzY2MDA0
Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgKi87IH07CisJCTZC
MDIzN0I3MUM5MEMwOUIwMDNDNzk0MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkREMjQ0
NDFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICov
OyB9OwogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlD
NjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI4RTg2RjExNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQ
aWNrZXJNYWMuaCAqLzsgfTsKIAkJNzI4RTg2RjIxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9y
UGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovOyB9
OwpAQCAtMzAzMSw2ICszMDMzLDggQEAKIAkJNjU0NkE4MkExMzAwMDE2NDAwMENFQjFDIC8qIElu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTcxMkYxMUQ3QjAwQjdERDhBIC8qIFdL
QnVuZGxlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLQnVuZGxlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVC
ODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZCREQyNDQzMUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2QkREMjQ0NDFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2
YWxlbmNlQ2xhc3NpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJS
ZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgcGF0
aCA9IFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclBy
aXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBp
Y2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA0OCw3ICszMDUyLDYg
QEAKIAkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0
QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGOTFDN0NGQjM3
MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0gICAgICAgIAogCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTkwOSw2ICs1OTEyLDggQEAKIAkJCQlCQzExMUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2Vi
UHJvY2Vzc1Byb3h5LmNwcCAqLywKIAkJCQlCQzAzMkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2Vi
UHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJQkNFRTdBQjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk2QkREMjQ0MzFDOEZDQzY2MDA0Njg0MkQg
LyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgKi8sCisJCQkJNkJERDI0NDQx
QzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gVUlQcm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTc2NjQsNiArNzY2OSw3IEBACiAJCQkJQkNENTk3RkYxMTJCNTdCRTAwRUM4QzIzIC8qIFdl
YlByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg1RkQ3QzE5MzQxNUE4MDAwMTc3
QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4
NUZEODAxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNkIwMjM3QjcxQzkwQzA5QjAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDU5OEFDMTEyQjdGREYwMEVDOEMy
MyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ5NzEw
RjQzN0FGMDA1OEMxNUEgLyogV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNB
MDkxMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTkzMjAsNiArOTMyNiw3IEBACiAJCQkJMzFBMkVDNzcxNDhENjYyRTAwODEwRDcxIC8q
IFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzdDNEMwOTMxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTM3M0NFQUQ1MTg1NDE3QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTZCMDIzN0I2MUM5MEE0OUMwMDNDNzk0MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VD
bGFzc2lmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MUExOTQxMTgyNEQyOTMwMEYzMkE1
RSAvKiBXS05TRGljdGlvbmFyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3MkNBRjBDMTgzM0ZE
OTEwMDQwQUMyNyAvKiBXS05TRXJyb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzhFMUE0OTE4
MjA4Q0Q2MDAzMTAwN0EgLyogV0tOU1N0cmluZy5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273473</attachid>
            <date>2016-03-09 14:13:50 -0800</date>
            <delta_ts>2016-03-09 17:16:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160309141337.patch</filename>
            <type>text/plain</type>
            <size>20945</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTAzLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB3ZSBoYXZlIHlldCB0byBkZWNpZGUgaG93IHRv
IHNldCB1cCB0ZXN0cyBmb3IgcHJldmFsZW50IHJlc291cmNlcy4KKworICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAgICAtIFJl
bW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNv
dXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICAgIC0gRGVsZXRlZCBvbGQg
Y2xhc3NpZmljYXRpb24gZnVuY3Rpb25zLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAgICAtIE1hZGUgdGhpcyBjbGFzcyBmcmllbmQgb2YgV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgc2luY2UgdGhlIGxhdHRlciBuZWVkcyB0byBzZW5k
IHRoZSBzdGF0aXN0aWNzIG1hcCBmb3IgY2xhc3NpZmljYXRpb24uCisKIDIwMTYtMDMtMDkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBmb2N1cygpIC8gYmx1cigp
IHNob3VsZCBiZSBvbiBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQsIG5vdCBFbGVtZW50CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJl
dmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNiBAQCB2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0YXJn
ZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KG1f
c3RvcmUtPnNpemUoKSk7CiAgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVy
KCk7CiB9CiAgICAgCkBAIC0yMDUsNyArMjA0LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlSGFz
QmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVu
U3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZpc2l0ZWQ7CiAgICAgfQogICAgIAotICAgIHRhcmdl
dFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9z
dG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIo
KTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMzcg
KzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQg
bWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNzaWZpY2F0aW9uID0gMTAwOwot
Ci0vLyBTdWIgZnJhbWUgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7Ci0KLS8vIFN1YnJlc291
cmNlIHRocmVzaG9sZHMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSA1Owotc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21haW5zVGhyZXNob2xk
QWJzb2x1dGUgPSAzOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJlZGlyZWN0ZWRUb090aGVyUHJl
dmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSAyOwotCi1ib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNz
YXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpCi17Ci0gICAgaWYgKG9yaWdpbnNWaXNp
dGVkU29GYXIgPCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRp
b24gfHwgaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKCkpIHsKLSAgICAgICAgaXNQ
cmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQ
cmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbnMuc2l6ZSgpID4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVz
aG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6
ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJl
c2hvbGRBYnNvbHV0ZQotICAgICAgICB8fCByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291
cmNlT3JpZ2lucy5zaXplKCkgPiByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3Jp
Z2luc1RocmVzaG9sZEFic29sdXRlOwotfQotCiB0eXBlZGVmIFdURjo6SGFzaE1hcDxTdHJpbmcs
IHVuc2lnbmVkLCBTdHJpbmdIYXNoLCBIYXNoVHJhaXRzPFN0cmluZz4sIEhhc2hUcmFpdHM8dW5z
aWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFsdWU7CiAK
IHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFzaENv
dW50ZWRTZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw2IEBA
IHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsKIAogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNv
dXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpOwotCi0gICAgYm9v
bCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgaGFzUHJldmFsZW50
UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBjb25zdDsKLQogICAgIHZvaWQgZW5jb2RlKEtleWVk
RW5jb2RlciYpIGNvbnN0OwogICAgIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCShyZXZpc2lvbiAxOTc4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEwIEBA
CiAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCiAKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworfQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtleWVkRGVjb2RlcjsKQEAgLTYwLDYgKzY0LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIAorICAgIGZy
aWVuZCBjbGFzcyBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIHByaXZh
dGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0OwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxOTc4ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wMy0wOSAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHByZXZhbGVudCByZXNvdXJj
ZSBjbGFzc2lmaWVyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQuCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzI0OTEzMjcyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAgICAtIEFkZGVkIHJlZmVyZW5jZSB0byBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQpOgorICAgICAgICAgICAtIENhbGxzIHRoZSBuZXcgY2xhc3NpZmllci4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyOjpj
bGFzc2lmeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNz
aWZpZXIuaDogQWRkZWQuCisgICAgICAgICAgIC0gQWRkZWQgbmV3IGNsYXNzaWZpZXIgZm9yIHBy
ZXZhbGVudCBzdWJyZXNvdXJjZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE2LTAzLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHVzZS1hZnRlci1mcmVlIHdoZW4gY2FuY2VsbGlu
ZyBzeW5jaHJvbm91cyBYSFIgd2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbgpJbmRleDogU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zODcsNiArMzg3LDcgQEAgc2V0KFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVGV4dENo
ZWNrZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3ZpZGVyLmNwcApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlUHJldmFs
ZW5jZUNsYXNzaWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaD4KICNpbmNsdWRlIDx3
dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01Niw3ICs1NiwxMCBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJS
ZXNvCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiBvcmlnaW5zKQogewogICAgIGNvcmVTdG9yZSgpLm1lcmdlU3RhdGlzdGljcyhvcmlnaW5z
KTsKLSAgICAvLyBUT0RPOiBBbmFseXplIHN0YXRpc3RpY3MgdG8gcmVjb2duaXplIHByZXZhbGVu
dCBkb21haW5zLiA8cmRhcjovL3Byb2JsZW0vMjQ5MTMyNzI+CisgICAgCisgICAgVmVjdG9yPFN0
cmluZz4gcHJldmFsZW50UmVzb3VyY2VzOworICAgIFZlY3RvcjxTdHJpbmc+IHByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xh
c3NpZmllcjo6Y2xhc3NpZnkoY29yZVN0b3JlKCkubV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAsIHBy
ZXZhbGVudFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik7
CiAgICAgLy8gVE9ETzogTm90aWZ5IGluZGl2aWR1YWwgV2ViUHJvY2Vzc2VzIG9mIHByZXZhbGVu
dCBkb21haW5zLiA8cmRhcjovL3Byb2JsZW0vMjQ3MDMwOTk+CiAgICAgYXV0byBlbmNvZGVyID0g
Y29yZVN0b3JlKCkuY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xh
c3NpZmljYXRpb24gPSAxMDA7CisgICAgCisvLyBTdWIgZnJhbWUgdGhyZXNob2xkcworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSAz
OworICAgIAorLy8gU3VicmVzb3VyY2UgdGhyZXNob2xkcworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSA1Oworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21h
aW5zVGhyZXNob2xkID0gMzsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCByZWRpcmVjdGVkVG9PdGhl
clByZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9sZCA9IDI7CisgICAgCit2b2lkIFdlYlJl
c291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXI6OmNsYXNzaWZ5KEhhc2hNYXA8U3RyaW5nLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiYgcmVzb3VyY2VNYXAsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxl
bnRSZXNvdXJjZXMsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlcklu
dGVyYWN0aW9uKQoreworICAgIGlmIChyZXNvdXJjZU1hcC5zaXplKCkgPCBtaW5pbXVtT3JpZ2lu
c1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogcmVzb3VyY2VNYXAudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2Ug
JiYgcmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgICAgICBw
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLmFwcGVuZChyZXNvdXJjZVN0YXRp
c3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdGlz
dGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNl
cy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgfSBl
bHNlIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNp
emUoKSA+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQKKyAgICAgICAgICAg
IHx8IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6
ZSgpID4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZAorICAgICAgICAg
ICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXpl
KCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVz
aG9sZAorICAgICAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMucmVkaXJlY3RlZFRvT3RoZXJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuc2l6ZSgpID4gcmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxl
bnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGQpIHsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZVN0
YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCisgICAgICAgICAgICAgICAgcHJldmFsZW50UmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbi5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExl
dmVsRG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHByZXZhbGVu
dFJlc291cmNlcy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAg
ICAgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlc291
cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJfaAorI2RlZmluZSBXZWJSZXNvdXJjZVByZXZhbGVuY2VD
bGFzc2lmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUmVzb3Vy
Y2VQcmV2YWxlbmNlQ2xhc3NpZmllciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgY2xhc3Np
ZnkoSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiByZXNv
dXJjZU1hcCwgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlcywgVmVjdG9yPFN0cmlu
Zz4mIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24pOworfTsKKworfQorI2Vu
ZGlmIC8vIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTk3ODc1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDYgKzEwMjgsOCBAQAogCQk2NTAxQkQxQTEyRjEy
NDM0MDBFOUYyNDggLyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTcxMkYxMUQ3QjAwQjdERDhBIC8qIFdL
QnVuZGxlSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJNjU5QzU1MUUxMzAwMDY0MTAwMjVDMEMyIC8q
IEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQ2QTgyOTEzMDAwMTY0MDAwQ0VCMUMg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCAqLzsgfTsKIAkJNjVC
ODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxODEyRjExRDdCMDBCN0RE
OEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk2QjAyMzdCNjFDOTBBNDlDMDAzQzc5NDAgLyogV2ViUmVzb3Vy
Y2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QkREMjQ0MzFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQ
cmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgKi87IH07CisJCTZCMDIzN0I3MUM5MEMwOUIwMDNDNzk0
MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkREMjQ0NDFDOEZDQzY2MDA0Njg0MkQgLyog
V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICovOyB9OwogCQk2RUU4NDlDODEzNjhE
OTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyog
V0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzI4RTg2RjExNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLzsgfTsKIAkJ
NzI4RTg2RjIxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RjAxNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovOyB9OwpAQCAtMzAzMSw2ICszMDMzLDgg
QEAKIAkJNjU0NkE4MkExMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291
cmNlTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjVCODZGMTcxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhB
IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLQnVuZGxlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREQy
NDQzMUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlUHJldmFs
ZW5jZUNsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkREMjQ0
NDFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFz
c2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZEOEE5MUE1MTFGMEVGRDEw
MEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgcGF0aCA9IFdlYlByb2Nlc3MvY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRTg0
OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBhdGggPSBt
YWMvV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzA0OCw3ICszMDUyLDYgQEAKIAkJNzYyQjc0ODQxMjBCQkEy
RDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgIAogCQk3
QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNE
OEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNEOEMyMUM3NzlBRDYw
MEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTkwOSw2ICs1OTEyLDggQEAK
IAkJCQlCQzExMUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2ViUHJvY2Vzc1Byb3h5LmNwcCAqLywK
IAkJCQlCQzAzMkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1Byb3h5LmggKi8sCiAJ
CQkJQkNFRTdBQjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biAqLywKKwkJCQk2QkREMjQ0MzFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllci5jcHAgKi8sCisJCQkJNkJERDI0NDQxQzhGQ0M2NjAwNDY4NDJEIC8qIFdl
YlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gVUlQ
cm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc2NjQsNiArNzY2OSw3IEBA
CiAJCQkJQkNENTk3RkYxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Qzg1RkQ3QzE5MzQxNUE4MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNE
ZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4NUZEODAxOTM0MTY2NTAwMDE3N0M0
IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkIwMjM3QjcxQzkw
QzA5QjAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDU5OEFDMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ5NzEwRjQzN0FGMDA1OEMxNUEgLyogV2Vi
UHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNBMDkxMjREMTFBOTAwRkZCRkI1IC8q
IFdlYlByb2Nlc3NDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTkzMjAsNiArOTMyNiw3
IEBACiAJCQkJMzFBMkVDNzcxNDhENjYyRTAwODEwRDcxIC8qIFdLTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdDNEMwOTMxODE0QjNBRjAwMzY4
OEI5IC8qIFdLTlNBcnJheS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3M0NFQUQ1MTg1NDE3QUUw
MDhDMzYzRCAvKiBXS05TRGF0YS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTZCMDIzN0I2MUM5MEE0
OUMwMDNDNzk0MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3MUExOTQxMTgyNEQyOTMwMEYzMkE1RSAvKiBXS05TRGljdGlvbmFyeS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTM3MkNBRjBDMTgzM0ZEOTEwMDQwQUMyNyAvKiBXS05TRXJy
b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzhFMUE0OTE4MjA4Q0Q2MDAzMTAwN0EgLyogV0tO
U1N0cmluZy5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273513</attachid>
            <date>2016-03-09 17:16:41 -0800</date>
            <delta_ts>2016-03-10 11:35:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160309171628.patch</filename>
            <type>text/plain</type>
            <size>21355</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTAzLTA5ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHdlIGhhdmUgeWV0IHRvIGRlY2lkZSBob3cg
dG8gc2V0IHVwIHRlc3RzIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgICAgIC0g
UmVtb3ZlZCBjYWxscyB0byBvbGQgY2xhc3NpZmllciBpbiBXZWJDb3JlLgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29k
ZUhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1ByZXZhbGVudFJl
c291cmNlQ2hhcmFjdGVyaXN0aWNzKTogRGVsZXRlZC4KKyAgICAgICAgICAgLSBEZWxldGVkIG9s
ZCBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICAgIC0gTWFkZSB0aGlzIGNsYXNzIGZyaWVuZCBvZiBXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBzaW5jZSB0aGUgbGF0dGVyIG5lZWRzIHRvIHNl
bmQgdGhlIHN0YXRpc3RpY3MgbWFwIGZvciBjbGFzc2lmaWNhdGlvbi4KKwogMjAxNi0wMy0wOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGZvY3VzKCkgLyBibHVy
KCkgc2hvdWxkIGJlIG9uIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCwgbm90IEVsZW1lbnQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAko
cmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw2IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICAgICAgfQogICAgIH0KIAotICAgIHRh
cmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3Nhcnko
bV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRs
ZXIoKTsKIH0KICAgICAKQEAgLTIwNSw3ICsyMDQsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VI
YXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRl
ZCA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0Jl
ZW5TdWJyZXNvdXJjZUNvdW50KSAvIHRvdGFsVmlzaXRlZDsKICAgICB9CiAgICAgCi0gICAgdGFy
Z2V0U3RhdGlzdGljcy5jaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSht
X3N0b3JlLT5zaXplKCkpOwogICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cigpOwogfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwz
NyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRpb24gPSAxMDA7
Ci0KLS8vIFN1YiBmcmFtZSB0aHJlc2hvbGRzCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlID0gMzsKLQotLy8gU3VicmVz
b3VyY2UgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDU7Ci1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJlc2hv
bGRBYnNvbHV0ZSA9IDM7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgcmVkaXJlY3RlZFRvT3RoZXJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDI7Ci0KLWJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNl
c3NhcnkodW5zaWduZWQgb3JpZ2luc1Zpc2l0ZWRTb0ZhcikKLXsKLSAgICBpZiAob3JpZ2luc1Zp
c2l0ZWRTb0ZhciA8IG1pbmltdW1PcmlnaW5zVmlzaXRlZEZvclByZXZhbGVuY2VDbGFzc2lmaWNh
dGlvbiB8fCBpc1ByZXZhbGVudFJlc291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSkgewotICAgICAgICBp
c1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Omhh
c1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUKLSAgICAgICAgfHwgc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhy
ZXNob2xkQWJzb2x1dGUKLSAgICAgICAgfHwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5z
aXplKCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbVRvVW5pcXVlRG9tYWluc1Ro
cmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVz
b3VyY2VPcmlnaW5zLnNpemUoKSA+IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VP
cmlnaW5zVGhyZXNob2xkQWJzb2x1dGU7Ci19Ci0KIHR5cGVkZWYgV1RGOjpIYXNoTWFwPFN0cmlu
ZywgdW5zaWduZWQsIFN0cmluZ0hhc2gsIEhhc2hUcmFpdHM8U3RyaW5nPiwgSGFzaFRyYWl0czx1
bnNpZ25lZD4+OjpLZXlWYWx1ZVBhaXJUeXBlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NWYWx1ZTsK
IAogc3RhdGljIHZvaWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXNoQ291bnRlZFNldDxTdHJpbmc+JiBoYXNo
Q291bnRlZFNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaAkocmV2aXNpb24gMTk3ODc1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDYg
QEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgewogCiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJl
c291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2luc1Zpc2l0ZWRTb0Zhcik7Ci0KLSAgICBi
b29sIGhhc1ByZXZhbGVudFJlZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQcmV2YWxl
bnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0OwotCiAgICAgdm9pZCBlbmNvZGUoS2V5
ZWRFbmNvZGVyJikgY29uc3Q7CiAgICAgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTAg
QEAKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKIAorbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7Cit9CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS2V5ZWREZWNvZGVyOwpAQCAtNjAsNiArNjQsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogCisgICAg
ZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogcHJp
dmF0ZToKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1bHQ7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzkwNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTA5ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJlc291
cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ5MTMyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgICAgLSBBZGRlZCByZWZlcmVuY2Ug
dG8gVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0
YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgICAgLSBDYWxscyB0aGUgbmV3IGNsYXNzaWZpZXIu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmll
cjo6Y2xhc3NpZnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFz
c2lmaWVyOjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaDogQWRkZWQuCisgICAg
ICAgICAgIC0gQWRkZWQgbmV3IGNsYXNzaWZpZXIgZm9yIHByZXZhbGVudCBzdWJyZXNvdXJjZXMu
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTAz
LTA5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjE5NzE0OSk6IE1pc3NpbmcgYXZhaWxhYmlsaXR5IGNoZWNrcyB3aGVuIHNvZnQtbGlu
a2luZyBEYXRhRGV0ZWN0b3JzLmZyYW1ld29yawpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0zODcsNiArMzg3LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorICAgIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcAogICAgIFVJUHJvY2Vzcy9X
ZWJUZXh0Q2hlY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVGV4dENoZWNrZXJDbGllbnQuY3Bw
CiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3ZpZGVyLmNwcApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAJKHJldmlzaW9uIDE5Nzg3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5h
cnlTZW1hcGhvcmUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Niw3ICs1Niw5
IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc28KIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpCiB7
CiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNzKG9yaWdpbnMpOwotICAgIC8vIFRPRE86
IEFuYWx5emUgc3RhdGlzdGljcyB0byByZWNvZ25pemUgcHJldmFsZW50IGRvbWFpbnMuIDxyZGFy
Oi8vcHJvYmxlbS8yNDkxMzI3Mj4KKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRS
ZXNvdXJjZXMsIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgV2Vi
UmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcjo6Y2xhc3NpZnkoY29yZVN0b3JlKCkubV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAsIHByZXZhbGVudFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVzZXJJbnRlcmFjdGlvbik7CiAgICAgLy8gVE9ETzogTm90aWZ5IGluZGl2aWR1YWwgV2Vi
UHJvY2Vzc2VzIG9mIHByZXZhbGVudCBkb21haW5zLiA8cmRhcjovL3Byb2JsZW0vMjQ3MDMwOTk+
CiAgICAgYXV0byBlbmNvZGVyID0gY29yZVN0b3JlKCkuY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7
CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIgor
CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmll
ciB7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2
YWxlbmNlQ2xhc3NpZmljYXRpb24gPSAxMDA7CisgICAgCisvLyBTdWIgZnJhbWUgdGhyZXNob2xk
cworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJl
c2hvbGQgPSAzOworICAgIAorLy8gU3VicmVzb3VyY2UgdGhyZXNob2xkcworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSA1Owor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9V
bmlxdWVEb21haW5zVGhyZXNob2xkID0gMzsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCByZWRpcmVj
dGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9sZCA9IDI7CisgICAgCit2
b2lkIGNsYXNzaWZ5KEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgcmVz
b3VyY2VNYXAsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJjZXMsIFZlY3RvcjxTdHJp
bmc+JiBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uKQoreworICAgIGlmIChy
ZXNvdXJjZU1hcC5zaXplKCkgPCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxlbmNlQ2xh
c3NpZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHJlc291
cmNlU3RhdGlzdGljIDogcmVzb3VyY2VNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHJlc291
cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICAgICAgICAgIGlmIChyZXNv
dXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCisgICAgICAgICAgICAgICAgcHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbi5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMu
aGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcmV2
YWxlbnRSZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7
CisgICAgICAgIH0gZWxzZSBpZiAoaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3Mo
cmVzb3VyY2VTdGF0aXN0aWMpKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMu
aGFkVXNlckludGVyYWN0aW9uKQorICAgICAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlc1dp
dGhVc2VySW50ZXJhY3Rpb24uYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFp
bik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmV2YWxlbnRSZXNvdXJj
ZXMuYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgICAg
ICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgaGFzUHJldmFsZW50UmVzb3Vy
Y2VDaGFyYWN0ZXJpc3RpY3MoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VT
dGF0aXN0aWMpCit7CisgICAgcmV0dXJuIHJlc291cmNlU3RhdGlzdGljLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVz
aG9sZAorICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbnMuc2l6ZSgpID4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZAor
ICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6
ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJl
c2hvbGQKKyAgICB8fCByZXNvdXJjZVN0YXRpc3RpYy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVu
dFJlc291cmNlT3JpZ2lucy5zaXplKCkgPiByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291
cmNlT3JpZ2luc1RocmVzaG9sZDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUmVzb3VyY2VQcmV2
YWxlbmNlQ2xhc3NpZmllcgorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFz
c2lmaWVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJf
aAorI2RlZmluZSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyX2gKKworI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVy
IHsKKwordm9pZCBjbGFzc2lmeShIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mIHJlc291cmNlTWFwLCBWZWN0b3I8U3RyaW5nPiYgcHJldmFsZW50UmVzb3Vy
Y2VzLCBWZWN0b3I8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlv
bik7Citib29sIGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcgorfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisjZW5kaWYgLy8gV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcl9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxOTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsNiArMTAyOCw4IEBACiAJCTY1
MDFCRDFBMTJGMTI0MzQwMEU5RjI0OCAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxNzEyRjExRDdCMDBC
N0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwICovOyB9OwogCQk2NTlDNTUxRTEzMDAwNjQx
MDAyNUMwQzIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDZBODI5MTMwMDAx
NjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwICov
OyB9OwogCQk2NUI4NkYxRTEyRjExREUzMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE4MTJG
MTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCMDIzN0I2MUM5MEE0OUMwMDNDNzk0MCAv
KiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCREQyNDQzMUM4RkNDNjYwMDQ2ODQyRCAvKiBX
ZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAqLzsgfTsKKwkJNkIwMjM3QjcxQzkw
QzA5QjAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCREQyNDQ0MUM4RkNDNjYw
MDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmggKi87IH07CiAJCTZF
RTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQw
MDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjhFODZGMTE3OTUxODhDMDA4Nzg3OUUgLyog
V2ViQ29sb3JQaWNrZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5o
ICovOyB9OwogCQk3MjhFODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZG
MDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi87IH07CkBAIC0zMDMx
LDYgKzMwMzMsOCBAQAogCQk2NTQ2QTgyQTEzMDAwMTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUI4NkYxNzEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNw
ZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVJ
bnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUI4NkYxODEyRjEx
RDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tCdW5kbGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkJERDI0NDMxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNs
YXNzaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVz
b3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTZCREQyNDQ0MUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFz
c2lmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlUHJl
dmFsZW5jZUNsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkQ4QTkx
QTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBwYXRoID0gV2ViUHJv
Y2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVNYWMu
aDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDQ4LDcgKzMwNTIsNiBAQAogCQk3NjJC
NzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAg
ICAgICAgCiAJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4
QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTA5LDYg
KzU5MTIsOCBAQAogCQkJCUJDMTExQjBEMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzUHJv
eHkuY3BwICovLAogCQkJCUJDMDMyRENGMTBGNDM4OUYwMDU4QzE1QSAvKiBXZWJQcm9jZXNzUHJv
eHkuaCAqLywKIAkJCQlCQ0VFN0FCMzEyODE3MDk1MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJCTZCREQyNDQzMUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNv
dXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAqLywKKwkJCQk2QkREMjQ0NDFDOEZDQzY2MDA0
Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBVSVByb2Nlc3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzY2NCw2
ICs3NjY5LDcgQEAKIAkJCQlCQ0Q1OTdGRjExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5j
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODVGRDdDMTkzNDE1QTgwMDAxNzdDNCAvKiBXZWJQ
cmVmZXJlbmNlc0RlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg1RkQ4MDE5MzQx
NjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2
QjAyMzdCNzFDOTBDMDlCMDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTk4QUMxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlBy
ZWZlcmVuY2VzU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDk3MTBGNDM3QUYwMDU4
QzE1QSAvKiBXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0EwOTEyNEQxMUE5
MDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTMy
MCw2ICs5MzI2LDcgQEAKIAkJCQkzMUEyRUM3NzE0OEQ2NjJFMDA4MTBENzEgLyogV0tOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0M0QzA5MzE4
MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzczQ0VB
RDUxODU0MTdBRTAwOEMzNjNEIC8qIFdLTlNEYXRhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNkIw
MjM3QjYxQzkwQTQ5QzAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxQTE5NDExODI0RDI5MzAwRjMyQTVFIC8qIFdLTlNE
aWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcyQ0FGMEMxODMzRkQ5MTAwNDBBQzI3
IC8qIFdLTlNFcnJvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OEUxQTQ5MTgyMDhDRDYwMDMx
MDA3QSAvKiBXS05TU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273588</attachid>
            <date>2016-03-10 11:35:39 -0800</date>
            <delta_ts>2016-03-10 13:06:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160310113526.patch</filename>
            <type>text/plain</type>
            <size>21333</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE2LTAzLTEwICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHdlIGhhdmUgeWV0IHRvIGRlY2lkZSBob3cg
dG8gc2V0IHVwIHRlc3RzIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgICAgIC0g
UmVtb3ZlZCBjYWxscyB0byBvbGQgY2xhc3NpZmllciBpbiBXZWJDb3JlLgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29k
ZUhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1ByZXZhbGVudFJl
c291cmNlQ2hhcmFjdGVyaXN0aWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oOgorICAgICAgICAgICAtIERlbGV0ZWQgb2xkIGNsYXNzaWZpY2F0
aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3MpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgICAgLSBBZGRlZCBuZXcg
ZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIGxhbWRhIGFuZCBleGVjdXRlcyBpdCBvbiBldmVyeSBl
bnRyeSBpbiBpdHMgc3RhdGlzdGljcyBtYXAuCisKIDIwMTYtMDMtMTAgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxOTc5MjMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5Nzk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIs
NiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB0YXJnZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNv
dXJjZUlmTmVjZXNzYXJ5KG1fc3RvcmUtPnNpemUoKSk7CiAgICAgbV9zdG9yZS0+ZmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAgICAgCkBAIC0yMDUsNyArMjA0LDYgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0YXJnZXRTdGF0aXN0
aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJl
ck9mT3JpZ2luc1Zpc2l0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdldFN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZpc2l0ZWQ7CiAgICAg
fQogICAgIAotICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291
cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5maXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5Nzk0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMzcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgY29uc3QgdW5zaWduZWQgbWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJldmFsZW5jZUNsYXNz
aWZpY2F0aW9uID0gMTAwOwotCi0vLyBTdWIgZnJhbWUgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9
IDM7Ci0KLS8vIFN1YnJlc291cmNlIHRocmVzaG9sZHMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUgPSA1Owotc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9Vbmlx
dWVEb21haW5zVGhyZXNob2xkQWJzb2x1dGUgPSAzOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJl
ZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUg
PSAyOwotCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxl
bnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpCi17Ci0g
ICAgaWYgKG9yaWdpbnNWaXNpdGVkU29GYXIgPCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2
YWxlbmNlQ2xhc3NpZmljYXRpb24gfHwgaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNz
KCkpIHsKLSAgICAgICAgaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8uc2l6ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21U
b1VuaXF1ZURvbWFpbnNUaHJlc2hvbGRBYnNvbHV0ZQotICAgICAgICB8fCByZWRpcmVjdGVkVG9P
dGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucy5zaXplKCkgPiByZWRpcmVjdGVkVG9PdGhlclBy
ZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9sZEFic29sdXRlOwotfQotCiB0eXBlZGVmIFdU
Rjo6SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkLCBTdHJpbmdIYXNoLCBIYXNoVHJhaXRzPFN0cmlu
Zz4sIEhhc2hUcmFpdHM8dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVmFsdWU7CiAKIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVkU2V0KEtleWVk
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPiYgaGFzaENvdW50ZWRTZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5Nzk0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDExICs0Miw2IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsKIAogICAg
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGNoZWNrQW5k
U2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVk
U29GYXIpOwotCi0gICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigpIGNvbnN0OwotICAg
IGJvb2wgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBjb25zdDsKLQogICAg
IHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYpIGNvbnN0OwogICAgIGJvb2wgZGVjb2RlKEtleWVk
RGVjb2RlciYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMTk3OTQxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNyw0ICsxMzcsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmZpcmVEYQogICAgICAgICBtX2RhdGFBZGRlZEhhbmRsZXIoKTsKIH0KIAorc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1pbmltdW1PcmlnaW5zTG9hZGVkRm9yUHJvY2Vzc2luZyA9IDEwMDsKKwor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKHN0ZDo6
ZnVuY3Rpb248dm9pZChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik+JiYgcHJvY2Vzc0Z1bmN0aW9u
KQoreworICAgIGlmIChtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkgPCBtaW5pbXVtT3Jp
Z2luc0xvYWRlZEZvclByb2Nlc3NpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0
byYgcmVzb3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkK
KyAgICAgICAgcHJvY2Vzc0Z1bmN0aW9uKHJlc291cmNlU3RhdGlzdGljKTsKK30KIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgJKHJldmlzaW9uIDE5Nzk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzU3RhdGlzdGljcyhzdGQ6OmZ1bmN0aW9uPHZvaWQo
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYmIHByb2Nlc3NGdW5jdGlvbik7CiBwcml2YXRlOgog
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpID0gZGVmYXVsdDsKIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTk3OTQ2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMDMtMTAgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBwcmV2YWxlbnQgcmVzb3VyY2UgY2xh
c3NpZmllciBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
NDkxMzI3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAgICAtIEFkZGVkIHJlZmVyZW5jZSB0byBVSVBy
b2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1VwZGF0ZWQpOgorICAgICAgICAgICAtIENhbGxzIHByb2Nlc3NTdGF0aXN0aWNzIHdpdGggYSBs
YW1kYSBmdW5jdGlvbiB0byBjbGFzc2lmeSBwcmV2YWxlbnQgcmVzb3VyY2VzLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXI6Omhhc1ByZXZh
bGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VQcmV2YWxlbmNlQ2xhc3NpZmllcjo6Y2xhc3NpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmg6IEFkZGVkLgorICAgICAgICAgICAtIEFk
ZGVkIG5ldyBjbGFzc2lmaWVyIGZvciBwcmV2YWxlbnQgc3VicmVzb3VyY2VzLgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNi0wMy0xMCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1d
IHB1c2ggbWVkaWEgc3RyZWFtIHN0YXRlIHRvIHRoZSBVSSBwcm9jZXNzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3OTQxKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM4Nyw2ICszODcsNyBAQCBzZXQoV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwCiAgICAgVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hl
Y2tlckNsaWVudC5jcHAKICAgICBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMTk3OTQxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgogI2luY2x1ZGUgPHd0
Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTU2LDcgKzU2LDEyIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJl
c28KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4mIG9yaWdpbnMpCiB7CiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNzKG9yaWdpbnMp
OwotICAgIC8vIFRPRE86IEFuYWx5emUgc3RhdGlzdGljcyB0byByZWNvZ25pemUgcHJldmFsZW50
IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDkxMzI3Mj4KKyAgICAKKyAgICBWZWN0b3I8U3Ry
aW5nPiBwcmV2YWxlbnRSZXNvdXJjZXMsIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb247CisgICAgY29yZVN0b3JlKCkucHJvY2Vzc1N0YXRpc3RpY3MoWyZwcmV2YWxlbnRSZXNv
dXJjZXMsICZwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uXSAoUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIHsKKyAgICAgICAgV2ViUmVzb3VyY2VQ
cmV2YWxlbmNlQ2xhc3NpZmllcjo6Y2xhc3NpZnkocmVzb3VyY2VTdGF0aXN0aWMsIHByZXZhbGVu
dFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik7CisgICAg
fSk7CisKICAgICAvLyBUT0RPOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQcm9jZXNzZXMgb2YgcHJl
dmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDcwMzA5OT4KICAgICBhdXRvIGVuY29k
ZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2
YWxlbmNlQ2xhc3NpZmllci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgiCisKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
K25hbWVzcGFjZSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyIHsKKworLy8gU3ViIGZy
YW1lIHRocmVzaG9sZHMKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zVGhyZXNob2xkID0gMzsKKyAgICAKKy8vIFN1YnJlc291cmNlIHRocmVzaG9sZHMK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhy
ZXNob2xkID0gNTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzdWJyZXNvdXJjZUhhc0JlZW5SZWRp
cmVjdGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZCA9IDM7CitzdGF0aWMgY29uc3QgdW5z
aWduZWQgcmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGQg
PSAyOworCitzdGF0aWMgYm9vbCBoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyhj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykKK3sKKyAgICBy
ZXR1cm4gcmVzb3VyY2VTdGF0aXN0aWMuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXpl
KCkgPiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkCisgICAgICAgIHx8IHJl
c291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4g
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZAorICAgICAgICB8fCByZXNv
dXJjZVN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUoKSA+IHN1YnJl
c291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21haW5zVGhyZXNob2xkCisgICAg
ICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3Vy
Y2VPcmlnaW5zLnNpemUoKSA+IHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmln
aW5zVGhyZXNob2xkOworfQorICAgIAordm9pZCBjbGFzc2lmeShSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNl
cywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24p
Cit7CisgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAg
ICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbikKKyAgICAgICAg
ICAgIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24uYXBwZW5kKHJlc291cmNl
U3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBy
ZXZhbGVudFJlc291cmNlcy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWlu
KTsKKyAgICB9IGVsc2UgaWYgKGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKHJl
c291cmNlU3RhdGlzdGljKSkgeworICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNl
ckludGVyYWN0aW9uKQorICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbi5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBwcmV2YWxlbnRSZXNvdXJjZXMuYXBwZW5kKHJlc291cmNl
U3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3Rp
Yy5pc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcgorfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2
YWxlbmNlQ2xhc3NpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJl
c291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJfaAorI2RlZmluZSBXZWJSZXNvdXJjZVByZXZhbGVu
Y2VDbGFzc2lmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJS
ZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyIHsKKwordm9pZCBjbGFzc2lmeShXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgVmVjdG9yPFN0cmluZz4m
IHByZXZhbGVudFJlc291cmNlcywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlc1dp
dGhVc2VySW50ZXJhY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBXZWJSZXNvdXJjZVByZXZhbGVu
Y2VDbGFzc2lmaWVyCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZiAvLyBXZWJSZXNvdXJj
ZVByZXZhbGVuY2VDbGFzc2lmaWVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Nzk0MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTAyOCw2ICsxMDI4LDggQEAKIAkJNjUwMUJEMUExMkYxMjQzNDAwRTlGMjQ4IC8qIFdL
QnVuZGxlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1Qjg2RjE3MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5j
cHAgKi87IH07CiAJCTY1OUM1NTFFMTMwMDA2NDEwMDI1QzBDMiAvKiBJbmplY3RlZEJ1bmRsZVBh
Z2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxl
UGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi87IH07CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3
REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5z
cGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNkIwMjM3QjYxQzkwQTQ5QzAwM0M3OTQwIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNz
aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkJERDI0NDMxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXIuY3BwICovOyB9OworCQk2QjAyMzdCNzFDOTBDMDlCMDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQ
cmV2YWxlbmNlQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkJERDI0NDQxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFs
ZW5jZUNsYXNzaWZpZXIuaCAqLzsgfTsKIAkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0
ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyOEU4NkYxMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RUYxNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi87IH07CiAJCTcyOEU4NkYyMTc5NTE4OEMw
MDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5tbSAqLzsgfTsKQEAgLTMwMzEsNiArMzAzMyw4IEBACiAJCTY1NDZBODJBMTMw
MDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qjg2RjE3MTJG
MTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3Bl
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUluc3BlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkREMjQ0MzFDOEZDQzY2MDA0Njg0
MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkJERDI0NDQxQzhGQ0M2NjAwNDY4NDJE
IC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldl
YlByb2Nlc3Muc2IuaW47IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNi
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0
ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJp
dmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhD
MDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU4MDksOSArNTgxMyw2IEBACiAJCQkJODZFNjdBMjIxOTBGNDExODAwMDA0QUI3IC8qIFBy
b2Nlc3NUaHJvdHRsZXIuY3BwICovLAogCQkJCTg2RTY3QTIxMTkwRjQxMTgwMDAwNEFCNyAvKiBQ
cm9jZXNzVGhyb3R0bGVyLmggKi8sCiAJCQkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFBy
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLywKLQkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2Qzcg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKLQkJCQk3QTlDRDhDMTFD
Nzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCi0J
CQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUg
LyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovLApAQCAtNTkwOCw2ICs1OTA5LDExIEBACiAJCQkJ
QkMxMTFCMEQxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJ
QkMwMzJEQ0YxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlByb2Nlc3NQcm94eS5oICovLAogCQkJCUJD
RUU3QUIzMTI4MTcwOTUwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8s
CisJCQkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAgKi8sCisJCQkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAorCQkJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZD
NyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NkJERDI0NDMxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXIuY3BwICovLAorCQkJCTZCREQyNDQ0MUM4RkNDNjYwMDQ2ODQyRCAvKiBXZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFVJUHJvY2VzczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03NjYzLDYgKzc2NjksNyBAQAogCQkJCUJDRDU5
N0ZGMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0M4NUZEN0MxOTM0MTVBODAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDODVGRDgwMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVm
ZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCMDIzN0I3MUM5MEMwOUIwMDNDNzk0
MCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0Q1OThBQzExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMwMzJEOTcxMEY0MzdBRjAwNThDMTVBIC8qIFdlYlByb2Nlc3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDQzQTA5MTI0RDExQTkwMEZGQkZCNSAvKiBXZWJQcm9jZXNz
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzE5LDYgKzkzMjYsNyBAQAogCQkJCTMx
QTJFQzc3MTQ4RDY2MkUwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3QzRDMDkzMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05T
QXJyYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzNDRUFENTE4NTQxN0FFMDA4QzM2M0QgLyog
V0tOU0RhdGEubW0gaW4gU291cmNlcyAqLywKKwkJCQk2QjAyMzdCNjFDOTBBNDlDMDAzQzc5NDAg
LyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzNzFBMTk0MTE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzNzJDQUYwQzE4MzNGRDkxMDA0MEFDMjcgLyogV0tOU0Vycm9yLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzc4RTFBNDkxODIwOENENjAwMzEwMDdBIC8qIFdLTlNTdHJpbmcubW0g
aW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273605</attachid>
            <date>2016-03-10 13:06:57 -0800</date>
            <delta_ts>2016-03-10 19:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160310130644.patch</filename>
            <type>text/plain</type>
            <size>21731</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE2LTAzLTEwICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHdlIGhhdmUgeWV0IHRvIGRlY2lkZSBob3cg
dG8gc2V0IHVwIHRlc3RzIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgICAgIC0g
UmVtb3ZlZCBjYWxscyB0byBvbGQgY2xhc3NpZmllciBpbiBXZWJDb3JlLgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29k
ZUhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1ByZXZhbGVudFJl
c291cmNlQ2hhcmFjdGVyaXN0aWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oOgorICAgICAgICAgICAtIERlbGV0ZWQgb2xkIGNsYXNzaWZpY2F0
aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3MpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgICAgLSBBZGRlZCBuZXcg
ZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIGxhbWRhIGFuZCBleGVjdXRlcyBpdCBvbiBldmVyeSBl
bnRyeSBpbiBpdHMgc3RhdGlzdGljcyBtYXAuCisKIDIwMTYtMDMtMTAgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENTUDogSW1wbGVtZW50IHN1cHBvcnQgZm9y
IHNjcmlwdCBhbmQgc3R5bGUgbm9uY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5Nzk0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Miw3ICsxNDIsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmln
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0YXJnZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQ
cmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KG1fc3RvcmUtPnNpemUoKSk7CiAgICAgbV9zdG9y
ZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAgICAgCkBAIC0yMDUsNyArMjA0
LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0
YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVk
QnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdl
dFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZp
c2l0ZWQ7CiAgICAgfQogICAgIAotICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1By
ZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3Jl
LT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9u
IDE5Nzk0NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMzcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bU9yaWdpbnNWaXNpdGVkRm9yUHJl
dmFsZW5jZUNsYXNzaWZpY2F0aW9uID0gMTAwOwotCi0vLyBTdWIgZnJhbWUgdGhyZXNob2xkcwot
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hv
bGRBYnNvbHV0ZSA9IDM7Ci0KLS8vIFN1YnJlc291cmNlIHRocmVzaG9sZHMKLXN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1
dGUgPSA1Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0
ZWRGcm9tVG9VbmlxdWVEb21haW5zVGhyZXNob2xkQWJzb2x1dGUgPSAzOwotc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNo
b2xkQWJzb2x1dGUgPSAyOwotCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmNoZWNrQW5k
U2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVk
U29GYXIpCi17Ci0gICAgaWYgKG9yaWdpbnNWaXNpdGVkU29GYXIgPCBtaW5pbXVtT3JpZ2luc1Zp
c2l0ZWRGb3JQcmV2YWxlbmNlQ2xhc3NpZmljYXRpb24gfHwgaXNQcmV2YWxlbnRSZXNvdXJjZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc1ByZXZhbGVudFJlc291cmNlQ2hh
cmFjdGVyaXN0aWNzKCkpIHsKLSAgICAgICAgaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3Rlcmlz
dGljcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMu
c2l6ZSgpID4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0g
ICAgICAgIHx8IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJlc2hvbGRBYnNvbHV0ZQotICAgICAgICB8fCBy
ZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucy5zaXplKCkgPiByZWRpcmVj
dGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9sZEFic29sdXRlOwotfQot
CiB0eXBlZGVmIFdURjo6SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkLCBTdHJpbmdIYXNoLCBIYXNo
VHJhaXRzPFN0cmluZz4sIEhhc2hUcmFpdHM8dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFsdWU7CiAKIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3Vu
dGVkU2V0KEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
SGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFzaENvdW50ZWRTZXQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5Nzk0
NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw2IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIHsKIAogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9y
aWdpbnNWaXNpdGVkU29GYXIpOwotCi0gICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigp
IGNvbnN0OwotICAgIGJvb2wgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBj
b25zdDsKLQogICAgIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYpIGNvbnN0OwogICAgIGJvb2wg
ZGVjb2RlKEtleWVkRGVjb2RlciYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMTk3OTQ3
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bU9yaWdpbnNMb2FkZWRGb3JQcm9jZXNz
aW5nID0gMTAwOworCiBSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkpOwpAQCAtMTM3LDQgKzEzOSwxMiBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZURhCiAgICAgICAgIG1fZGF0YUFkZGVk
SGFuZGxlcigpOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vz
c1N0YXRpc3RpY3Moc3RkOjpmdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKT4m
JiBwcm9jZXNzRnVuY3Rpb24pCit7CisgICAgaWYgKG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNp
emUoKSA8IG1pbmltdW1PcmlnaW5zTG9hZGVkRm9yUHJvY2Vzc2luZykKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLnZhbHVlcygpKQorICAgICAgICBwcm9jZXNzRnVuY3Rpb24ocmVzb3VyY2VTdGF0aXN0
aWMpOworfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMTk3OTQ3KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25I
YW5kbGVyKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKHN0
ZDo6ZnVuY3Rpb248dm9pZChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik+JiYpOwogcHJpdmF0ZToK
ICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1bHQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE5Nzk1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTEwICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJlc291cmNlIGNs
YXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjQ5MTMyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgICAgLSBBZGRlZCByZWZlcmVuY2UgdG8gVUlQ
cm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKToKKyAgICAgICAgICAgLSBDYWxscyBwcm9jZXNzU3RhdGlzdGljcyB3aXRoIGEg
bGFtZGEgZnVuY3Rpb24gdG8gY2xhc3NpZnkgcHJldmFsZW50IHJlc291cmNlcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyOjpoYXNQcmV2
YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlUHJldmFsZW5jZUNsYXNzaWZpZXI6OmNsYXNzaWZ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oOiBBZGRlZC4KKyAgICAgICAgICAgLSBB
ZGRlZCBuZXcgY2xhc3NpZmllciBmb3IgcHJldmFsZW50IHN1YnJlc291cmNlcy4KKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMDMtMTAgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxOTc5NDMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTk3OTQ3KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTM4Nyw2ICszODcsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dl
YlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisgICAgVUlQcm9jZXNzL1dl
YlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlRleHRD
aGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAkocmV2aXNpb24gMTk3OTQ3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5
LDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU2LDggKzU2LDEzIEBAIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc28KIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpCiB7CiAgICAg
Y29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNzKG9yaWdpbnMpOwotICAgIC8vIFRPRE86IEFuYWx5
emUgc3RhdGlzdGljcyB0byByZWNvZ25pemUgcHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJv
YmxlbS8yNDkxMzI3Mj4KLSAgICAvLyBUT0RPOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQcm9jZXNz
ZXMgb2YgcHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDcwMzA5OT4KKyAgICAK
KyAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZXMsIHByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgY29yZVN0b3JlKCkucHJvY2Vzc1N0YXRpc3RpY3Mo
WyZwcmV2YWxlbnRSZXNvdXJjZXMsICZwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uXSAoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIHsKKyAgICAg
ICAgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcjo6Y2xhc3NpZnkocmVzb3VyY2VTdGF0
aXN0aWMsIHByZXZhbGVudFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbik7CisgICAgfSk7CisKKyAgICAvLyBUT0RPOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQ
cm9jZXNzZXMgb2YgcHJldmFsZW50IGRvbWFpbnMgdXNpbmcgdGhlIHR3byB2ZWN0b3JzIHBvcHVs
YXRlZCBieSB0aGUgY2xhc3NpZmllci4gPHJkYXI6Ly9wcm9ibGVtLzI0NzAzMDk5PgogICAgIGF1
dG8gZW5jb2RlciA9IGNvcmVTdG9yZSgpLmNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpOwogICAgIAog
ICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgImZ1bGxfYnJvd3Npbmdfc2Vz
c2lvbiIpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFs
ZW5jZUNsYXNzaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCIK
KworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZp
ZXIgeworCisvLyBTdWIgZnJhbWUgdGhyZXNob2xkcworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSAzOworICAgIAorLy8gU3VicmVz
b3VyY2UgdGhyZXNob2xkcworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnNUaHJlc2hvbGQgPSA1Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN1YnJl
c291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tVG9VbmlxdWVEb21haW5zVGhyZXNob2xkID0gMzsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNl
T3JpZ2luc1RocmVzaG9sZCA9IDI7CisKK3N0YXRpYyBib29sIGhhc1ByZXZhbGVudFJlc291cmNl
Q2hhcmFjdGVyaXN0aWNzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3Rh
dGlzdGljKQoreworICAgIHJldHVybiByZXNvdXJjZVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW5zLnNpemUoKSA+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hv
bGQKKyAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xk
CisgICAgICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8uc2l6ZSgpID4gc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFp
bnNUaHJlc2hvbGQKKyAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMucmVkaXJlY3RlZFRvT3Ro
ZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuc2l6ZSgpID4gcmVkaXJlY3RlZFRvT3RoZXJQcmV2
YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGQ7Cit9CisgICAgCit2b2lkIGNsYXNzaWZ5KFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljLCBWZWN0b3I8U3RyaW5nPiYg
cHJldmFsZW50UmVzb3VyY2VzLCBWZWN0b3I8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbikKK3sKKyAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxl
bnRSZXNvdXJjZSkgeworICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVy
YWN0aW9uKQorICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlv
bi5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZVN0YXRpc3Rp
Yy5oaWdoTGV2ZWxEb21haW4pOworICAgIH0gZWxzZSBpZiAoaGFzUHJldmFsZW50UmVzb3VyY2VD
aGFyYWN0ZXJpc3RpY3MocmVzb3VyY2VTdGF0aXN0aWMpKSB7CisgICAgICAgIGlmIChyZXNvdXJj
ZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCisgICAgICAgICAgICBwcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVXNlckludGVyYWN0aW9uLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2
ZWxEb21haW4pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNl
cy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAg
IHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lm
aWVyCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZVByZXZhbGVu
Y2VDbGFzc2lmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllcl9oCisjZGVmaW5lIFdl
YlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworbmFtZXNwYWNlIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIgeworCit2b2lkIGNs
YXNzaWZ5KFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBWZWN0b3I8U3RyaW5nPiYg
cHJldmFsZW50UmVzb3VyY2VzLCBWZWN0b3I8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdlYlJlc291cmNlUHJldmFsZW5j
ZUNsYXNzaWZpZXIKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIFdlYlJlc291cmNl
UHJldmFsZW5jZUNsYXNzaWZpZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk3OTQ3KQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDI4LDYgKzEwMjgsOCBAQAogCQk2NTAxQkQxQTEyRjEyNDM0MDBFOUYyNDggLyogV0tC
dW5kbGVJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjVCODZGMTcxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNw
cCAqLzsgfTsKIAkJNjU5QzU1MUUxMzAwMDY0MTAwMjVDMEMyIC8qIEluamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTQ2QTgyOTEzMDAwMTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQ
YWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCAqLzsgfTsKIAkJNjVCODZGMUUxMkYxMURFMzAwQjdE
RDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNw
ZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk2QjAyMzdCNjFDOTBBNDlDMDAzQzc5NDAgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3Np
Zmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QkREMjQ0MzFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmll
ci5jcHAgKi87IH07CisJCTZCMDIzN0I3MUM5MEMwOUIwMDNDNzk0MCAvKiBXZWJSZXNvdXJjZVBy
ZXZhbGVuY2VDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2QkREMjQ0NDFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxl
bmNlQ2xhc3NpZmllci5oICovOyB9OwogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJ
bnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRl
TWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI4RTg2RjExNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZFRjE3OTUxODhDMDA4
Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLzsgfTsKIAkJNzI4RTg2RjIxNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9y
UGlja2VyTWFjLm1tICovOyB9OwpAQCAtMzAzMyw2ICszMDM1LDggQEAKIAkJNjU0NkE4MkExMzAw
MDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTcxMkYx
MUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREQyNDQzMUM4RkNDNjYwMDQ2ODQy
RCAvKiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkREMjQ0NDFDOEZDQzY2MDA0Njg0MkQg
LyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2Vi
UHJvY2Vzcy5zYi5pbjsgcGF0aCA9IFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2Iu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4
MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNwZWN0b3JQcml2
YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMw
MDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTgxNSw5ICs1ODE5LDYgQEAKIAkJCQk4NkU2N0EyMjE5MEY0MTE4MDAwMDRBQjcgLyogUHJv
Y2Vzc1Rocm90dGxlci5jcHAgKi8sCiAJCQkJODZFNjdBMjExOTBGNDExODAwMDA0QUI3IC8qIFBy
b2Nlc3NUaHJvdHRsZXIuaCAqLywKIAkJCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIgLyogUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oICovLAotCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAotCQkJCTdBOUNEOEMxMUM3
Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywKLQkJ
CQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyog
UmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAv
KiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi8sCkBAIC01OTE0LDYgKzU5MTUsMTEgQEAKIAkJCQlC
QzExMUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2ViUHJvY2Vzc1Byb3h5LmNwcCAqLywKIAkJCQlC
QzAzMkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJQkNF
RTdBQjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywK
KwkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCAqLywKKwkJCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCisJCQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbiAqLywKKwkJCQk2
QkREMjQ0MzFDOEZDQzY2MDA0Njg0MkQgLyogV2ViUmVzb3VyY2VQcmV2YWxlbmNlQ2xhc3NpZmll
ci5jcHAgKi8sCisJCQkJNkJERDI0NDQxQzhGQ0M2NjAwNDY4NDJEIC8qIFdlYlJlc291cmNlUHJl
dmFsZW5jZUNsYXNzaWZpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gVUlQcm9jZXNzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc2NjksNiArNzY3NSw3IEBACiAJCQkJQkNENTk3
RkYxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3Qzg1RkQ3QzE5MzQxNUE4MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4NUZEODAxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZl
cmVuY2VzS2V5cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkIwMjM3QjcxQzkwQzA5QjAwM0M3OTQw
IC8qIFdlYlJlc291cmNlUHJldmFsZW5jZUNsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRDU5OEFDMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzAzMkQ5NzEwRjQzN0FGMDA1OEMxNUEgLyogV2ViUHJvY2Vzcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNBMDkxMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3ND
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTkzMjcsNiArOTMzNCw3IEBACiAJCQkJMzFB
MkVDNzcxNDhENjYyRTAwODEwRDcxIC8qIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdDNEMwOTMxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNB
cnJheS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3M0NFQUQ1MTg1NDE3QUUwMDhDMzYzRCAvKiBX
S05TRGF0YS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTZCMDIzN0I2MUM5MEE0OUMwMDNDNzk0MCAv
KiBXZWJSZXNvdXJjZVByZXZhbGVuY2VDbGFzc2lmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTM3MUExOTQxMTgyNEQyOTMwMEYzMkE1RSAvKiBXS05TRGljdGlvbmFyeS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3MkNBRjBDMTgzM0ZEOTEwMDQwQUMyNyAvKiBXS05TRXJyb3IubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzNzhFMUE0OTE4MjA4Q0Q2MDAzMTAwN0EgLyogV0tOU1N0cmluZy5tbSBp
biBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273668</attachid>
            <date>2016-03-10 19:23:31 -0800</date>
            <delta_ts>2016-03-11 15:09:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160310192318.patch</filename>
            <type>text/plain</type>
            <size>14261</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE2LTAzLTEwICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHdlIGhhdmUgeWV0IHRvIGRlY2lkZSBob3cg
dG8gc2V0IHVwIHRlc3RzIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgICAgICAt
IFJlbW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNv
ZGVIYXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRS
ZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgICAgIC0gRGVsZXRlZCBvbGQgY2xhc3NpZmlj
YXRpb24gZnVuY3Rpb25zLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNFbm91Z2hEYXRhRm9yU3RhdGlzdGljc1Byb2Nlc3Np
bmcpOgorICAgICAgICAgICAgLSBOZXcgZnVuY3Rpb24gdG8gYWxsb3cgZm9yIGNoZWNrcyBiZWZv
cmUgY2FsbHMgdG8gcHJvY2Vzc1N0YXRpc3RpY3MuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgICAgIC0g
TmV3IGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBsYW1kYSBhbmQgZXhlY3V0ZXMgaXQgb24gZXZl
cnkgZW50cnkgaW4gaXRzIHN0YXRpc3RpY3MgbWFwLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxNi0wMy0xMCAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBzaG91bGQgbm90IGJlIHJlZGlyZWN0
ZWQgdG8gYW4gaW52YWxpZCBVUkwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMTk3OTg0KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDcgKzE0Miw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZh
bGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5m
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKQEAgLTIwNSw3ICsyMDQsNiBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgICAgIHRhcmdl
dFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRv
dGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGFyZ2V0U3Rh
dGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50KSAvIHRvdGFsVmlzaXRl
ZDsKICAgICB9CiAgICAgCi0gICAgdGFyZ2V0U3RhdGlzdGljcy5jaGVja0FuZFNldEFzUHJldmFs
ZW50UmVzb3VyY2VJZk5lY2Vzc2FyeShtX3N0b3JlLT5zaXplKCkpOwogICAgIG1fc3RvcmUtPmZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTk3
OTg0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzNyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxl
bmNlQ2xhc3NpZmljYXRpb24gPSAxMDA7Ci0KLS8vIFN1YiBmcmFtZSB0aHJlc2hvbGRzCi1zdGF0
aWMgY29uc3QgdW5zaWduZWQgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZEFi
c29sdXRlID0gMzsKLQotLy8gU3VicmVzb3VyY2UgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9
IDU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZy
b21Ub1VuaXF1ZURvbWFpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7Ci1zdGF0aWMgY29uc3QgdW5z
aWduZWQgcmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGRB
YnNvbHV0ZSA9IDI7Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Y2hlY2tBbmRTZXRB
c1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2luc1Zpc2l0ZWRTb0Zh
cikKLXsKLSAgICBpZiAob3JpZ2luc1Zpc2l0ZWRTb0ZhciA8IG1pbmltdW1PcmlnaW5zVmlzaXRl
ZEZvclByZXZhbGVuY2VDbGFzc2lmaWNhdGlvbiB8fCBpc1ByZXZhbGVudFJlc291cmNlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0
ZXJpc3RpY3MoKSkgewotICAgICAgICBpc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNz
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXpl
KCkgPiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUKLSAgICAg
ICAgfHwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUKLSAgICAgICAgfHwgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVj
dGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHJlZGly
ZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLnNpemUoKSA+IHJlZGlyZWN0ZWRU
b090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGU7Ci19Ci0KIHR5
cGVkZWYgV1RGOjpIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIFN0cmluZ0hhc2gsIEhhc2hUcmFp
dHM8U3RyaW5nPiwgSGFzaFRyYWl0czx1bnNpZ25lZD4+OjpLZXlWYWx1ZVBhaXJUeXBlIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NWYWx1ZTsKIAogc3RhdGljIHZvaWQgZW5jb2RlSGFzaENvdW50ZWRT
ZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXNo
Q291bnRlZFNldDxTdHJpbmc+JiBoYXNoQ291bnRlZFNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkocmV2aXNpb24gMTk3OTg0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDYgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
ewogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpID0gZGVmYXVsdDsKIAotICAgIGJvb2wg
Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2lu
c1Zpc2l0ZWRTb0Zhcik7Ci0KLSAgICBib29sIGhhc1ByZXZhbGVudFJlZGlyZWN0aW9uKCkgY29u
c3Q7Ci0gICAgYm9vbCBoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0
OwotCiAgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CiAgICAgYm9vbCBkZWNv
ZGUoS2V5ZWREZWNvZGVyJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAxOTc5ODQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc0xvYWRlZEZvclByb2Nlc3Npbmcg
PSAxMDA7CisKIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSk7CkBAIC0xMzcsNCArMTM5LDE2IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlRGEKICAgICAgICAgbV9kYXRhQWRkZWRIYW5k
bGVyKCk7CiB9CiAKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNFbm91Z2hE
YXRhRm9yU3RhdGlzdGljc1Byb2Nlc3NpbmcoKQoreworICAgIHJldHVybiBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5zaXplKCkgPj0gbWluaW11bU9yaWdpbnNMb2FkZWRGb3JQcm9jZXNzaW5nOwor
fQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3Mo
c3RkOjpmdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKT4mJiBwcm9jZXNzRnVu
Y3Rpb24pCit7CisgICAgaWYgKGhhc0Vub3VnaERhdGFGb3JTdGF0aXN0aWNzUHJvY2Vzc2luZygp
KSB7CisgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICAgICAgICAgIHByb2Nlc3NGdW5jdGlvbihyZXNvdXJj
ZVN0YXRpc3RpYyk7CisgICAgfQorfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMTk3OTg0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmlyZURh
dGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0Vu
b3VnaERhdGFGb3JTdGF0aXN0aWNzUHJvY2Vzc2luZygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcHJvY2Vzc1N0YXRpc3RpY3Moc3RkOjpmdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKT4mJik7CiBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgp
ID0gZGVmYXVsdDsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTg0KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYt
MDMtMTAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92
ZSBwcmV2YWxlbnQgcmVzb3VyY2UgY2xhc3NpZmllciBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjQyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDkxMzI3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAgICAg
LSBDYWxscyBwcm9jZXNzU3RhdGlzdGljcyB3aXRoIGEgbGFtZGEgZnVuY3Rpb24gdG8gY2xhc3Np
ZnkgcHJldmFsZW50IHJlc291cmNlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjcmVhdGVEZWNvZGVyRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1ByZXZhbGVudFJlc291cmNlQ2hh
cmFjdGVyaXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGFzc2lmeVByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgICAgICAtIE1vdmVk
IHRoZXNlIHR3byBmdW5jdGlvbnMgZnJvbSBXZWJDb3JlLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICAgICAtIEZpeGVkIHRoZSBvcmRlcmluZyBv
ZiBzb3VyY2UgZmlsZXMuCisKIDIwMTYtMDMtMTAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9udCBhbnRpYWxpYXNpbmcgKHNtb290aGluZykgY2hh
bmdlcyB3aGVuIGVsZW1lbnRzIGFyZSByZW5kZXJlZCBpbnRvIGNvbXBvc2l0aW5nIGxheWVycwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDE5Nzk4NCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMjEgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gU3Vi
IGZyYW1lIGNsYXNzaWZpY2F0aW9uIHRocmVzaG9sZHMKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBz
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkID0gMzsKKyAgICAKKy8vIFN1YnJl
c291cmNlIGNsYXNzaWZpY2F0aW9uIHRocmVzaG9sZHMKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBz
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkID0gNTsKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbVRvVW5pcXVlRG9tYWlu
c1RocmVzaG9sZCA9IDM7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgcmVkaXJlY3RlZFRvT3RoZXJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGQgPSAyOworCiBSZWY8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpKTsKQEAgLTU2LDggKzY0LDE1IEBAIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc28KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpCiB7CiAgICAgY29yZVN0
b3JlKCkubWVyZ2VTdGF0aXN0aWNzKG9yaWdpbnMpOwotICAgIC8vIFRPRE86IEFuYWx5emUgc3Rh
dGlzdGljcyB0byByZWNvZ25pemUgcHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8y
NDkxMzI3Mj4KLSAgICAvLyBUT0RPOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQcm9jZXNzZXMgb2Yg
cHJldmFsZW50IGRvbWFpbnMuIDxyZGFyOi8vcHJvYmxlbS8yNDcwMzA5OT4KKworICAgIFZlY3Rv
cjxTdHJpbmc+IHByZXZhbGVudFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvbjsKKyAgICBpZiAoY29yZVN0b3JlKCkuaGFzRW5vdWdoRGF0YUZvclN0YXRpc3Rp
Y3NQcm9jZXNzaW5nKCkpIHsKKyAgICAgICAgY29yZVN0b3JlKCkucHJvY2Vzc1N0YXRpc3RpY3Mo
W3RoaXMsICZwcmV2YWxlbnRSZXNvdXJjZXMsICZwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlcklu
dGVyYWN0aW9uXSAoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIHsK
KyAgICAgICAgICAgIGNsYXNzaWZ5UHJldmFsZW50UmVzb3VyY2VzKHJlc291cmNlU3RhdGlzdGlj
LCBwcmV2YWxlbnRSZXNvdXJjZXMsIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm90aWZ5IGluZGl2aWR1
YWwgV2ViUHJvY2Vzc2VzIG9mIHByZXZhbGVudCBkb21haW5zIHVzaW5nIHRoZSB0d28gdmVjdG9y
cyBwb3B1bGF0ZWQgYnkgdGhlIGNsYXNzaWZpZXIuIDxyZGFyOi8vcHJvYmxlbS8yNDcwMzA5OT4K
ICAgICBhdXRvIGVuY29kZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsK
ICAgICAKICAgICB3cml0ZUVuY29kZXJUb0Rpc2soKmVuY29kZXIuZ2V0KCksICJmdWxsX2Jyb3dz
aW5nX3Nlc3Npb24iKTsKQEAgLTE2MCw1ICsxNzUsMjQgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVk
RGVjb2Rlcj4gV2ViUmVzb3VyYwogICAgIAogICAgIHJldHVybiBLZXllZERlY29kZXI6OmRlY29k
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmF3RGF0YS0+ZGF0YSgpKSwgcmF3
RGF0YS0+c2l6ZSgpKTsKIH0KKyAgICAKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyhjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykKK3sKKyAgICByZXR1cm4gcmVzb3VyY2VT
dGF0aXN0aWMuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkCisgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMuc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zVGhyZXNob2xkCisgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZAorICAgIHx8IHJlc291cmNlU3RhdGlzdGljLnJl
ZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLnNpemUoKSA+IHJlZGlyZWN0
ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkOworfQorCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xhc3NpZnlQcmV2YWxlbnRSZXNvdXJjZXMo
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIFZlY3RvcjxTdHJpbmc+
JiBwcmV2YWxlbnRSZXNvdXJjZXMsIFZlY3RvcjxTdHJpbmc+JiBwcmV2YWxlbnRSZXNvdXJjZXNX
aXRoVXNlckludGVyYWN0aW9uKQoreworICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZh
bGVudFJlc291cmNlIHx8IGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKHJlc291
cmNlU3RhdGlzdGljKSkgeworICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJl
c291cmNlID0gdHJ1ZTsKKyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRl
cmFjdGlvbikKKyAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24uYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlcy5hcHBlbmQocmVzb3VyY2VTdGF0aXN0
aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICB9Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMTk3OTg0KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw2ICs4MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZUVuY29kZXJUb0Rp
c2soV2ViQ29yZTo6S2V5ZWRFbmNvZGVyJiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3Q7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OktleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2RlckZy
b21EaXNrKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OwogCisgICAgYm9vbCBoYXNQcmV2YWxl
bnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJik7CisgICAgdm9pZCBjbGFzc2lmeVByZXZhbGVudFJlc291cmNlcyhXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNl
cywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24p
OworICAgIAogICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1f
cmVzb3VyY2VTdGF0aXN0aWNzU3RvcmU7CiAgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3N0YXRp
c3RpY3NRdWV1ZTsKICAgICBTdHJpbmcgbV9zdG9yYWdlUGF0aDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5
Nzk4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNTgyMSw5ICs1ODIxLDYgQEAKIAkJCQk4NkU2N0EyMjE5MEY0
MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5jcHAgKi8sCiAJCQkJODZFNjdBMjExOTBG
NDExODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuaCAqLywKIAkJCQk4MzA0OEFFNTFBQ0E0
NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAotCQkJCTdBOUNEOEMw
MUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICov
LAotCQkJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCAqLywKLQkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTExQjA4MTEyRjVF
M0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzEx
MTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTUxQTRENUE4
MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi8sCkBAIC01OTIwLDYg
KzU5MTcsOSBAQAogCQkJCUJDMTExQjBEMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzUHJv
eHkuY3BwICovLAogCQkJCUJDMDMyRENGMTBGNDM4OUYwMDU4QzE1QSAvKiBXZWJQcm9jZXNzUHJv
eHkuaCAqLywKIAkJCQlCQ0VFN0FCMzEyODE3MDk1MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAorCQkJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5
RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywKKwkJCQk3QTlDRDhD
MjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3Nh
Z2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBVSVByb2Nlc3M7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273776</attachid>
            <date>2016-03-11 15:10:01 -0800</date>
            <delta_ts>2016-03-11 16:36:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155242-20160311150948.patch</filename>
            <type>text/plain</type>
            <size>12973</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE2LTAzLTExICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgcHJldmFsZW50IHJl
c291cmNlIGNsYXNzaWZpZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI0MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQ5MTMyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHdlIGhhdmUgeWV0IHRvIGRlY2lkZSBob3cg
dG8gc2V0IHVwIHRlc3RzIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgICAgICAt
IFJlbW92ZWQgY2FsbHMgdG8gb2xkIGNsYXNzaWZpZXIgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNv
ZGVIYXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpoYXNQcmV2YWxlbnRS
ZXNvdXJjZUNoYXJhY3RlcmlzdGljcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgICAgIC0gRGVsZXRlZCBvbGQgY2xhc3NpZmlj
YXRpb24gZnVuY3Rpb25zLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNFbm91Z2hEYXRhRm9yU3RhdGlzdGljc1Byb2Nlc3Np
bmcpOgorICAgICAgICAgICAgLSBOZXcgZnVuY3Rpb24gdG8gYWxsb3cgZm9yIGNoZWNrcyBiZWZv
cmUgY2FsbHMgdG8gcHJvY2Vzc1N0YXRpc3RpY3MuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgICAgIC0g
TmV3IGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBsYW1kYSBhbmQgZXhlY3V0ZXMgaXQgb24gZXZl
cnkgZW50cnkgaW4gaXRzIHN0YXRpc3RpY3MgbWFwLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxNi0wMy0xMCAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBzaG91bGQgbm90IGJlIHJlZGlyZWN0
ZWQgdG8gYW4gaW52YWxpZCBVUkwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMTk3OTg0KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDcgKzE0Miw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZh
bGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgpKTsKICAgICBtX3N0b3JlLT5m
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKQEAgLTIwNSw3ICsyMDQsNiBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgICAgIHRhcmdl
dFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRv
dGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGFyZ2V0U3Rh
dGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50KSAvIHRvdGFsVmlzaXRl
ZDsKICAgICB9CiAgICAgCi0gICAgdGFyZ2V0U3RhdGlzdGljcy5jaGVja0FuZFNldEFzUHJldmFs
ZW50UmVzb3VyY2VJZk5lY2Vzc2FyeShtX3N0b3JlLT5zaXplKCkpOwogICAgIG1fc3RvcmUtPmZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTk3
OTg0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzNyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc1Zpc2l0ZWRGb3JQcmV2YWxl
bmNlQ2xhc3NpZmljYXRpb24gPSAxMDA7Ci0KLS8vIFN1YiBmcmFtZSB0aHJlc2hvbGRzCi1zdGF0
aWMgY29uc3QgdW5zaWduZWQgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZEFi
c29sdXRlID0gMzsKLQotLy8gU3VicmVzb3VyY2UgdGhyZXNob2xkcwotc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9
IDU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZy
b21Ub1VuaXF1ZURvbWFpbnNUaHJlc2hvbGRBYnNvbHV0ZSA9IDM7Ci1zdGF0aWMgY29uc3QgdW5z
aWduZWQgcmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnNUaHJlc2hvbGRB
YnNvbHV0ZSA9IDI7Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Y2hlY2tBbmRTZXRB
c1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2luc1Zpc2l0ZWRTb0Zh
cikKLXsKLSAgICBpZiAob3JpZ2luc1Zpc2l0ZWRTb0ZhciA8IG1pbmltdW1PcmlnaW5zVmlzaXRl
ZEZvclByZXZhbGVuY2VDbGFzc2lmaWNhdGlvbiB8fCBpc1ByZXZhbGVudFJlc291cmNlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0
ZXJpc3RpY3MoKSkgewotICAgICAgICBpc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6Omhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNz
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXpl
KCkgPiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUKLSAgICAg
ICAgfHwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5zaXplKCkgPiBzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGUKLSAgICAgICAgfHwgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVj
dGVkRnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZEFic29sdXRlCi0gICAgICAgIHx8IHJlZGly
ZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLnNpemUoKSA+IHJlZGlyZWN0ZWRU
b090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkQWJzb2x1dGU7Ci19Ci0KIHR5
cGVkZWYgV1RGOjpIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIFN0cmluZ0hhc2gsIEhhc2hUcmFp
dHM8U3RyaW5nPiwgSGFzaFRyYWl0czx1bnNpZ25lZD4+OjpLZXlWYWx1ZVBhaXJUeXBlIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NWYWx1ZTsKIAogc3RhdGljIHZvaWQgZW5jb2RlSGFzaENvdW50ZWRT
ZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXNo
Q291bnRlZFNldDxTdHJpbmc+JiBoYXNoQ291bnRlZFNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkocmV2aXNpb24gMTk3OTg0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDYgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
ewogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpID0gZGVmYXVsdDsKIAotICAgIGJvb2wg
Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2lu
c1Zpc2l0ZWRTb0Zhcik7Ci0KLSAgICBib29sIGhhc1ByZXZhbGVudFJlZGlyZWN0aW9uKCkgY29u
c3Q7Ci0gICAgYm9vbCBoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0
OwotCiAgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CiAgICAgYm9vbCBkZWNv
ZGUoS2V5ZWREZWNvZGVyJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAxOTc5ODQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtT3JpZ2luc0xvYWRlZEZvclByb2Nlc3Npbmcg
PSAxMDA7CisKIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSk7CkBAIC0xMzcsNCArMTM5LDE1IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlRGEKICAgICAgICAgbV9kYXRhQWRkZWRIYW5k
bGVyKCk7CiB9CiAKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNFbm91Z2hE
YXRhRm9yU3RhdGlzdGljc1Byb2Nlc3NpbmcoKQoreworICAgIHJldHVybiBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5zaXplKCkgPj0gbWluaW11bU9yaWdpbnNMb2FkZWRGb3JQcm9jZXNzaW5nOwor
fQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3Mo
c3RkOjpmdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKT4mJiBwcm9jZXNzRnVu
Y3Rpb24pCit7CisgICAgQVNTRVJUKGhhc0Vub3VnaERhdGFGb3JTdGF0aXN0aWNzUHJvY2Vzc2lu
ZygpKTsKKyAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAudmFsdWVzKCkpCisgICAgICAgIHByb2Nlc3NGdW5jdGlvbihyZXNvdXJjZVN0YXRp
c3RpYyk7Cit9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAxOTc5ODQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlv
bkhhbmRsZXIoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRW5vdWdoRGF0YUZvclN0
YXRpc3RpY3NQcm9jZXNzaW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzU3Rh
dGlzdGljcyhzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYmKTsK
IHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTgwNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wMy0xMSAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHByZXZhbGVudCBy
ZXNvdXJjZSBjbGFzc2lmaWVyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUyNDIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI0OTEzMjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6aGFzUHJl
dmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpjbGFzc2lm
eVByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgICAgICAtIE1vdmVkIHRoZXNlIHR3byBmdW5j
dGlvbnMgZnJvbSBXZWJDb3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgICAg
IC0gQ2FsbHMgcHJvY2Vzc1N0YXRpc3RpY3Mgd2l0aCBhIGxhbWRhIGZ1bmN0aW9uIHRvIGNsYXNz
aWZ5IHByZXZhbGVudCByZXNvdXJjZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAgICAgLSBGaXhlZCB0aGUgb3JkZXJpbmcgb2Ygc291cmNl
IGZpbGVzLgorCiAyMDE2LTAzLTExICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+
CiAKICAgICAgICAgVXNlIG9ubHkgc2VsZWN0ZWQgdGV4dCBmb3IgTG9vayB1cC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAxOTc5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsMTMgKzMwLDIxIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKy8vIFN1YiBmcmFtZSBj
bGFzc2lmaWNhdGlvbiB0aHJlc2hvbGRzCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZCA9IDM7CisgICAgCisvLyBTdWJyZXNvdXJjZSBj
bGFzc2lmaWNhdGlvbiB0aHJlc2hvbGRzCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luc1RocmVzaG9sZCA9IDU7CitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb21Ub1VuaXF1ZURvbWFpbnNUaHJlc2hv
bGQgPSAzOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50
UmVzb3VyY2VPcmlnaW5zVGhyZXNob2xkID0gMjsKKwogUmVmPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KSk7CkBAIC01MywxMSArNjEsMzcgQEAgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzbwogewogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaGFz
UHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpCit7CisgICAgcmV0dXJuIHJlc291cmNlU3RhdGlzdGlj
LnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpID4gc3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luc1RocmVzaG9sZAorICAgICAgICB8fCByZXNvdXJjZVN0YXRpc3RpYy5zdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSA+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnNUaHJlc2hvbGQKKyAgICAgICAgfHwgcmVzb3VyY2VTdGF0aXN0aWMuc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUby5zaXplKCkgPiBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbVRvVW5pcXVlRG9tYWluc1RocmVzaG9sZAorICAgICAgICB8fCByZXNvdXJjZVN0YXRpc3Rp
Yy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucy5zaXplKCkgPiByZWRp
cmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2luc1RocmVzaG9sZDsKK30KKyAgICAK
K3N0YXRpYyBpbmxpbmUgdm9pZCBjbGFzc2lmeVByZXZhbGVudFJlc291cmNlcyhSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVu
dFJlc291cmNlcywgVmVjdG9yPFN0cmluZz4mIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50
ZXJhY3Rpb24pCit7CisgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3Vy
Y2UgfHwgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MocmVzb3VyY2VTdGF0aXN0
aWMpKSB7CisgICAgICAgIHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0
cnVlOworICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uKQor
ICAgICAgICAgICAgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbi5hcHBlbmQo
cmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcHJldmFsZW50UmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2
ZWxEb21haW4pOworICAgIH0KK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucykKIHsKICAgICBjb3JlU3RvcmUoKS5tZXJn
ZVN0YXRpc3RpY3Mob3JpZ2lucyk7Ci0gICAgLy8gVE9ETzogQW5hbHl6ZSBzdGF0aXN0aWNzIHRv
IHJlY29nbml6ZSBwcmV2YWxlbnQgZG9tYWlucy4gPHJkYXI6Ly9wcm9ibGVtLzI0OTEzMjcyPgot
ICAgIC8vIFRPRE86IE5vdGlmeSBpbmRpdmlkdWFsIFdlYlByb2Nlc3NlcyBvZiBwcmV2YWxlbnQg
ZG9tYWlucy4gPHJkYXI6Ly9wcm9ibGVtLzI0NzAzMDk5PgorCisgICAgVmVjdG9yPFN0cmluZz4g
cHJldmFsZW50UmVzb3VyY2VzLCBwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
OworICAgIGlmIChjb3JlU3RvcmUoKS5oYXNFbm91Z2hEYXRhRm9yU3RhdGlzdGljc1Byb2Nlc3Np
bmcoKSkgeworICAgICAgICBjb3JlU3RvcmUoKS5wcm9jZXNzU3RhdGlzdGljcyhbdGhpcywgJnBy
ZXZhbGVudFJlc291cmNlcywgJnByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25d
IChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgeworICAgICAgICAg
ICAgY2xhc3NpZnlQcmV2YWxlbnRSZXNvdXJjZXMocmVzb3VyY2VTdGF0aXN0aWMsIHByZXZhbGVu
dFJlc291cmNlcywgcHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIC8vIEZJWE1FOiBOb3RpZnkgaW5kaXZpZHVhbCBXZWJQcm9j
ZXNzZXMgb2YgcHJldmFsZW50IGRvbWFpbnMgdXNpbmcgdGhlIHR3byB2ZWN0b3JzIHBvcHVsYXRl
ZCBieSB0aGUgY2xhc3NpZmllci4gPHJkYXI6Ly9wcm9ibGVtLzI0NzAzMDk5PgogICAgIGF1dG8g
ZW5jb2RlciA9IGNvcmVTdG9yZSgpLmNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpOwogICAgIAogICAg
IHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lv
biIpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTk3OTg0KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01ODIxLDkgKzU4MjEs
NiBAQAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNw
cCAqLywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5o
ICovLAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50LmggKi8sCi0JCQkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCi0JCQkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAotCQkJCTdBOUNEOEMyMUM3NzlB
RDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIu
Y3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1Rp
bWVyLmggKi8sCiAJCQkJNTFBNEQ1QTgxNkNBQzRGRjAwMEU2MTVFIC8qIFN0YXRpc3RpY3NSZXF1
ZXN0LmNwcCAqLywKQEAgLTU5MjAsNiArNTkxNyw5IEBACiAJCQkJQkMxMTFCMEQxMTJGNUU0RjAw
MzM3QkFCIC8qIFdlYlByb2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJQkMwMzJEQ0YxMEY0Mzg5RjAw
NThDMTVBIC8qIFdlYlByb2Nlc3NQcm94eS5oICovLAogCQkJCUJDRUU3QUIzMTI4MTcwOTUwMDk4
MjdEQSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJN0E5Q0Q4QzAxQzc3
OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCisJ
CQkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oICovLAorCQkJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9IFVJUHJv
Y2VzczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>